指派问题(含非标准指派问题)
第4章整数规划——指派问题
![第4章整数规划——指派问题](https://img.taocdn.com/s3/m/dffcb8f2172ded630b1cb651.png)
4 指派问题
解: 可行解{c12=0, c24 =0, c31 =0, c43 =0}是一个独立零元素组, c12=0, c24 =0, c31 =0, c43 =0分别称 为独立零元素; {c12=0, c23 =0, c31 =0, c44 =0}也 是一个独立零元素组,而{c14=0, c23 =0, c31 =0, c44 =0}就不是独立零元素 组.
4 指派问题
1)对新矩阵中所有不含“*”元素的行打√ ; 2)对打√的行中,所有打×零元素所在的列打√; 3)对所有打√列中标记“*”元素所在行打√; 4)重复上述2),3)步,直到不能进一步打√为止; 5)对未打√的每一行划一直线,对已打√的每一列划一纵线, 即得到覆盖当前0元素的最少直线数。 第四步:对矩阵未被直线覆盖过的元素中找最小元素,将打 √行的各元素减去这个最小元素,将打√列的各元素加上这个最小 元素(以避免打√行中出现负元素),这样就增加了零元素的个 数,返回第二步。 【例5】 求解例1和例2
X (2)
都是指派问题的最优解。
4 指派问题
4.3 指派问题的求解 指派问题既是一类特殊的整数规划问题,又是特殊的运输问 题,因此可以用多种相应的解法来求解,然而这些解法都没有充 分利用指派问题的特殊性质,有效地减少计算量,直到1955年库 恩(W. W. Kuhn)提出的匈牙利法才有效地解决了指派问题。 匈牙利法的理论基础 定义2 独立零元素组 在效率矩阵中,有一组在不同行不同 列的零元素,称为独立零元素组,其每个元素称为独立零元素。 5 0 2 0 2 3 0 0 C 【例4】 已知效率矩阵 0 5 6 7 4 8 0 0 求其独立零元素组。
0 , 不 指 派 Ai 承 建 商 店 B j x ij ( i , j 1, 2 ,3, 4 ,5 ) 1, 指 派 Ai 承 建 商 店 B j
非标准指派问题
![非标准指派问题](https://img.taocdn.com/s3/m/71cb817bef06eff9aef8941ea76e58fafab04508.png)
非标准指派问题在日常工作中,我们经常会遇到一些非标准指派问题,这些问题可能会给我们的工作带来一些困扰和挑战。
因此,我们需要对这些非标准指派问题进行深入的分析和解决,以便更好地应对各种工作场景。
首先,非标准指派问题可能会出现在项目任务的安排上。
在实际工作中,由于各种原因,我们可能会接到一些非常规的任务指派,这些任务可能与我们的专业领域不太相关,或者超出了我们的工作范围。
面对这种情况,我们需要及时与领导沟通,明确任务的目的和意义,同时也要评估任务的可行性和风险,以便做出正确的决策。
其次,非标准指派问题还可能出现在工作流程的安排上。
在团队协作中,我们可能会遇到一些非常规的工作流程,这些流程可能会影响到我们的工作效率和质量。
为了解决这些问题,我们需要与团队成员进行有效的沟通和协调,找到最适合的工作流程,并在实践中不断进行优化和调整,以确保工作的顺利进行。
此外,非标准指派问题还可能出现在资源分配上。
在工作中,我们可能会面临一些非常规的资源分配问题,例如人力、物力、财力等方面的不足或不合理分配。
为了解决这些问题,我们需要与相关部门或领导进行有效的沟通,协调资源的调配和分配,确保各项工作能够得到充分的支持和保障。
最后,非标准指派问题也可能出现在工作目标的设定上。
在实际工作中,我们可能会接到一些非常规的工作目标,这些目标可能会与我们的实际情况不太符合,或者存在一定的难度和挑战。
为了解决这些问题,我们需要与领导或团队成员进行充分的沟通和协商,明确工作目标的意义和价值,同时也要合理评估目标的可行性和实现路径,以便更好地完成工作任务。
总之,非标准指派问题是我们在工作中经常会遇到的挑战,我们需要以积极的态度和有效的方法来解决这些问题,以便更好地应对各种工作场景,提高工作效率和质量。
希望通过我们的努力,能够更好地应对和解决各种非标准指派问题,为团队的发展和工作的顺利进行贡献力量。
第六章_指派问题资料
![第六章_指派问题资料](https://img.taocdn.com/s3/m/a0efeea8e45c3b3566ec8b67.png)
Solution:
1 当分配第 i 人完成第 j 项任务
设 xij 0 否则
i, j 1, 2, , n
§2 指派问题
显然,这是一个 0-1
任务 人员
E
J
G R ai
规划问题, 也是一个 A 2 15 13 4 1
特殊的运输问题 .
B 10 4 14 15 1
所以,分配问题可用
C 9 14 16 13 1
在第一节的人员工作安排问题中,分配工作时, 只考虑人员有工作做 . 但事实上,由于工作的性质和 个人的特长不同,在完成不同的任务时,其效益是不 同的(成本、时间、利润、费用 etc.).
设有 n 个人员去完成 n 项任务,第 i 人完成第 j 项
任务的效益为 cij 0 ,要求每人完成且仅完成一项,
可用图和矩阵给出它的数学模型及求解方法 .
§1 最大基数匹配问题 Graph Vertex Edge
Definition 4.1 设图 G = ( V,E )
15、、如如果果 MM是一E匹,配且,对而对 ei ,eejj,GM,与M ee无i j 不e j是 G
公的共匹顶 配点 ,, 则则 称称M边是子G集的M一是个极G大的匹一配个匹. 配;
列在 Y-T 中,这与 N(S) T 矛盾. 显然 M C .
而 M B , 所以 B 是最小覆盖 .
证毕
§2 指派问题
1 0 0 0
显然,Ex . 2 的可行解可 用一个 0-1 矩阵表示 .
(
xij
)
0 0
0 1
0 0
1
0
表示: A E, B R, C J, D G.
0
0
cij
指派问题详解
![指派问题详解](https://img.taocdn.com/s3/m/2a8e8db91a37f111f1855be7.png)
第一章绪论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 再进行叠代.定理: 匈牙利算法能找到一个最大权匹配和一个最小费用覆盖.证明: 算法由一个覆盖开始,算法的每个叠代产生一个覆盖,仅在相等子图有一个完全的匹配为止。
【精品】指派问题——匈牙利法
![【精品】指派问题——匈牙利法](https://img.taocdn.com/s3/m/b2722c4948d7c1c708a14543.png)
最优解:x13=1,x21=1,x32=1,x44=1
若◎元素的数目m=n,则该指派问题的最优 解已经得到,否则转入Step 3;
13
指派问题的匈牙利解法——步骤(续)
Step 3. 设有 m<n 个◎, 找最少覆盖所有0的直线
1) 对没有◎的行打√
2) 对已打√行中含所在列打√ 3) 对已打√列中含◎所在行打√ 4) 重复2)~3), 直至没有要打√的行和列为止 5) 对没有打√的行划横线, 对打√的列划竖线 得到最少覆盖所有0的直线数l。
i 1 j1 ik n n j1 n j1
n
n
n
cijx ij c kjx kj (s)
i 1 j1 ik j1
z (s)
指派问题的匈牙利解法
• 根据此定理,可以对 做如下改变,目的是 找出C 中的 n个不同行不同列的0元素: • 将 C的每一行减去该行中的最小元素,得 到C’矩阵 ,则C’ 的每行中均至少出现一个 0元素,且所有cij0 。同样,对C 的列亦进 行如此计算,由此,我们完全可以从原效 率矩阵 出发,得到一个新的效率矩阵 ,使 C的每行每列中均至少存在一个0元素,而 不改变问题的最优解。
Z=15
独立练习 • P161第6.4题
6.5.4 非标准形式的指派问题 • 非标准型指派问题求解的总原则是化非标准 形式为标准形式,然后用匈牙利解法求解。 (1) 最大化指派问题 设效率矩阵为 C (cij )nn ,其中最大元素
运筹学指派问题课件
![运筹学指派问题课件](https://img.taocdn.com/s3/m/e8d4253b0066f5335a812124.png)
c
i 1 j 1
n
n
ij
xij
n xij 1 i 1 n st . xij 1 (i , j 1, 2, ..., n) j 1 x 1or 0 ij
运筹学教程
例1:某商业公司计划开5家新商店,商业公司决定由5家建筑 公司分别承建。已知建筑公司Ai(i=1,2…5)对新商店Bj(j=1…5) 的建筑费用报价Cij.问题:商业公司对5家建筑公司如何分配任 务,才能使总的建筑费用最少? Cij Ai Bj
运筹学教程
指派问题解法:匈牙利解法 解法思想:
若从系数矩阵C的任何一行(列)各元素中分别减去 一个常数K(K可正可负)得到新矩阵C’,则以C’为系 数矩阵的指派问题与原问题有相同的解,但最优值 比原问题最优值小K。
匈牙利法条件: MIN、i=j 、Cij≥0
运筹学教程
匈牙利法的主要步骤: 步骤1:变换系数矩阵,使在各行各列都出现零元素。 (1)从矩阵C的每行元素减去该行的最小元素;
0 11 8 7 7 3 3 2 1 C ' 5 0 4 3 4 0
第二步 圈0 寻找不同行不同列的0元素,圈之。 所在行和列其它0元素划掉
0 0 0 0 0 3 0 11 8 第三步 打 无的行打,打行上0列打 , 1 7 7 3 打列上行打,打行上0列打 ' 2 3 2 1 C 0 5 0 4 0 3 0 11 8 0 1 7 7 3 2 3 4 0 C ' 0 2 3 2 1 第四步 确定方案划线 0 0 5 0 4 没有打行上画一条横线; 0 2 3 4 0 有打列上画一条竖线;
15 120 15 12 0 14 100 14 100 8 7 0 0 8 7
整数规划2-指派问题
![整数规划2-指派问题](https://img.taocdn.com/s3/m/456618acb0717fd5360cdca0.png)
原来的 0 元素不变。这样得到新系数矩阵(其最优解和原问
题相同)。若得到 n 个独立的 0 元素,则已得最优解,否则 重复该步骤继续变换系数矩阵。
匈牙利解法的一般步骤:
5 2 0 9 0
0 3 10 8 6
2 0 5 0 3
0 0 7 0 6
2 0 2 4 5
7 4
0 3 8 8 4
2 0 3 0 1
匈牙利解法:
匈牙利解法的关键是利用了指派问题最优解的如下性质: 若从指派问题的系数矩阵 C = ( cij )n×n 的某行(或某列)
各元素分别减去一个常数 k ,得到一个新的系数矩阵C’ = ( c’ij ),
则以 C 和 C’ 为系数矩阵的两个指派问题有相同的最优解。
匈牙利解法的一般步骤:
步骤一: 变换系数矩阵。使其每行及每列至少有一个零元素,同 时不出现负元素。 步骤二: 进行试指派,即确定独立零元素。 步骤三: 继续变换系数矩阵,然后返回步骤二。
5)
对没有打√号的行画一横线,对打√号的列画一竖线, 这样就得到能覆盖所有零元素的最少直线数目的直 线集合。
匈牙利解法的一般步骤:
5
0
2
0
2
2
0
3
10
0
5
0
7
02√源自9086
0
3
0
6
4
5
√
√
匈牙利解法的一般步骤:
继续变换系数矩阵。其方法是在未被直线覆盖的元素中
找出一个最小元素。然后在打√号行各元素都减去这一最小 元素,而在打√号列的各元素都加上这一最小元素,以保证
11 10 7 4 4
2 11 4 2 2
0 6 0 0
最短路径、指派、运输问题
![最短路径、指派、运输问题](https://img.taocdn.com/s3/m/c7b2d1c1a1c7aa00b52acbd9.png)
第二步:进行试指派以寻求最优解。
(1)进行行检验:从只有一个0元素的行开始,给这 个0元素加(),记作(0);再划去(0)所在列的其它 0元素,记作φ。若遇到有两个0元素以上的行,先放下。 (2)进行列检验:给只有一个0元素的列0元素加() ,记作(0);然后划去(0)所在行的0元素,记作φ。 (3)再对两个以上0元素的行和列标记,任意取一个 加()。
B1 A1 A2 A3 4 7 6
B2 8 9 9
B3 7 17 12
B4 15 14 8
B5 12 10 7
A4
A5
6
6
7
9
14
12
6
10
10
6
三、其它指派问题
(1)目标函数求最大值的指派问 题 对于此问题可做一个新的 矩阵B=(bij)。找出原矩阵的最 大元素m,令B=(bij)=m-cij
∑
产 量 与 销 量 平 衡
解: 设产地Ai到销地Bi的运量为xij,由问题构造运量平衡表
可以知道:
(1)产销平衡 (2)Ai运出量等于产量 (3)Bj运入量等于销量
a b
i 1 i j1
m
n
j
x
j 1
n
ij
ai
x
i 1
m
ij
bj
运量平衡表
销地Bi 运价 产地Ai A1 A2 C11 C21 C12 C22 B1 B2
4 2 (cij ) 4 3 3 3 3 2 4 6 5 6 1 - 1 3 5 - 2 0 1 4 - 3 5 -2 1 2 1 0 0 3 0 - 1 3 4 3 - 2 0 1 2 1-3 4 3 -2 1 -2 2 1 0 0 1 2 0 2 0 3 (b ) ij 1 3
数学建模作业_动态规划求解指派问题
![数学建模作业_动态规划求解指派问题](https://img.taocdn.com/s3/m/2992c8da76eeaeaad1f3307d.png)
3 问题的伪代码实现
1 设 k 的初始值为 1; 2 写出 X k ,即第 k 阶段决策变量可能的取值,特别地, X 1 ={1,2, 。 。 。 ,n}。 3 对每一个 sk ,计算 sk g1 (sk 1 , xk 1 ) sk 1 {xk 1. j} ,及 d ( sk , xk ) ; 4 计算 f k ( sk ) ; 5 若 X k 为空,转到第 6 步,否则,k++,转回执行第 2 步。 6 最优指派决策为 f k ( sk ) ,根据 f k ( sk ) 写出最优指派方案{ xkj }。 7 程序算法复杂度:是 O(V*E*E)
其中“ - ”表示集合的差运算。 (4)指派问题指标递归方程:
f k (sk ) min{ f k (sk , xk ) | xk X k } , f k (sk , xk ) d k (sk , d k ) f k 1 ( g1 (sk 1 , xk 1 )) , f 0 (s0 ) 0, k 1,2,..., n.
float costforout[101][101]; int matrixsize; int personnumber; int jobnumber; }matrix; matrix sb; int result[501][2]; void twozero(matrix &sb); void judge(matrix &sb,int result[501][2]); void refresh(matrix &sb); void circlezero(matrix &sb); matrix input(); void output(int result[501][2],matrix sb); void zeroout(matrix &sb); matrix input() { matrix sb; int m; int pnumber,jnumber; int i,j; float k; char w; printf("指派问题的动态规划解法:\n\n"); printf("按最大价值分配请输入 1;最小价值分配请输入 0:\n"); scanf("%d",&m); while (m!=1&&m!=0) { printf("请输入 1 或 0:\n"); scanf("%d",&m); } printf("请输入可分配总人数(介于 1 和 100 之间):\n"); scanf("%d",&pnumber); while(pnumber<1 || pnumber>100) { printf("请输入合法数据:\n"); scanf("%d",&pnumber); } printf("请输入工作数(介于 1 和 100 之间):\n"); scanf("%d",&jnumber); while(jnumber<1 || jnumber>100) { printf("请输入合法数据:\n");
5.5指派问题
![5.5指派问题](https://img.taocdn.com/s3/m/8f5b98a9c67da26925c52cc58bd63186bceb92e2.png)
15 12 A1
15
12
A1'
14 10 A2
14
10
A2'
8 7 A3
8 7 A3'
上面的系数矩阵有6行5列,为了使“人”和“事”的数目相同, 引入一件虚拟的事B6,使之成为标准指派问题的系数矩阵:
B1 B2 B3 B4 B5 B6
4 8 4 8 7 9 7 9 6 9 6 9
7 15 12 0 A1
确定独立0元素的方法:当n较小时,可用观察法、或试探法; 当n较大时,可按下列顺序进行 • 从只有一个0元素的行(列)开始,给这个0元素加圈,记作, 然后划去所在的列(行)的其它0元素,记作。 •给只有一个0元素的列(行)的0加圈,记作,然后划去所 在行的0元素,记作。 •反复进行,直到系数矩阵中的所有0元素都被圈去或划去为止。
•如遇到行或列中0元素都不只一个(存在0元素的闭回路), 可任选其中一个0元素加圈,同时划去同行和同列中的其它0 元素。被划圈的0元素即是独立的0元素。
3.作最少数目的直线,覆盖所有0元素(目的是确定系数矩 阵的下一个变换),可按下述方法进行 1) 对没有的行打“✓”号; 2)在已打“✓”号的行中,对 所在列打“✓” 3)在已打“✓”号的列中,对所在的行打“✓”号; 4)重复2)3),直到再也找不到可以打“✓”号的行或列为止; 5)对没有打“✓”的行划一横线,对打“✓”的列划一纵线,这样 就得到覆盖所有0元素的最少直线数。
若某个人可做几件事,则可将该人看做相同的几个人来接受指 派。这几个人作同一件事的费用系数当然都一样。 • 某事一定不能由某人作的指派问题
若某事一定不能由某个人做,则可将相应的费用系数取做足够 大的数M。
例3:对于例2的指派问题,为了保证工程质量,经研究 决定,舍弃公司A4和A5,而让技术力量较强的建设公司A1, A2,A3参加招标承建,根据实际情况,可允许每家建设公司 承建一项或二项工程。求使总费用最少的指派方案。
4.5 指派问题
![4.5 指派问题](https://img.taocdn.com/s3/m/5f5540a102020740bf1e9b12.png)
23
OR:SM
五、非标准指派问题
工作
例:现有4份工作,6个人应聘,由
1 2 3 4 56
人
于个人的技术专长不同,他们承担
1 12 7 9 7 0 0
各项工作所需时间如下表所示,且
2 7 17 12 14 0 0
规定每人只能做一项工作,每一项
3 15 14 6 6 0 0
工作只能由一个人承担,试求使总
75 50 150 230 50 25 0 100 180
65 70 170 250 65 0 5 105 185
82 55 200 280 55 27 0 145 225
然后找出矩阵每列的最小元素,再分别从每列中减去,有:
0 11 122 202 0 11 22 22
25
0
100
180
25
运筹学--管理科学方法
李军
桂林电子科技大学商学院
第四章 整数规划
内S容ub提ti要tle
问题背景与数学描述
一般
的ILP
分枝定界法 原理
求解 割平面法
步骤
整数
规划 特殊的ILP
0-1规划 指派问题
进一步讨论
建模 求解 特点分析
整数规划应用
今天要研究 的内容?
2
2013-5-29
2
引例1:趣味问题
( 0) 6 17 17
30 ×0 ( 0) ×0
×0 ×0 ×0 (0)
32
( 0)
45
45
(0 ) 6 17 17
或 30 ×0 ×0 (0)
×0 ×0 (0) ×0
32
( 0)
45
45
指派问题
![指派问题](https://img.taocdn.com/s3/m/3f829115a2161479171128c6.png)
13 0 5 1
7 6 3 0
0 9 ( b ij ) 2 0
第二步: 进行试指派,以寻求最优解。为此,按以 下步骤进行。 经第一步变换后,系数矩阵中每行每 列都已有了0元素;但需找出n个独立的0 元素。若能找出,就以这些独立0元素对 应解矩阵(xij)中的元素为1,其余为0, 这就得到最优解。当n较小时,可用观察 法、试探法去找出n个独立0元素。若n较 大时,就必须按一定的步骤去找,常用 的步骤为:
•减数得零—求初始匹配 •圈零划线—查是否最大匹配 •找数调整—求新的最优匹配 运筹学
指派问题的解法
第一步: 使指派问题的系数矩阵经变换,在各行各列中 都出现0元素。 (1) 从系数矩阵每行元素减去该行的最小元素; (2) 再从所得系数矩阵的每列元素中减去该列 的最小元素。 若某行(列)已有0元素,那就不必再减了。
④
7 4 0 11 0
0 3 8 8 4
2 0 3 0 1
0 0 5 0 4
2 0 0 4 3
运筹学
已具有n个独立0元素。这 就得到了最优解,相应的解 矩阵为: 由解矩阵得最优指派方案 甲—B,乙—D,丙—E,丁—C,戊—A
0 0 0 0 1
想想看!
运筹学
指派问题的形式表述
给定了一系列所要完成的任务(tasks)以及 一系列完成任务的被指派者(assignees), 所需要解决的问题就是要确定出哪一个人 被指派进行哪一项任务,使总的效率最高?
运筹学
指派问题的假设
被指派者的数量和任务的数量是相同的 每一个被指派者只完成一项任务 每一项任务只能由一个被指派者来完成
表1
任 人员 甲 乙 丙 丁 务
《指派问题》课件
![《指派问题》课件](https://img.taocdn.com/s3/m/3bacf0634a35eefdc8d376eeaeaad1f346931192.png)
指派问题的扩展研究
多目标指派问题
应用场景:生产调度、资源 分配等
解决方法:线性规划、启发 式算法等
定义:指派问题在多个目标 下的扩展
挑战:如何在多个目标之间 找到最优解
动态指派问题
动态指派问题的定 义
动态指派问题的应 用场景
动态指派问题的求 解方法
动态指派问题的优 化策略
大规模指派问题
问题定义:大规模 指派问题是指在给 定一组任务和一组 资源,如何将任务 分配给资源,使得 总成本最小化或总 收益最大化。
混合算法
混合算法的概念: 将多种算法进行 组合,以获得更 好的优化效果
混合算法的优点: 能够充分利用各 种算法的优点, 提高优化效果
混合算法的应用: 在指派问题中, 混合算法可以结 合多种算法,如 遗传算法、模拟 退火算法等,以 提高优化效果
混合算法的挑战: 如何合理选择和 组合各种算法, 以获得最佳的优 化效果
应用场景:大规 模指派问题广泛 应用于物流、供 应链、生产调度 等领域。
研究方法:大规 模指派问题的研 究方法包括启发 式算法、遗传算 法、神经网络等。
挑战与展望:大规 模指派问题的挑战 在于如何设计高效 的算法,以及如何 解决大规模问题中 的优化问题。未来 的研究方向包括分 布式计算、并行计 算等。
禁忌搜索法:在搜索过程中引入禁忌表,避免重复搜索已搜索过的解
元启发式方法
基本概念:元启发式 方法,也称为元启发 式算法,是一种基于 启发式策略的优化方 法。
特点:元启发式方 法具有自适应性、 鲁棒性和易于实现 等特点。
应用:元启发式方法 在指派问题、路径规 划、调度等问题中都 有广泛的应用。
实例:遗传算法、模 拟退火算法、蚁群算 法等都是元启发式方 法的典型代表。
指派问题
![指派问题](https://img.taocdn.com/s3/m/adc96e97e53a580216fcfeee.png)
与模型1相比:
1. 约束相同;
2 寻找独立0元素
若看作第三列 上的惟一0元素
用一直线覆 盖所在行
0 0 0 0 0
3 1 2 0 2
0 11 8 7 7 3 3 2 1 5 0 4 3 4 0
只圈出4个0, 即:只有4个独 立的0元素,少 于系数矩阵的 阶数5。
第二列只有惟 一0元素
若C=(cij)n×n的第一行各元素分别加上一个常数k, 得到一个新矩阵C’=(c’ij) n×n
c11 k c C ' 21 cn1 c12 k ... c1n k c22 ... c2 n ... ... cn 2 ... cnn
效率矩阵C’
练习 有一份中文说明书,需译成英、日、德、俄 法五种文字。分别记作E、J、G、R、F。现有甲、乙 、丙、丁、戊五人,他们将中文说明书翻译成不同语 种的说明书所需时间如下表。问应指派何人去完成何 工作,使所需总时间最少?
任务 人
E 12 8 7
J 7 9 17
G 9 6 12
R 7 6 14
F 9 6 9
第五节 指派问题
assignment problem
• • • • 指派问题的数学模型 指派问题解的特点 指派问题的求解方法——匈牙利法 非标准形式的指派问题
一、指派问题的数学模型
例、有四项任务需分派给甲、乙、丙、丁四个人去 做,这四个人都能承担上述四项任务,但完成各项任 务所需时间如下表所示。问应如何分派任务可使完成 任务的总工时最少?
《指派问题》课件
![《指派问题》课件](https://img.taocdn.com/s3/m/7fa9ef3b1611cc7931b765ce0508763230127453.png)
什么是指派问题
指派问题是一种在实际生活和工作中常见的问题,涉及到任务分配和资源调 度。考虑如何最优地分配任务或者资源,以达到特定的目标。
指派问题的应用场景
工作管理
有效分配工作任务,提高团队效率。
比较与总结
不同算法之间有各自的特点,选择合适的解决方法需要考虑问题的性质和目 标。解决指派问题时,我们需要根据具体情况选择最合适的算法。
总结
指派问题是一个具有挑战性的问题,并且有广泛的应用领域。算法在解决指 派问题的应用和发展中发挥着重要的作用。展望未来,我们期待能够进一步 提升算法在指派问题中的性能和效果。
暴力搜索是一种穷举所有可能解的方法,通过对比所有解决方案,选择最优 解。尽管时间复杂度较高,但可以保证找到最优解。
贪心算法
贪心算法是一种根据当前情况选择最优解的方法,不考虑未来可能出现的情 况。它的时间复杂度相对较低,但可能无法达到最优解。
分支界定算法
分支界定算法通过限制搜索空间来快速找到最优解。它可以大大减少搜索时间,但仍需权衡精确 度与效率。
运输调度
合理安排运输车辆和货物,降低成本,提高效率。
任务分配
根据工作需求分派任务给不同的人员,确保工作顺利完成。
指派问题的解决方法
暴力搜索
尝试所有可能的解决方案, 选择最优解。
贪心算法
根据当前情况,选择当前最 优解,不考虑未来可能出现 的情况。
分支界定算法
通过限制搜索空间,快速找 到最优解。
暴力搜索
指派问题
![指派问题](https://img.taocdn.com/s3/m/e63d81a30029bd64783e2cf4.png)
指派问题 数学试验
§4 指派问题
指派问题是整数规划的一类重要问题。也是在实际生活中经常 遇到的一种问题:由n项不同的工作或任务,需要n个人去完成 (每人只能完成一项工作)。由于每人的知识、能力、经验等 不同,故各人完成不同任务所需的时间(或其它资源)不同。 问应只排哪个人完成何项工作所消耗的总资源最少? 一。 指派问题的数学模型 引进0-1变量
-4 -7 -6 -6 -6
0 0 → 0 0 0
4 3 11 8 2 10 7 3 3 6 2 1 1 8 0 4 3 6 4 0
-1 -3
✓
0 0 → C1 = 0 0 0
3 0 11 8 1 7 7 3 ✓ 2 3 2 1 ✓ 0 5 0 4 2 3 4 0
在只有一个0元素的行(或列)加圈,表示此人只能做该事 (或此事只能由该人来做),每圈一个“0”,同时把位于同 列(或同行)的其他零元素划去。表示此时已不能再由他 人来做(或此人已不能做其它事)。如此反复,直到矩阵 中所有零元素都被圈去或划去为至。 在遇到所有行和列中,零元素都不止一个时,可任选其中 一个加圈,然后划去同行、同列其他未被标记的零元素。 例
-7 -6 -6 -7
1 0 X * = 0 0 0
0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0
从而导出匈牙利解法的思想:
二。匈牙利解法 匈牙利法是1955年由库恩(W.W.Kuhn)根据匈牙利 数学家狄·考尼格(d.konig)关于矩阵中独立零元素的定理 发明的。 匈牙利法的基本原理: 定理1 将效率矩阵的某一行(或某一列)的各个元素都减去 同一个常数t (t可正可负),得到新的矩阵,则以新矩阵为 效率矩阵的指派问题与原指派问题的最优解相同。但其最 优值比原最优值减少t 。 解:设效率矩阵C为
指派问题
![指派问题](https://img.taocdn.com/s3/m/95fcf3638e9951e79b8927a0.png)
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元素,记作Ø , 表示此人已有任务,不再为其指派其他任务了。依次进行到 最后一列。
指派问题(含非实用标准指派问题)
![指派问题(含非实用标准指派问题)](https://img.taocdn.com/s3/m/2f52eb2dfc4ffe473368ab6e.png)
第五章 整数规划§1 整数规划的数学模型及特点要求一部分或全部决策变量必须取整数值得规划问题称为整数规划。
其模型为:Max(或min)z=∑=nj j jx c1s.t ⎪⎪⎩⎪⎪⎨⎧=≥=≥=≤∑=nj nj i ij ij xx x nj x m i b x a ,,,2,10,2,1),(211若要求决策变量只能取值0或1的整数规划称为0-1型整数线性规划。
§5 指 派 问 题 一. 指派问题的标准形式及数学模型在现实生活中,有各种性质的指派问题。
例如,有若干项工作需要分配给若干人(或部门)来完成;有若干项合同需要选择若干个投标者来承包;有若干班级需要安排在各教室上课等等。
诸如此类的问题,它们的基本要求是在满足特定的指派要求条件下,使指派方案的总体效果最佳。
由于指派问题的多样性,有必要定义指派问题的标准形式。
指派问题的标准形式(以人和事为例)是:有n 个人和n 件事,已知第i 个人作第j 件事的费用为),2,1,(n j i c ij =,要求确定人和事之间的一一对应的指派方案,是完成这n 件事的总费用最少。
为了建立标准指派问题的数学模型,引入2n 个0-1变量:⎩⎨⎧=10ij x这样,问题的数学模型可写成 ∑∑===ni nj ij ijx cz 11min (5.1)s.t ⎪⎪⎪⎩⎪⎪⎪⎨⎧======∑∑==n j i x n i x n j x ij n j ij n i ij ,2,1,1,0,2,11,2,1111 (5.3)其中,(5.1)表示每件事必优且只有一个人去做,(5.2)表示每个人必做且只做一件事。
中部分或全部取整数 若指派第i 人作第j 件事若不指派第i 人作第j 事i ,j=1,2,…n(5.2) (5.4)注:○1 指派问题是产量(i a )、销量(j b )相等,且i a =j b =1,i ,j=1,2,…n 的运输问题。
○2 有时也称ijc 为第i 个人完成第j 件工作所需的资源数,称之为效率系数(或价值系数)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
指派问题(含非标准指派问题)第五章 整数规划§1 整数规划的数学模型及特点要求一部分或全部决策变量必须取整数值得规划问题称为整数规划。
其模型为:Max(或min)z=∑=nj jjx c 1s.t⎪⎪⎩⎪⎪⎨⎧=≥=≥=≤∑=nj nj i ij ij xx x nj x m i b x a ,,,2,10,2,1),(211若要求决策变量只能取值0或1的整数规划称为0-1型整数线性规划。
§5 指 派 问 题 一. 指派问题的标准形式及数学模型在现实生活中,有各种性质的指派问题。
例如,有若干项工作需要分配给若干人(或部门)来完成;有若干项合同需要选择若干个投标者来承包;有若干班级需要安排在各教室上课等等。
诸如此类的问题,它们的基本要求是在满足特定的指派要求条件下,使指派方案的总体效果最佳。
由于指派问题的多样性,有必要定义指派问题的中部分或全标准形式。
指派问题的标准形式(以人和事为例)是:有n 个人和n 件事,已知第i 个人作第j 件事的费用为),2,1,(n j i cij=,要求确定人和事之间的一一对应的指派方案,是完成这n 件事的总费用最少。
为了建立标准指派问题的数学模型,引入2n 个0-1变量:⎩⎨⎧=1ijx这样,问题的数学模型可写成∑∑===n i nj ijij x c z 11min(5.1)s.t⎪⎪⎪⎩⎪⎪⎪⎨⎧======∑∑==n j i x n i x n j x ij n j ij ni ij ,2,1,1,0,2,11,2,1111(5.3)其中,(5.1)表示每件事必优且只有一个人去做,(5.2)表示每个人必做且只做一件事。
注:○1指派问题是产量(ia )、销量(jb )相等,且ia =jb =1,i ,j=1,2,…n 的运输问题。
○2有时也称ijc 为第i 个人完成第j 件工作所若指派第i 人若不指派第i i,(5(5需的资源数,称之为效率系数(或价值系数)。
并称矩阵 C= nn ij c ⨯)(=⎪⎪⎪⎪⎪⎭⎫⎝⎛nn n n n n c c c c c c c c c 212222111211(5.5)为效率矩阵(或价值系数矩阵)。
并称决策变量ijx 排成的n ×n 矩阵X=nn ij x⨯)(=⎪⎪⎪⎪⎪⎭⎫⎝⎛nn n n n n x x x x x x x x x 212222111211(5.6)为决策变量矩阵。
(5.6)的特征是它有n 个1,其它都是0。
这n 个1位于不同行、不同列。
每一种情况为指派问题的一个可行解。
共n!个解。
其总的费用 z =C ⊙X这里的⊙表示两矩阵对应元素的积,然后相加。
问题是:把这n 个1放到X 的2n 个位置的什么地方可使耗费的总资源最少?(解最优) 例1 已知效率矩阵C= ⎪⎪⎪⎪⎪⎭⎫⎝⎛0084765000320205则 X(1)=⎪⎪⎪⎪⎪⎭⎫⎝⎛0100000110000010,X (2)=⎪⎪⎪⎪⎪⎭⎫⎝⎛1000000101000010都是指派问题的最优解例12/P-149:某商业公司计划开办五家新商店。
为了尽早建成营业,商业公司决定由5家建筑公司分别承建。
已知建筑公司A i (i=1,2,…5)对新商店B j (1,2,…5)的建造费用的报价(万元)为ijc (i ,j=1,2,…5),见表5-9。
商业公司应当对5家建筑公司怎样分派建筑任务,才能使总的建筑费用最少? 表5-9ijc B 1 B 2 B 3 B 4 B 5A 1 4 8 7 15 12 A 2 7 9 17 14 10 A 3 6 9 12 8 7 A 4 6 7 14 6 10 A 5 6 9 12 10 6解:这是一标准的指派问题。
若设0-1变量ijx =⎩⎨⎧01则问题的数学模型为Min z=411x +812x +…+1054x +655xs.t⎪⎪⎪⎩⎪⎪⎪⎨⎧======∑∑==5,2,1,1,05,2,115,2,115151 j i x i x j x ij j ij i ij若看成运输问题,且ijx 如上所述,则表5-9为商店 公司 B 1B 2 B 3 B 4 B 5 任务A 1 (4) 11x (8) 12x (7) 13x (15) 14x(12) 15x 1A 2 (7) 21x (9)22x(17)23x(14) 24x(10) 25x1 A 3 (6) 31x(9) 32x(12) 33x(8) 34x(7) 35x1 A 4 (6) 41x(7) 42x(14) 43x(6) 44x(10) 45x1 A 5(6) (9) (12) (10) (6)1当A i 承当A i 不承i,j=51x52x53x54x55x所选的公司数1 1 1 1 15当然,第一行的1应放在(1,1)位置,此位置同时是第一列的费用最小。
但一般情况下没有这么好。
需找一适合一般的方法。
二. 匈牙利解法原理:虽然指派问题是一类特殊的整数规划问题,又是特殊的0-1规划问题和特殊的运输问题,因此,它可以用多种相应的解法来求解。
但是,这些解法都没有充分利用指派问题的特殊性质,有效地减少计算量。
1955年,库恩(W.W.Kuhn )提出了匈牙利法。
定理1:设指派问题的效率矩阵为C= nn ijc⨯)(,若将该矩阵的某一行(或某一列)的各个元素都减去统一常数t (t 可正可负),得到新的效率矩阵nn ijc C ⨯'=')(,则以C '为效率矩阵的新的指派问题与原指派问题的最优解相同。
但其最优解比原最优解之减少t.证明:设式(5.1)~(5.4)为原指派问题。
现在C 矩阵的第k 行个元素东减去同一常数t,记新的指派问题的目标函数为Z '.则有Z '=∑=n i 1∑='n j ijijx c 1=∑≠=n ki i 1∑='n j ij ij x c 1+∑='n j ij ij x c 1=∑≠=n ki i 1∑=nj ijijx c1+∑=-nj kjkjx t c1)(=∑≠=n ki i 1∑=nj ijijx c1+∑=nj kjkjx c1-t ∑=nj kj x 1=∑=n i 1∑=nj ijijx c1-t ·1=Z-t因此有Min Z '=min(Z-t)=minZ-t而新问题的约束方程同原指派问题。
因此其最优解比相同,而最优解差一个常数。
推论:若将指派问题的效率矩阵每一行即每一列分别减去各行及各列的最小元素,则得到新指派问题与原指派问题有相同的最优解。
证明:结论是显然的。
只要反复运用定理1便可得证。
当将效率矩阵的每一行都减去各行的最小元素,将所得的矩阵的每一列在减去当前列中最小元素,则最后得到新效率矩阵C '中必然出现一些零元素。
设ijc '=0,从第i 行来看,它表示第i 个人去干第j 项工作效率(相对)最好。
而从第j 列来看,这个0表示第j 项工作以第i 人来干效率(相对)最高。
定义:在效率矩阵C 中,有一组在不同行不同列的零元素,称为独立零元素组,此时每个元素称为独立零元素。
例2: 已知 C=⎪⎪⎪⎪⎪⎭⎫⎝⎛0084765000320205则{12c =0,24c =0,31c =0,43c =0}是一个独立零元素组,12c =0,24c =0,31c =0,43c =0分别称为独立零元素。
{12c =0,23c =0,31c =0,44c =0}也是一个独立零元素组,而{14c =0,23c =0,31c =0,44c =0}就不是一个独立零元素组,因为14c =0与44c =0这两个零元素位于同一列中。
根据以上对效率矩阵中零元素的分析,对效率矩阵C 中出现的的独立零元素组中零元素所处的位置,在决策变量矩阵中令相应的ijx =1,其余的ijx =0。
就可找到指派问题的一个最优解。
就上例中X (1)=⎪⎪⎪⎪⎪⎭⎫⎝⎛0100000110000010,就是一个最优解。
同理X (2)=⎪⎪⎪⎪⎪⎭⎫⎝⎛1000000101000010也是一个最优解。
但是在有的问题中发现效率矩阵C 中独立零元素的个数不够n 个,这样就无法求出最优指派方案,需作进一步的分析。
首先给出下述定理。
定理2 效率矩阵C 中独立零元素的最多个数等于能覆盖所有零元素的最少直线数。
我们不证它,说一下意思: 例3:已知矩阵 C 1=⎪⎪⎪⎪⎪⎭⎫⎝⎛0084765000320205,C 2=⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛5636040084275500003220205,C 3=⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛341404008653300003420207分别用最少直线去覆盖各自矩阵中的零元素: C 1=⎪⎪⎪⎪⎪⎭⎫⎝⎛0084765000320205, C 2=⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛5636040084275500003220205, C 3=⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛341404008653300003420207 可见,C 1最少需要4条线,C 2最少需要4条线,C 3最少需要5条线,方能划掉矩阵中所有的零。
即它们独立零元素组中零元素最多分别为4,4,5。
三. 匈牙利法求解步骤:我们以例题来说明指派问题如何求解: 例4 给定效率矩阵 C= ⎪⎪⎪⎪⎪⎭⎫⎝⎛9118713161491514410413152求解该指派问题。
解:ⅰ)变换效率矩阵,将各行各列都减去当前各行、各列中最小元素。
C=⎪⎪⎪⎪⎪⎭⎫ ⎝⎛9118713161491514410413152⎪⎪⎪⎪⎪⎭⎫⎝⎛24104750111006211130行变换24 97min列变换⎪⎪⎪⎪⎪⎭⎫ ⎝⎛00102350960607130= C '这样得到的新矩阵C '中,每行每列都必然出现零元素。
ⅱ)用圈0法求出新矩阵C '中独立零元素。
(1)进行行检验对C '进行逐行检验,对每行只有一个未标记的零元素时,用○记号将该零元素圈起。
然后将被圈起的零元素所在的列的其它未标记的零元素用记号×划去。
如C '中第2行、第3行都只有一个未标记的零元素,用○分别将它们圈起。
然后用×划去第1列其它未被标记的零元素(第2列没有),见C '' C '⎪⎪⎪⎪⎪⎭⎫⎝⎛00102350960607130=C ''在第i 行只有一个零元素ijc =0时,表示第i 人干第j 件工作效率最好。
因此优先指派第i 人干第j 项工作,而划去第j 列其它未标记的零元素,表示第j 项工作不再指派其它人去干(即使其它Min 0 0 4 2人干该项工作也相对有最好的效率)。