求解指派问题的一次性分配算法_周莉
指派问题的四个计算步骤
指派问题的四个计算步骤
指派问题是一种优化问题,旨在找到最佳的分配方式。
解决指派问题通常有四个计算步骤:
1. 创建代价矩阵:将问题抽象为一个二维矩阵,其中每个元素表示将某个任务分配给某个工人的成本或者效益。
代价矩阵的大小为n行m列,其中n表示任务的数量,m表示工人的数量。
2. 匹配行和列:通过在代价矩阵中查找每一行和列的最小元素,将其标记为零。
如果需要,通过减去每一行和列的最小元素,可以使矩阵中至少有n个零。
3. 寻找最佳分配方案:通过选择代价矩阵中的一个零,并将其标记为星号,然后将与该零所在行或列相交的所有其他零标记为井号。
如果井号的数量等于n,则找到了一个最佳分配方案。
如果不是,请执行第4步。
4. 修改代价矩阵:通过选择未被标记的最小元素,并从该元素中减去所有未被标记的行和列的最小值,可以修改代价矩阵。
然后,返回第2步继续迭代,直到找到一个最佳分配方案。
这些计算步骤被称为匈牙利算法或者KM算法。
通过依次执
行这些步骤,可以找到指派问题的最优解。
匈牙利算法求解教学任务指派问题
Xij
(1)
使得总效益最高(时间最少、成本最小、收益最大等),
即目标函数
。当
且
时, 为
一对一指派问题;否则为多人协作或兼职问题。 求解指派问题的方法通常有分支定界法、隐枚举法、
匈 牙 利 法 等 [1]。 匈 牙 利 算 法 由 匈 牙 利 数 学 家 Edmonds 于 1965 年提出,是基于 Hall 定理中充分性证明的思想,用增 广路径求二分图最大匹配的算法,算法的核心是寻找增广 路径,也可用于指派问题的求解 [2]。
指派问题的数学模型通常是:设 n 个人(或机器)被 分配去做 m 件工作,由于工作性质和各人(或机器)的专 长不同,完成不同工作的效益(时间、成本、收益等)将有 差别,用系数矩阵 C 表示,Cij 表示第 i 个人完成第 j 件工作 的效益,Cij ≥ 0(i=1,...,n;j=1,...,m)。当 n=m 时,为 平衡状态下的标准指派问题;当 n > m 时,人数多于任务数, 属于不平衡状态下择优录用问题;当 n < m 时,人数少于 任务数,可以分为某些任务不管和一人完成多项任务两种 情况,属于不平衡状态下指派问题的拓展。求解指派矩阵 X:
针对多人执行多项工作的指派问题,张云华采用匈牙 利算法的基本思想和步骤进行了研究 [3]。目标分配问题作 为指派问题的一种类型,谷稳综合匈牙利算法及其进化算 法的特点,对机器人足球的目标分配问题进行了研究 [4]。 为避免匈牙利算法多次试分配导致处理速度慢的不足,周 莉等人对寻找独立零的次序进行改进,得到匈牙利算法求 解指派问题的一次性分配算法 [5]。李延鹏等人提出利用虚 拟工作代替并联环境,将具有并联环节的人员指派问题转
本文基于匈牙利算法,建立教学任务指派优化模型, 分析如何分配教师承担教学任务以使系统整体现求解。
指派问题详解
第一章绪论1、指派问题的背景及意义指派问题又称分配问题,其用途非常广泛,比如某公司指派n个人去做n 件事,各人做不同的一件事,如何安排人员使得总费用最少?若考虑每个职工对工作的效率(如熟练程度等),怎样安排会使总效率达到最大?这些都是一个企业经营管理者必须考虑的问题,所以该问题有重要的应用价值.虽然指派问题可以用0-1规划问题来解,设X(I,J)是0-1变量, 用X(I,J)=1表示第I个人做第J件事, X(I,J)=0表示第I个人不做第J件事. 设非负矩阵C(I,J)表示第I个人做第J件事的费用,则问题可以写成LINGO程序SETS:PERSON/1..N/;WORK/1..N/;WEIGHT(PERSON, WORK): C, X ;ENDSETSDATA:W=…ENDDATAMIN=@ SUM(WEIGHT: C*X);@FOR(PERSON(I): @SUM(WORK(J):X(I,J))=1);@FOR(WORK(J): @SUM(PERSONM(I):X(I,J))=1);@FOR(WEIGHT: @BIN(X));其中2*N个约束条件是线性相关的, 可以去掉任意一个而得到线性无关条件.但是由于有N^2个0-1变量, 当N很大时,用完全枚举法解题几乎是不可能的. 而已有的0-1规划都是用隐枚举法做的,计算量较大. 对于指派问题这种特殊的0-1规划,有一个有效的方法——匈牙利算法,是1955年W. W. Kuhn利用匈牙利数学家D.König的二部图G的最大匹配的大小等于G的最小顶点覆盖的大小的定理提出的一种算法,这种算法是多项式算法,计算量为O(N3).匈牙利算法的基本原理是基于以下两个定理.定理1设C=(C ij)n×n是指派问题的效益矩阵,若将C中的任一行(或任一列)减去该行(或该列)中的最小元素,得到新的效率矩阵C’,则C’对应的新的指派问题与原指派问题有相同的最优解.证明:设X’是最优解, 即@SUM(WEIGHT: C*X’)<= @SUM(WEIGHT: C*X), 则当C中任一行或任一列减去该行或该列的最小数m时,得到的阵C’还是非负矩阵, 且@SUM(WEIGHT: C’*X’)<=@SUM(WEIGHT: C*X)-m=@SUM(WEIGHT: C’*X)定理2效率矩阵C中独立的0元素的最多个数等于覆盖所有0元素的最少直线数. 当独立零元素的个数等于矩阵的阶数时就得到最优解.3、理论基础定义:图G的一个匹配M是图G中不相交的边的集合. 属于匹配M中的边的所有端点称为被该匹配M饱和, 其他的顶点称为M-未饱和的. 如果一个匹配M 饱和了图G的所有顶点,则称该匹配M是一个完全匹配. 可见顶点数是奇数的图没有完全匹配. 一个匹配M称为是极大匹配, 如果它不能再扩张成更大的一个匹配. 一个匹配称为是最大匹配, 如果不存在比它更大的匹配.定义:对于一个匹配M, 图G的一个M-交替路是图G中的边交替地在M中及不在M中的边组成. 从M-未饱和点出发到M-为饱和点结束的M-交替路称为一条M-增广路. 把M-增广路中不是M中的边改成新的匹配M’中的边, 把M-增广路中M中的边不作为M’中的边, 在M-增广路以外的M中的边仍作为M’中的边, 则M’的大小比M大1. 故名M-增广路. 因此最大匹配M不存在M-增广路.定义:若图G和图H有相同的顶点集V, 我们称G和H的对称差,记为G∆H,是一个以V为顶点集的图, 但其边集是G和H的边集的对称差: E(G∆H)=E(G) ∆E(H)=E(G)⋂E(H)-(E(G)⋃E(H))=(E(G)-E(H)) ⋂ (E(H)-E(G))定理: (Berge, 1957) 图G的一个匹配M是最大匹配,当且仅当G中没有M-增广路.证明: 我们只要证明, G中没有M-增广路时, M是最大匹配. 用反证法, 若有一个比M大的匹配M’. 令G的一个子图F, E(F)=M∆M’, 因M和M’都是匹配, F的顶点的最大度数至多是2, 从而F由不相交的路和环组成, 它们的边交替地来自M和M’, 于是F中的环的长度是偶数. 由于M’比M大, F中存在一个连通分支,其中M’中的边数大于M中的边数. 这个分支只能是起始和终止的边都在M’中. 而这就是一条G中的M-增广路. 与假设矛盾. 证毕.定理(Hall, 1935)设G是一个二部图, X和Y是其二分集, 则存在匹配M 饱和X当且仅当对于X中的任意子集S, Y 中与S中的点相邻的点组成的集合N(S)中元素的个数大于等于集合S中元素的个数.证明:必要性是显然的. 对于充分性, 假设 |N(S)|≥|S|, ∀S⊂X, 考虑G的一个最大匹配M, 我们用反证法,若M没有饱和X, 我们来找一个集合S不满足假设即可. 设u∈X是一个M-未饱和顶点, 令S⊂X和T⊂Y分别是从u出发的M-交替路上相应的点.我们来证明M中的一些边是T到S-u上的一个匹配. 因为不存在M-增广路,T中的每个点是M-饱和的. 这意味着T中的点通过M中的边到达S中的一个顶点. 另外, S-u中的每个顶点是从T中的一个顶点通过M中的一条边到达的. 因此M 中的这些边建立了T与S-u的一个双射, 即|T|=|S-u|. 这就证明了M中的这些边是T到S-u上的一个匹配,从而意味着T⊂N(S), 实际上, 我们可证明T=N(S). 这是因为连接S和Y-T中的点y的边是不属于M的, 因为不然的话, 就有一条到达y的M-增广路, 与y∉T矛盾. 故|N(S)|=|T|=|S-u|=|S|-1<|S|, 与假设矛盾.当X与Y的集合的大小相同时的Hall定理称为婚姻问题,是由Frobenius(1917)证明的.推论: k-正则的二部图(X的每一点和Y的每一点相关联的二部图)(k>0)存在完全匹配.证明: 设二分集是X,Y. 分别计算端点在X和端点在Y的边的个数, 得k|X|=k|Y|, 即|X|=|Y|.因此只要证明Hall的条件成立即可. 使X饱和的匹配就是完全匹配. 考虑∀S⊂X, 设连接S与N(S)有m条边, 由G的正则性, m=k|S|. 因这m条边是与N(S)相关联的, m≤k|N(S)|, 即k|S|≤ k|N(S)|, 即|N(S)|≥|S|. 这就是Hall的条件.用求M-增广路的方法来得到最大匹配是很费时的. 我们来给出一个对偶最优化问题.定义:图G的一个顶点覆盖是集合S⊂V(G), 使得G的每条边至少有一个端点在S中. 我们称S中的一个顶点覆盖一些边, 若这个顶点是这些边的公共端点.因为匹配的任意两条边不能被同一个顶点覆盖, 所以顶点覆盖的大小不小于匹配的大小: |S|≥|M|. 所以当|S|=|M| 时就同时得到了最大的匹配和最小的顶点覆盖.定理(König [1931],Egerváry[1931])二部图G的最大匹配的大小等于G的最小顶点覆盖的大小.证明: 设M是G的任一个匹配, 对应的二分集是X,Y. 设U是一个最小的顶点覆盖, 则|U|≥|M|, 我们只要由顶点覆盖U来构造一个大小等于|U|的匹配即完成证明. 令R=U⋃X, T=U⋃Y, 令H, H’分别是由顶点集R⋂(Y-T)及T⋂(X-R)诱导的G的子图. 我们应用Hall的定理来证明H有一个R到Y-T中的完全匹配,H’有一个从T到X-R中的完全匹配. 再因这两个子图是不相交的, 这两个匹配合起来就是G中的一个大小为|U|的匹配.因为R⋂T是G的一个覆盖, Y-T与X-R之间没有边相联接. 假设S⊂R, 考虑在H中S的邻接顶点集N(S), N(S) ⊂Y-T. 如果|N(S)|<|S|, 因为N(S)覆盖了不被T覆盖的与S相关联所有边, 我们可以把N(S) 代替S作为U中的顶点覆盖而得到一个更小的顶点覆盖. U的最小性意味着H中Hall条件成立. 对H'作类似的讨论得到余下的匹配. 证毕.最大匹配的增广路算法输入: 一个二分集为X,Y的二部图G,一个G中的匹配M, X中的M-未饱和顶点的集合U.思路: 从U出发探求M-交替路,令S⊂X,T⊂Y为这些路到达过的顶点集. 标记S中不能再扩张的顶点. 对于每个x∈(S⋂T)-U, 记录在M-增广路上位于x前的点.初始化: S=U,T=∅.叠代: 若S中没有未标记过的顶点, 结束并报告T⋂(X-S)是最小顶点覆盖而M是最大匹配.不然, 选取S中未标记的点x, 考虑每个y∈N(x)且xy∉M, 若y是M-未饱和的, 则得到一个更大的匹配,它是把xy加入原来的匹配M得到的,将x从S中去除. 不然, y是由M中的一条边wy相连接的, w∈X, 把y加入T(也有可能y本来就在T中), 把w加入S. w未标记, 记录w前的点是y. 对所有关联到x的边进行这样的探索后, 标记x. 再次叠代.定理: 增广路算法可以得到一个相同大小的匹配和顶点覆盖.证明: 考虑这个算法终止的情况, 即标记了S中所有的点. 我们要证明R=T⋂(X-S)是大小为|M|的一个顶点覆盖.从U出发的M-交替路只能通过M中的边进入X中的顶点, 所以S-U中的每个顶点通过M与T中的顶点匹配, 并且没有M中的边连接S和Y-T. 一旦一条M-交替路到达x∈S, 可以继续沿着任何未饱和的边进入T, 由于算法是对于x的所有邻域顶点进行探索才终止的,所以从S 到Y-T 没有未饱和边. 从而S 到Y-T 没有边, 证明了R 是一个顶点覆盖.因为算法是找不到M-增广路时终止, T 的每一个顶点是饱和的. 这意味着每个顶点y ∈T 是通过M 匹配与S 中的一个顶点. 由于U ⊂S, X-S 的每个顶点是饱和的, 故M 中与X-S 相关联的边不和T 中的点相连接. 即它们与是饱和T 的边不同的, 这样我们可见M 至少有|T|+|X-S|条边. 因不存在一个比顶点覆盖更大的匹配, 所以有|M|=|T|+|X-S|=|R|.设二部图G 的二分集X 和Y 都是n 个元素的点集, 在其边j i y x 上带有非负的权ij w , 对于G 的一个匹配M, M 上各边的权和记作w(M).定义: 一个n ×n 矩阵A 的一个横截(transversal)是A 中的n 个位置, 使得在每行每列中有且只有一个位置(有的文献中把横截化为独立零元素的位置来表示).定义: 指派问题就是给定一个图G=n n K ,(完全二部图, 即每个X 中的顶点和Y 中的每个顶点有边相连接的二部图)的边的权矩阵A, 求A 的一个横截, 使得这个横截上位置的权和最大. 这是最大带权匹配问题的矩阵形式.定义: 对于图G=n n K ,,设其二分集是X ,Y ,给定G 的边j i y x 的n ×n 权矩阵W={ij w }.考虑G 的子图v u G ,, 设其二分集是U ⊂X ,V ⊂Y, 边集是E(v u G ,), 对于子图v u G ,的带权覆盖u,v 是一组非负实数{i u },{j v },使得ij j i w v u ≥+,)(,v u j i G E y x ∈∀, v u G ,的带权覆盖的费用是∑∑+j i v u 记为C(u,v), 最小带权覆盖问题就是求一个具有最小费用C(u,v)的带权覆盖u,v.引理: 若M ⊂E(v u G ,)是一个带权二部子图v u G ,的最大匹配, 且u, v 是v u G ,的带权覆盖, 则C(u,v)≥w(M). 而且, C(u,v)=w(M)当且仅当ij j i w v u =+,M y x j i ∈∀. 这时M 是v u G ,最大带权匹配, u,v 是v u G ,的最小带权覆盖, 定义这时的v u G ,为G 的相等子图(equality subgraph ).证明: 因为匹配M 中的边是不相交的, 由带权覆盖的定义就得C(u,v)≥w(M). 而且C(u,v)=w(M)当且仅当ij j i w v u =+,M y x j i ∈∀成立. 因一般地有C(u,v)≥w(M).所以当C(u,v)=w(M)时. 意味着没有一个匹配的权比C(u,v)大, 也没有一个覆盖的费用比w(M)小.Kuhn 得到一个指派问题的算法,命名为匈牙利算法, 为的是将荣耀归于匈牙利数学家König 和Egerv áry.指派问题的匈牙利算法(Kuhn[1955], Munkres[1957]):输入G=n n K ,的边的权矩阵A, 及G 的二分集X,Y.初始化: 任取一个可行的带权覆盖,例如)(max ij ji w u =,0=j v ,建立G 的相等子图v u G ,, 其二分集是X, Y ’⊂Y, 求v u G ,的一个最大匹配M. 这个匹配的权和w(M)=C(u,v), M 的带权覆盖是具有最小费用的.叠代: 如M 是G 的一个完全匹配, 停止叠代, 输出最大带权匹配M. 不然, 令U 是X 中的M-未饱和顶点. 令S ⊂X, T ⊂Y 是从U 中顶点出发的M-交替路到达的顶点的集合.令},:min{T Y y S x w v u j i ij j i -∈∈-+=ε.对于所有的S x i ∈, 将i u 减少ε, 对于所有的T y j ∈,将j v 增加ε,形成新的带权覆盖u ’,v ’及对应的新的相等子图v u G '',.如果这个新的相等子图含有M-增广路, 求它的最大匹配M ’, 不然不改变M 再进行叠代.定理: 匈牙利算法能找到一个最大权匹配和一个最小费用覆盖.证明: 算法由一个覆盖开始,算法的每个叠代产生一个覆盖,仅在相等子图有一个完全的匹配为止。
基于 GSAA 的停机位指派优化问题的研究
基于GSAA的停机位指派优化问题的研究鞠姝妹1,许俐(南京航空航天大学民航学院, 南京 210016)摘 要:停机位的合理指派是机场地面作业中的一项核心任务,对减少枢纽机场航班中转时间起着重要作用,但是停机位指派问题是NP难问题,模型和算法都比较复杂。
本文建立了以旅客满意度为优化目标的数学模型,并设计了一种贪婪模拟退火算法(GSAA),以求解枢纽机场的停机位指派问题。
该算法首先根据贪婪算法FCFS 准则使“丢失”的航班数最少得到模拟退火算法的初始解,然后运用经典模拟退火算法求解出最优指派结果。
数值仿真证明了模型和算法的有效性。
关键词:枢纽机场;停机位指派;旅客满意度;贪婪模拟退火算法Airport Gate Assignment Problem based on GSAAJU Shumei, XU Li(School of Civil Aviation,Nanjing University of Aeronautics and Astronautics, Nanjing 210016, China)Abstract: Airport gate assignment is a key task among the airport ground work which is important to reduce transfer time in hub airports. However, the gate assignment problem (GAP) is an NP-hard problem, its models and algorithms are complex. This paper proposed a model and a new greedy simulated annealing algorithm (GSAA) to resolve the GAP. The initial solution of the proposed algorithm is obtained through FCFS criterion of greedy method to minimize the “dropping” flights, and then the optimal solution is got by the traditional simulated annealing algorithm. Simulation result shows the validity of the model and the algorithm.Key words: hub airport; gate assignment problem; the degree of passenger satisfaction; greedy simulated annealing algorithm1 引言停机位分配是指,在考虑机型大小、停机位大小、航班时刻等因素的情况下,在一定时限范围内,由机场生产指挥中心为到港和离港航班指定适宜的登机口,保证航班正常不延误,为旅客上下航班提供登机门[1]。
求解指派问题的一次性分配算法
摘
要: 匈牙利算法是求解指 派 问题 的全局 最优求解 算法, 但是 经典的 匈牙利 算法存 在着 实现难 、 处理速度慢 等不足 。提 出了一
种改进 匈牙利算 法, 匈牙利算法寻 找独立零 的次序进行 了改进 , 而避 免 了匈牙利算法通 常需要进行 多次试分配 的不足。针 对 从 对改进前后 两种 算法的复杂度 、 运算 时间、 精确度 等进行 了对 比分析 , 结果表明 , 改进的算法是一种 高精度 的近似最优求解 算法; 与 匈牙利算法相 比, 改进的算法 易于编程 实现 , 时间花 费较低 , 一种适用 于工程 实时应 用的有效求解算法。 且 是
n e ig a d Ap lc to s 2 1 。 7 1 ) 1 51 8 e rn n p iain 。 0 1 4 ( 8 : 3 — 3 .
Abs r c : H u tat nga a ago t i a i r n l r hm s n o i a gl ba a g rt m t s l e s i nm e t pr l m . o e e t r a e om e i ptm l o l l o ih o o v a sg n ob e H w v r,he e r s de ce i f i n-
2. s es D e rm e , A s t pa t nt Ludo Uni r i Ya a , ha on 264 5, ng ve st y, nt i S nd g 02 Chi na
ZHOU Li ZHANG W eh , , i ua XU S e i o On -i a sg m e t l o ih h d a . e tme s i n n a g r t m t s l e s i n e t r b e Co o o v a sg m n p o l m. mp t r u e En i g-
指派问题的算法
指派问题的算法分析与实现摘要在企业、公司的运营与管理中,管理者总是希望把人员最佳分派以发挥其最大工作效率,从而降低成本、提高效益。
然而,如果没有科学的方法是很难实现优化管理的,由此我们引入了指派问题。
指派问题多是求项目的工时最少,而很多情况下人们并不关心项目总工时的多少,而只关心项目能否在最短的时间内完成,即历时最少的指派问题。
这类问题研究的是n个人执行n项任务,执行每项任务的人数以及总的指派人项数均有限制,要求最优指派。
在运筹学中求解整数规划的指派问题通常是通过匈牙利算法来求解,但指派问题也可以归结为一个0-1整数规划问题,本文先对指派问题进行陈述,引出对实际问题的求解。
在指派问题的背景、描述中充分理解该问题,先运用匈牙利算法实现指派问题,然后再建立一个0-1整数规划模型,并运用matlab和lingo编译程序对问题进行编译,运用软件解决模型问题,最终实现指派问题在实际问题中的运用。
通过运用匈牙利算法和0-1整数规划同时对指派问题求解,我们发现用0-1整数规划的方法来求解可以更简单,也更方便程序的阅读和理解。
与此同时,我们还对0-1整数规划问题由整数数据深入研究到小数数据。
最后通过实例来说明运用matlab,lingo编译程序来解决整数规划问题的简便和有效性。
关键词:指派问题;匈牙利算法;0-1整数规划;matlab模型;lingo模型1. 问题陈述指派问题又称分配问题,其用途非常广泛,比如某公司指派n个人去做n 件事,各人做不同的事,如何安排人员使得总费用最少?若考虑每个职工对工作效率(如熟练程度等),怎样安排会使总销量达到最大?这些都是一个企业经营管理者必须考虑的问题,所以该问题有重要的应用价值。
假设有n 件工作分派给n 个人来做,每项工作只能由一人来做,每个人只能做一项工作。
若给出各人对各项工作所具有的工作效率。
问应该如何安排人选,及发挥个人特长又能使总的效率最大。
为此用0-1整数规划来实现指派问题即如何安排人选。
4.5 指派问题
4.5 指派问题有n项任务要分给n个人去完成,每人完成一项.由于任务的性质以及个人的专长不同,因此,各人完成不同任务的效率就有差别,如何分配这些工作任务,使总的效率最高?这类问题称为指派问题.在现实生活中,诸如若干项合同要选择若干个投标者来承包,若干班级要安排在各教室上课等等均属于这类指派问题.如果我们记x ij= 1,当指派第i人做第j项工作;0,不指派第i人做第j项工作.那么指派问题的数学模型可以表示为在x ij=0或1,以及x ij=1(j=1,2,…n), ∑x ij=1(i=1,2,…n)的约束条件下求目标函数z=∑∑c ij x ij的最大(或最小)值,其中c ij表示第i个人完成第j项任务的效率(或成本、时间、费用等).可以看出,指派问题是特殊的整数规划问题,又是特殊的0-1规划问题和特殊的运输问题,因此,它可以用多种方法来解.[案例13]附表给出五位工人完成五种工作所能取得的效益,试求出分配该五位工人分别担任一项工作的方案,使取得的效益最大.(上海市第五届中学生数学知识应用竞赛决赛试题五)分析(1)按题目要求,应选取表中的不同行、不同列的五个数据,还要求选取的这五个数的和最大,如果逐一验算,需考5!=120种方案.实际上,这是一个典型的“指派问题”。
(2)要求目标函数最大.为此,可将表中最大的一个数减去表中每一个数,由此可将最大化问题化归为最小化问题.表1表2解 (l) 将表中最大数80减去表中每一个数得表1.(2) 每列减去本列的最小数,并在有0的位置上考虑安排工作,得表2.(3) 第3、4行未满足,减去本行中最小数,得表3.(4) 由于第四列己满足,故将第1、3行减1,第四列加1.此时(3,1)格为0,但(5,1)格已安排工作,注意到(5,5)为0,故可作简单调整得表4.表3表4(5)现在只有第4行未满足,减去本行最小数得表5.表5至此,我们已得到问题的解: x14=1, x22=1, x31=1, x43=1, x55=1,即分配工人A做第4、B做第2、C做第1、D 做第3、E做第5件工作,可以取得最大效益为17+50十18十28+80=193.[案例14]某商业公司计划开办五家新商店,为了尽早建成营业,商业公司决定由5家建筑公司分别承建已知建筑公司A i(i=1,2,…5)对新商店B j(j=1,2,…,5)的建造费用的报价(万元)为c ij(i,j=1,2.…,5),见下表.试问商业公司应当对这5家建筑公司怎样分配建造任务,才能使总的建造费用最少?解这是最小化指派问题,可直接利用表上作业法进行操作,见表1-3.最优方案为:让A1承建B3,A2承建B2,A3承建B1,A4承建B4,A5承建B5,此时能使总的建造费用最少,为7+9+6+6+6=34万元表1表2说明将表1第2、3行减去本行最小数后,(2,2)格为0,与(4,2)格冲突,但(4,4)格为0,于是调整为(2,2)、(4,4)安排任务,(4,2)不做安排,这就得到了表2.表2到表3也使用了这种微调的技巧.表3。
《指派问题》课件
指派问题的扩展研究
多目标指派问题
应用场景:生产调度、资源 分配等
解决方法:线性规划、启发 式算法等
定义:指派问题在多个目标 下的扩展
挑战:如何在多个目标之间 找到最优解
动态指派问题
动态指派问题的定 义
动态指派问题的应 用场景
动态指派问题的求 解方法
动态指派问题的优 化策略
大规模指派问题
问题定义:大规模 指派问题是指在给 定一组任务和一组 资源,如何将任务 分配给资源,使得 总成本最小化或总 收益最大化。
混合算法
混合算法的概念: 将多种算法进行 组合,以获得更 好的优化效果
混合算法的优点: 能够充分利用各 种算法的优点, 提高优化效果
混合算法的应用: 在指派问题中, 混合算法可以结 合多种算法,如 遗传算法、模拟 退火算法等,以 提高优化效果
混合算法的挑战: 如何合理选择和 组合各种算法, 以获得最佳的优 化效果
应用场景:大规 模指派问题广泛 应用于物流、供 应链、生产调度 等领域。
研究方法:大规 模指派问题的研 究方法包括启发 式算法、遗传算 法、神经网络等。
挑战与展望:大规 模指派问题的挑战 在于如何设计高效 的算法,以及如何 解决大规模问题中 的优化问题。未来 的研究方向包括分 布式计算、并行计 算等。
禁忌搜索法:在搜索过程中引入禁忌表,避免重复搜索已搜索过的解
元启发式方法
基本概念:元启发式 方法,也称为元启发 式算法,是一种基于 启发式策略的优化方 法。
特点:元启发式方 法具有自适应性、 鲁棒性和易于实现 等特点。
应用:元启发式方法 在指派问题、路径规 划、调度等问题中都 有广泛的应用。
实例:遗传算法、模 拟退火算法、蚁群算 法等都是元启发式方 法的典型代表。
指派问题的解法
指派问题的解法总结问题引入:在工作的时候,常常需要对一些人进行工作安排,由于某些条件的限制,每个人只能进行一种工作,怎么安排才能使得总工作时间最小。
我们把这一类问题称为指派问题。
在这里,我只对人和工作刚好一对一的指派问题的解法进行总结,而对于不是一对一的,则可以通过文献1中的一些方法进行变换。
目前问题解法的总结。
1:最广泛应用的解法:匈牙利算法。
算法简介:库恩(fW.W.Kuhn)于1955年提出了指派问题的解法.他引用了匈牙利数学家康尼格一个关于矩阵中0元素的定理:系数矩阵中独立0元素的最多个数等于覆盖所有0元素的最少直线数。
这个解法称为匈牙利解法。
匈牙利算法虽是运用最广泛的算法,但其操作过程却过于复杂。
在划0的时候也不方便记忆,对于初学者来说掌握不便。
于是国内很多学者对指派问题给出了几个较简单,方便易记的算法。
2:指派问题新解法——目标值子矩阵法。
算法描述:任取变量矩阵X某一行中的最小元素,为该行元素目标值的最优解(但不一定是系统目标函数的最优解),应该是系统目标函数满意解中的一个元素,记作a11 划去a11 所在的行和列,取剩下的子矩阵中某一行的最小元素,记作a22。
依次类推,直到最后一个元素a nn.这些元素相加得系统目标函数的一个满意解,此为一次运算.第二次运算取变量矩阵X中含a 以外的任一行,做与上面相同运算,又可以得到系统的第二个满意解.相同地,对于n行做n次运算,共得到系统的n个满意解,系统的最优解即应该是这 n个满意解当中的最小值.若第i的最小元素在前面以被取用过,则在进行第i的运算时,不选取该元素,取该行中未被选用过的元素中最小的一个进行运算。
算法分析:相对于匈牙利算法,此算法简单,方便操作。
但不能给出所有最优解,得出的最优解唯一,若要给出全部最优解,则算法的次数将大大增加。
当矩阵维数较大的时候,可以对矩阵进行划分,以更快计算。
算法举例:对于变量矩阵x;3:递归思想在指派问题中的运用算法描述:对目标函数的解,等于min{a1+A1,a2+A2,a3+A3,…..a n+An};其中a i为第一行中的第i个元素,A i为除去第i个元素所在行和列的子矩阵。
指派问题求解方法
指派问题求解方法
指派问题的求解方法主要包括以下步骤:
1. 建立效率矩阵:对于n个任务和n个执行任务的人,建立一个nn的效率矩阵,矩阵中的元素表示第i个人完成第j项任务时的效率或所需时间、成本等。
2. 对效率矩阵进行归一化处理:通过行归约和列归约,使效率矩阵中每行每列都出现0元素。
行归约是指找出每行的最小元素,分别从每行中减去这个最小元素;列归约是指找出每列的最小元素,分别从每列中减去这个最小元素。
3. 指派任务:从归一化后的效率矩阵中找出独立的零元素,即每行每列各有一个元素为0。
将任务指派给这些独立零元素所在的行或列中对应的人。
若某行(列)中只有一个零元素,对该零元素标1,表示这个任务就指派给某人做。
每标一个1,同时将该零元素同列的其他零元素标为2,表示此任务已不能由其他人来做。
如此反复进行,直到系数矩阵中所有的零元素都已经被标为1或者2为止。
4. 确定最优解:将0(1)所在位置记为1,其余位置记为0,则获得了该问题的最优解。
以上信息仅供参考,如果您还有疑问,建议咨询专业人士。
指派问题的算法
指派问题的算法分析与实现摘要在企业、公司的运营与管理中,管理者总是希望把人员最佳分派以发挥其最大工作效率,从而降低成本、提高效益。
然而,如果没有科学的方法是很难实现优化管理的,由此我们引入了指派问题。
指派问题多是求项目的工时最少,而很多情况下人们并不关心项目总工时的多少,而只关心项目能否在最短的时间内完成,即历时最少的指派问题。
这类问题研究的是n个人执行n项任务,执行每项任务的人数以及总的指派人项数均有限制,要求最优指派。
在运筹学中求解整数规划的指派问题通常是通过匈牙利算法来求解,但指派问题也可以归结为一个0-1整数规划问题,本文先对指派问题进行陈述,引出对实际问题的求解。
在指派问题的背景、描述中充分理解该问题,先运用匈牙利算法实现指派问题,然后再建立一个0-1整数规划模型,并运用matlab和lingo编译程序对问题进行编译,运用软件解决模型问题,最终实现指派问题在实际问题中的运用。
通过运用匈牙利算法和0-1整数规划同时对指派问题求解,我们发现用0-1整数规划的方法来求解可以更简单,也更方便程序的阅读和理解。
与此同时,我们还对0-1整数规划问题由整数数据深入研究到小数数据。
最后通过实例来说明运用matlab,lingo编译程序来解决整数规划问题的简便和有效性。
关键词:指派问题;匈牙利算法;0-1整数规划;matlab模型;lingo模型1. 问题陈述指派问题又称分配问题,其用途非常广泛,比如某公司指派n个人去做n 件事,各人做不同的事,如何安排人员使得总费用最少?若考虑每个职工对工作效率(如熟练程度等),怎样安排会使总销量达到最大?这些都是一个企业经营管理者必须考虑的问题,所以该问题有重要的应用价值。
假设有n 件工作分派给n 个人来做,每项工作只能由一人来做,每个人只能做一项工作。
若给出各人对各项工作所具有的工作效率。
问应该如何安排人选,及发挥个人特长又能使总的效率最大。
为此用0-1整数规划来实现指派问题即如何安排人选。
指派问题在高校班级管理中的运用
指派问题在高校班级管理中的运用
高校班级管理中,指派问题是一个非常重要的环节。
指派问题是指将实际工作任务分配给相应的人员,以确保工作的高效进行。
在高校班级管理中,指派问题主要包括以下几个方面的运用。
指派问题在学生工作中的运用。
学生工作是高校班级管理的重要组成部分,通过指派适当的学生工作任务,可以让学生充分发挥自己的才能,培养其各方面的能力。
可以将班级的文艺活动指派给有艺术特长的学生,将班级的体育活动指派给有体育特长的学生,将班级的组织工作指派给有组织能力的学生,以此提高班级的整体素质。
指派问题在学习任务中的运用。
学习任务是高校班级管理的核心内容,通过合理的指派可以提高学生的学习成效。
可以将学习任务指派给不同的学生,让他们充分发挥自己的优势,相互学习和合作,提高学习的效果。
还可以根据学生的学习特点和能力水平,将学习任务分为不同的层次和难度,以促进学生的个性化发展。
指派问题在高校班级管理中具有重要的运用价值。
通过合理的指派可以充分发挥学生和教师的专业能力,提高班级管理和学习效果,促进学生的全面发展。
高校班级管理中应注重指派问题的运用,并结合实际情况合理安排各项工作任务,以达到最佳管理效果。
指派问题及实现代码示例
•
If nargin<10,
• • • options=optimset({}); options.Display='off'; rgeScale='off'; end
id=ones(size(f));
• • • • • • •
if nargin<9,
•
end if nargin<8,
2 ) 在没有红圈的右下角如果有 0 11 8 0 3 5 0 4 0 0 零,一定是新的独立零元素 3 4 0 0 2 7 7 3 0 1 3 2 1 0 2 3 ) 用直线覆盖红圈所在行
0 11 8 0 3 5 0 4 0 0 3 4 0 0 2 7 7 3 0 1 3 2 1 0 2
• return;
• • •
end; if max(abs(x.*ID-round(x.*ID)))<0.00005 %得到最优解(如果没错的话),因为用 %linpro 的时候已经吧实数得到最优了,这里判断整数的就好了
• • if upper-ftemp>0.00005 %in order to avoid error %有错的时候
例
4 7 C 6 6 6
8
7
9 17 9 12 7 14 9 12
15 12 14 10 8 7 6 10 10 6
一、顺序对每行每列减去最小值产生零元素
0 0 0 0 0 4 2 3 1 3 3 11 8 0 10 7 3 0 6 2 1 0 8 0 4 0 6 4 0 0 3 0 11 8 1 7 7 3 2 3 2 1 C 0 5 0 4 2 3 4 0
指派问题
0 1 X= 0 0
1 0 0 0
0 0 0 1
0 0 1 、丁 做第三项, 最高总分Z=92+95+90+80=357
人数和工作数不相等的指派问题
• 像处理不平衡运输问题那样,根据情况,虚设人,或者虚设 工作任务。虚设人完成工作的费用以及任何人完成虚设工作 的费用取零(理解为这些费用实际不会发生)。这样一来, 便可将人数和工作数不相等的指派问题转化为标准形式的指 派问题。
2 2 0 0
0 1 2 1
0 0 0 1
• 步骤三:找出独立零元素。
4 ◎ 0 2 0 Φ
2 ◎ 0 Φ 0 2 1 Φ 0 0 2 ◎ 0 Φ 0 1 1 ◎
4 Φ 0 2 0 ◎
2 ◎ 0 Φ 0 2 1 ◎ 0 0 2 Φ 0 ◎ Φ 0 1 1
' M cij ,其中 M max cij ,则 令 cij
1i , j n
n
n
i 1 j 1
' ' z cij xij (M cij xij ) M xij cij xij Mn z ' i 1 j 1 i 1 j 1 i 1 j 1 i 1 j 1
• 找独立0元素,常用的步骤为:
从只有一个0元素的行开始,给该行中的0元素加圈,记作◎ 。
然后划去◎ 所在列的其它0元素,记作Ø ;这表示该列所代 表的任务已指派完,不必再考虑别人了。依次进行到最后一 行。
从只有一个0元素的列开始(画Ø的不计在内),给该列中的0
元素加圈,记作◎;然后划去◎ 所在行的0元素,记作Ø , 表示此人已有任务,不再为其指派其他任务了。依次进行到 最后一列。
《指派问题》课件
什么是指派问题
指派问题是一种在实际生活和工作中常见的问题,涉及到任务分配和资源调 度。考虑如何最优地分配任务或者资源,以达到特定的目标。
指派问题的应用场景
工作管理
有效分配工作任务,提高团队效率。
比较与总结
不同算法之间有各自的特点,选择合适的解决方法需要考虑问题的性质和目 标。解决指派问题时,我们需要根据具体情况选择最合适的算法。
总结
指派问题是一个具有挑战性的问题,并且有广泛的应用领域。算法在解决指 派问题的应用和发展中发挥着重要的作用。展望未来,我们期待能够进一步 提升算法在指派问题中的性能和效果。
暴力搜索是一种穷举所有可能解的方法,通过对比所有解决方案,选择最优 解。尽管时间复杂度较高,但可以保证找到最优解。
贪心算法
贪心算法是一种根据当前情况选择最优解的方法,不考虑未来可能出现的情 况。它的时间复杂度相对较低,但可能无法达到最优解。
分支界定算法
分支界定算法通过限制搜索空间来快速找到最优解。它可以大大减少搜索时间,但仍需权衡精确 度与效率。
运输调度
合理安排运输车辆和货物,降低成本,提高效率。
任务分配
根据工作需求分派任务给不同的人员,确保工作顺利完成。
指派问题的解决方法
暴力搜索
尝试所有可能的解决方案, 选择最优解。
贪心算法
根据当前情况,选择当前最 优解,不考虑未来可能出现 的情况。
分支界定算法
通过限制搜索空间,快速找 到最优解。
暴力搜索
求解指派问题的一次性分配算法_周莉
种改进匈牙利算法, 对匈牙利算法寻找独立零的次序进行了改进, 从而避免了匈牙利算法通常需要进行多次试分配的不足。针 对改进前后两种算法的复杂度、 运算时间、 精确度等进行了对比分析, 结果表明, 改进的算法是一种高精度的近似最优求解算法; 与匈牙利算法相比, 改进的算法易于编程实现, 且时间花费较低, 是一种适用于工程实时应用的有效求解算法。 关键词: 指派问题; 匈牙利算法; 一次性 DOI: 10.3778/j.issn.1002-8331.2011.18.039 文章编号: 1002-8331 (2011) 18-0135-04 文献标识码: A 中图分类号:
改进算法是一种一次性分配算法, 也是一种启发式算法,
其思想是: (1) 一个独立零既是行中的独立零, 又是列中的独 立零, 则根据最优分配的思想, 该元素为最优解分量的可能性 极大; (2) 位于同一列 (行) 中的独立零, 其所在行 (列) 中次小 值越大, 选择该独立零的局部最优效果越好。对于出现多种 同一列或同一行的独立零的情况, 次小值越大, 越有必要对其 行或列中的零元素优先指派; (3) 位于同一列 (行) 中的独立零 在指派确定后, 就会出现未指派行 (列) 中没有零元素的情况, 为确保分配能够一次性完成, 需要对该行 (列) 中的所有元素 减去本行 (列) 的次小元素, 及时构造出该行 (列) 的零元素。
指派问题
数学模型为:
max Z 85x11 92x12 73x13 90x14 95x21 87x22
78x23 95x24 82x31 83x32 79x33 90x34
86x41 90x42 80x43 88x44 甲
A
x11 x12 x13 x14 1
xx3211
6 4
9 8 0 0
4
0 6 3 6 5
经行运算即可得每行每列都有 0 元素的系数矩阵,
再按上述步骤运算,得到:
5 0 2 0 2
2 3 0 0
0
0 10 5 7 2
9 8 0 0
4
0 6 3 6 5
所画 0元素少于n,未得到最优解。
5 0 2 0 2 2 3 0 0 0 0 10 5 7 2 9 8 0 0 4 0 6 3 6 5
将前面的例题连续作进行下
任务 人
A
B
C
D
E
甲
12 7
9
7
9
乙
8
9
6
6
6
丙
7 17 12 14 9
丁
15 14 6
6 10
戊
4 10 7 10 9
12 7 9 7
8
9 66
9
6
7 6
5 0 2 0 2
2 3 0 0
vague指派问题的求解方法研究
vague指派问题的求解方法研究以vague指派问题的求解方法研究为标题,本文将介绍vague指派问题的定义、常见解法以及在实际应用中的应用案例。
通过对这些方法的研究,我们可以更好地理解和解决vague指派问题。
一、vague指派问题的定义vague指派问题是指在给定一组任务和一组可用资源的情况下,如何合理地将任务分配给资源,使得任务能够得到高效完成的问题。
在实际应用中,vague指派问题常常涉及到时间、成本、资源等多个因素的综合考虑,因此具有一定的复杂性和困难度。
二、常见解法1. 贪心算法:贪心算法是一种简单且常用的求解vague指派问题的方法。
它通过每次选择当前最优的任务和资源进行指派,从而逐步得到最终的指派方案。
贪心算法的优点是计算简单、效率高,但是由于其只考虑当前最优解,可能会得到次优解或不可行解。
2. 动态规划:动态规划是一种通过将问题分解为子问题并保存子问题的解来求解的方法。
对于vague指派问题,动态规划可以通过构建状态转移方程来求解最优解。
动态规划的优点是能够得到全局最优解,但是其计算复杂度较高,对于规模较大的问题可能会耗费较长的时间。
3. 网络流算法:网络流算法是一种常用于解决资源分配问题的方法。
在vague指派问题中,可以将任务和资源抽象为网络中的节点和边,通过网络流算法来求解最大流最小割问题,从而得到最优的资源分配方案。
网络流算法的优点是能够处理复杂的问题,并能够考虑多个约束条件,但是其实现复杂度较高,需要一定的数学基础。
三、应用案例1. 生产调度问题:在生产调度中,常常存在着任务与资源之间的指派问题。
比如,在一家制造企业中,需要根据产品的不同特性、订单的紧急程度等因素来合理安排生产任务,使得生产能够高效进行。
通过研究vague指派问题的解法,可以帮助企业制定合理的生产调度策略,提高生产效率。
2. 交通指挥问题:在城市交通中,如何合理地指派交通信号灯的时间和车辆的行驶路径,是一个典型的vague指派问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2011, 47 (18)
135
求解指派问题的一次性分配算法
周 莉 1, 张维华 2, 徐射雕 1 1 ZHOU Li , ZHANG Weihua2, XU Shediao1
1.鲁东大学 信息科学与工程学院, 山东 烟台 264025 2.鲁东大学 资产处, 山东 烟台, 264025 1.School of Information Science and Engineering, Ludong University, Yantai, Shandong 264025, China 2.Assets Department, Ludong University, Yantai, Shandong 264025, China ZHOU Li, ZHANG Weihua, XU Shediao.One-time assignment algorithm to solve assignment puter Engineering and Applications, 2011, 47 (18) : 135-138. Abstract: Hungarian algorithm is an optimal global algorithm to solve assignment problem.However, there are some deficiencies in the classic Hungarian algorithm, such as the hardly achieving and slowly processing.This paper presents an improved algorithm on the base of the Hungarian algorithm, and improves the order of finding separate zero in Hungarian algorithm, as a result, it avoids the disadvantage of repeating assignment in Hungarian algorithm.By comparing the performance of the two algorithms for improved and classic Hungarian algorithm in complexity, running time and association accuracy, the results show that the improved Hungary arithmetic is a high-precision approximative algorithm, can be easily achieved and fastly processed, and can be applyed to the application of real-time engineering. Key words:assignment problem; Hungarian algorithm; one-time 摘 要: 匈牙利算法是求解指派问题的全局最优求解算法, 但是经典的匈牙利算法存在着实现难、 处理速度慢等不足。提出了一
4 两种算法的比较 4.1 经典匈牙利算法示例
例1 min é 3 9 10 12ù 3 é0 6 7 9ù é0 6 7 8 ù ê 13 1 2 16 17ú 1 0 4 5ú 1 0 4 4 ú ê ú 12 ê ú®ê ê ú® ®ê ê ú 14 ê ê ú ê ê ú 15 16 14 15 ú 1 2 0 1 1 2 0 0ú ê ú 11 12 15 16 û 11 ë0 1 4 5û ë0 1 4 4û ë 1 minFra bibliotek3.2
改进算法原理
改进算法是一种一次性分配算法, 也是一种启发式算法,
其思想是: (1) 一个独立零既是行中的独立零, 又是列中的独 立零, 则根据最优分配的思想, 该元素为最优解分量的可能性 极大; (2) 位于同一列 (行) 中的独立零, 其所在行 (列) 中次小 值越大, 选择该独立零的局部最优效果越好。对于出现多种 同一列或同一行的独立零的情况, 次小值越大, 越有必要对其 行或列中的零元素优先指派; (3) 位于同一列 (行) 中的独立零 在指派确定后, 就会出现未指派行 (列) 中没有零元素的情况, 为确保分配能够一次性完成, 需要对该行 (列) 中的所有元素 减去本行 (列) 的次小元素, 及时构造出该行 (列) 的零元素。
é⊗ ê1 ê ê1 / ë0 é⊗ ê ê5 ê ê5 ê ê / ë0 6 7 ⊗ 4 2 ⊗ 1 4 - - Ú 10 11 ⊗ 8 6 ⊗ 1 0 / 8ù é0 10 11 8ù 4ú - ¾¾ ê5 0 8 4ú ú® ¾ ¾ ¾ ¾ ¾ ¾® ê ú- ¾ ê5 6 0 0ú ú ê 0 /ú ë0 1 0 0û 4û Ú 8 ù é1 ú ê0 4ú ú®ê ê0 0 /ú ê ú ú ⊗û ë0 0 1 0 0 0 0 1 0 0ù 0ú ú ú 0ú 1û
[1]
2
经典匈牙利算法介绍
匈牙利算法作为求解指派问题的经典算法[2], 其优点是在
避免程序陷入无限循环的情况下, 可以求得指派问题精确的 全局最优解。但随着代价矩阵维数的增加, 该算法的时间花 费变长, 主要原因是在多数情况下, 该算法不能经一次分配便 求得问题的最优解, 这就需要通过多次变换代价矩阵进行迭 代求解, 从而使程序运算时间变长。 匈牙利算法的具体步骤如下:
种改进匈牙利算法, 对匈牙利算法寻找独立零的次序进行了改进, 从而避免了匈牙利算法通常需要进行多次试分配的不足。针 对改进前后两种算法的复杂度、 运算时间、 精确度等进行了对比分析, 结果表明, 改进的算法是一种高精度的近似最优求解算法; 与匈牙利算法相比, 改进的算法易于编程实现, 且时间花费较低, 是一种适用于工程实时应用的有效求解算法。 关键词: 指派问题; 匈牙利算法; 一次性 DOI: 10.3778/j.issn.1002-8331.2011.18.039 文章编号: 1002-8331 (2011) 18-0135-04 文献标识码: A 中图分类号: TP311
1
引言
日常生活中经常会遇到这样的问题: 某单位需完成 N 项
要经过多次试分配的不足。并对改进算法的复杂度、 运算时 间、 精确度等进行了评测, 在确认改进的算法确实比传统的匈 牙利算法有所提高的基础上, 对两种算法进行了编程实现。 算例分析结果表明, 改进的算法是一种高精度的近似最优求 解算法, 与经典匈牙利算法相比, 一次性指派算法易于理解 与实现, 且时间花费较低, 是求解指派问题的一种有效求解 算法。
3.3
改进算法具体步骤
改进匈牙利算法的步骤如下: 步骤 1 使指派问题的代价矩阵经变换, 在各行各列中都
出现零元素。 步骤 2 若在一行 (列) 中的独立零, 又是它所在列 (行) 的 独立零, 则选中该零元素, 划掉它所在的行和列。 步骤 3 若同一列 (行) 存在多个独立零, 则在它们的行 (列) 中找出各自的次小元素, 选中次小值最大的行 (列) 中的 独立零, 划掉它所在的行和列, 然后把刚才与其比较的行 (列) 中的所有元素减去本行 (列) 的最小元素。若上述情况不止一 种, 则优先分配次小元素最大的行或列中的独立零。 步骤 4 独立零所在的列 (行) 的其他零不是其行 (列) 中的 独立零, 则选取该独立零, 划掉所在列 (行) 的其他的零元素。 步骤 5 若所有的行 (列) 中都不存在独立零, 则和匈牙利 算法一样, 任意选出零元素最少的行 (列) 中的一个零, 若行中 零元素个数一样就选择列 (行) 中零元素个数最少的零 (多数 礼让少数) 。 步骤 6 重复步骤 2~5, 直到找出 n 个零为止。
136
2011, 47 (18)
Computer Engineering and Applications 计算机工程与应用
步骤 1 使指派问题的代价矩阵经变换, 在各行各列中都 出现零元素。 (1) 从代价矩阵的每行元素中减去该行的最小元素; (2) 再从所得代价矩阵的每列元素中减去该列的最小元素。 步骤 2 试指派, 寻求最优解, 按以下步骤进行: 经过第一步变换后, 代价矩阵中每行每列都已存在零元 素; 但需找出 n 个独立的零元素。若能找出, 就以这些独立零 元素对应解矩阵 ( xij) 中的元素为 1, 其余为 0, 得到最优解。当 可用观察法、 试探法去找出 n 个独立零元素。若 n n 较小时, 较大, 则需要按一定顺序去找, 常用步骤如下: (1) 从只有一个零元素的行 (列) 开始, 给这个零元素加 圈。这表示对这行所代表的人, 只有一项任务可指派。然后 划去画圈的列 (行) 中的其他零元素。这表示这列代表的任务 已指派完, 不必再考虑别人了。 (2) 给只有一个零元素列 (行) 的零元素加圈, 然后划去加 圈的元素所在行 (列) 的零元素。 (3) 反复进行 (1) 、 (2) 两步, 直到所有零元素都被圈出或 划掉为止。 (4) 若仍有没有画圈的零元素, 且同行 (列) 的零元素至少 有两个, 这可用不同的方案去试探。从剩有零元素最少的行 (列) 开始, 比较这行零元素所在列中零元素的数目, 选择列中 零元素最少的零元素加圈, 然后划掉同行同列的其他零元 素。反复进行, 直到所有零元素都圈出或划掉为止。 (5) 若画圈零元素的数目 m 等于矩阵的维数 n , 那么已得 到指派问题的最优解; 若 m<n, 则转下一步。 步骤 3 做最少的直线覆盖所有零元素, 以确定该代价矩 阵中能找到最多的独立零元素数。按以下步骤进行: (1) 对没有画圈的行打对号; (2) 对已经打对号的行中有划掉零元素的列打对号; (3) 再对打有对号的列中含画圈元素的行打对号; (4) 重复 (2) 、 (3) , 直到得不出新的打对号的行、 列为止; (5) 对没有打对号的行画一横线, 对打对号的列画一纵 线, 得到覆盖所有零元素的最少直线数。 步骤 4 经过上述变换得到新的代价矩阵。在没有被直线 覆盖的元素中找出最小元素, 并对没划直线行的各元素都减 去该最小元素, 对划直线列的各元素都加上该最小元素, 得到 新矩阵, 转步骤 2。