5-3指派问题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
主讲教师 武小平
西安邮电大学 现代邮政学院
Xi'an post and telecommunications university modern post College
第五章 指派问题
主要内容
2指派问题的最优解
运
筹学1指派问题及其模型3
匈牙利算法及其应用
1指派问题及其模型
运筹学【例1】某厂拟派4个维修小组
去维修4台机车,他们完成不
同工作所需时间c ij(i,j
=1,2,3,4)如表1所示。
如何指
派每个小组的工作,才能使完
成所有任务的总时间最少
?
表1
1指派问题及其模型
运筹
学
表2
运筹
学
任务约束
人员约束
事
人2指派问题及其模型
运筹
学2
指派问题及其模型
运筹学
指派问题的最优解
2
如果在效率矩阵中找到n个独立0元素的位置,对应着让变量矩阵中的位置取1,那么就获得了
该指派问题的最优解。
表3
运筹学【定理1】如果从分配问题效率矩阵[c ij ]的每一行元素中分别减去(或加上)一个常数u i (被称为该行的位势,行最小),然后从每一列分别减去(或加上)一个常数v j (称为该列的位势,列最小),得到一个新的效率矩阵[b ij ],其中b ij =c ij -u i -v j ,则[b ij ]的最优解等价于[c ij ]的最优解,这里c ij 、b ij 均非负。
1.匈牙利算法的有关定理
运
筹学 第一步:变换效率矩阵,将各行各列都减去当前各行、各列中最小元素,使其每行每列都出现0元素。
⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛6 10 12 9 610 6 14 7 67 8 12 9 610 14 17 9 712 15 7 8 4⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛⇒0 4 3 2 04 0 5 0 01 2 3 2 03 7 7 1 08 11 0 3 0⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛⇒0 4 6 3 04 0 8 1 01 2 6 3 03 7 01 2 08 11 3 4 066674min 00310min 此时每行及每列中肯定都有0元素
表4
表5表6
第二步:标记新矩阵的独立零元素,进行试指派。
1)行检验 对变换后的效率矩阵进行逐行检验,若某行只有一个未标记的零元素时,用“O”将该零元素做标记(分配此人做此事),然后将被标记的零元素所在的列的其它未标记的零元素用“/” 标记(这件事情不能在让别人做了)。
2)列检验 与行检验过程类似,对进行了行检验的矩阵后逐列进行检验,对每列只有一个未被标记的零元素,用“O”将该零元素做一标记,然后将该元素所在行的其他未被标记的零元素打“/” 标记(此人再不能做别的事)。
重复上述检验,直到都没有未被标记的零元素或有两个未被标记的零元素为止。
第三步,最优性检验
①每行均有标记“O”出现,“O”的个数m 恰好等于n;(获得最优解,计算终止)
②不存在未被标记过的零元素,“O”的个数m<n。
从重新利用匈牙利算法进行二次指派,直到每行均有标记“O”出现,“O”的个数m 恰好等于n。
⎪⎪⎪⎪⎪⎪⎭
⎫ ⎝⎛04320405001232037710811030圈0即独立零元素
第四步:作最少直线覆盖当前所有零元素。
1)对新矩阵中所有不含“O”元素的行打√ ;
2)对打√的行中,所有零元素所在的列打√;
3)对所有打√列中标记“O”元素所在行打√;
4)重复上述2),3)步,直到不能进一步打√为止; 5)对未打√的每一行划一直线,对已打√的每一
列划一纵线,即得到覆盖当前0元素的最少直线数。
⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛04320405001232037710811030
第五步:对矩阵未被直线覆盖过的元素中找最小元素,将打√行的各元素减去这个最小元素,将打√列的各元素加上这个最小元素(以避免打√行中出现负元素),这样就增加了零元素的个数。
⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡--04320405000121126601811030⎥⎥⎥⎥⎥⎥⎦
⎤⎢⎢⎢⎢⎢⎢⎣⎡04321405010121026600811031打√列的各元素加上1打√行的各元素减去1
故可得到指派问题的最优解X ,这样安排能使总的建造费用最少,建造费用为z =7+9+6+6+6=34(万元)。
表7
表7
谢谢!。