匈牙利法求解指派问题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第i人只能完成一项任务。
满足约束条件的解称为可行解可写成 矩阵形式:
0100
0010 X=
1000
2000
称为解矩阵其 各行各列元素 之和为1。
匈牙利算法依据:
对同一工作i来说,所有机床的效 率都提高或降低同一常数,不会 影响最优分配;同样,对同一机 床j来说,做所有工作的效率都提高 或降低同一常数,也不会影响最 优分配。
任务 E
J
G
来自百度文库
R
人员

2
15 13
4
乙 10 4 14 15

9
14 16 13

7
8 11 9
匈牙利算法的步骤:
第一步:使分配问题的系数矩阵经 变换,在各行各列中都出现0元素:
➢从系数矩阵的每行元素减去该行的 最小元素。
➢再从所得系数矩阵的每列元素减去 该列的最小元素。
若某行已经有0元素,就不必再减了。
2 15 13 4 2 10 4 14 15 4 (cij)= 9 14 16 13 9 7 8 11 9 7
0 13 7 0 606 9 053 2 010 0
0 13 11 2 6 0 10 11 057 4 014 2
42
第二步:进行试分配,以寻找最优解。
➢从只有一个0元素的行(或列)开 始,给这个0元素加圈,记,然后 划去所在的列(或行)的其他0元 素,记作Ø。
Ø 6365
➢从只有一个0元素的列开始, 给这个0元素加圈,记
52Ø 2 2 3 0 0 10 5 7 2
98004
Ø 6365
然后划去所在的行的其他0元素, 记作Ø。
52Ø 2 2 3Ø Ø 10 5 7 2
98004
Ø 6365
➢从只有一个0元素的列开始, 给这个0元素加圈,记
52Ø 2 2 3Ø Ø 10 5 7 2 9 80 4 Ø 6365
成第j 项任务。
分配问题的数学模型:
Min Z= cijxij
s.t. xij =1 (j=1,2……n) xij =1 (i=1,2……n)
xij 0或1
(i=1,2…..n; j=1,2……n)
xij =1 (j=1,2……n)表示
第j 项任务只能由一人去完成。
xij =1 (i=1,2……n)
4
乙 10 4 14 15

9
14 16 13

7
8 11 9
类似有:有n项加工任务,怎样 分配到n台机床上分别完成;有n 条航线,怎样指定n艘船分别去 航行….. 等。
表中数据称为效益矩阵或系数矩 阵,其元素大于零,表示分配第 i人去完成第j 项任务时的效益 (或时间、成本等)。
引入0-1变量xij=1分配第i人去完 成第j 项任务,xij=0不分配第i人去完
•匈牙利法基本思想:通过变换修改系数矩阵 的行和列的元素,使在每一行或每一列中至少 有一个0元素,直到在不同行、不同列中至少有 一个0元素,从而得到与这些0元素相对应的一 个完全分配方案。
•关键:寻找n个独立0元素。
例5 有一份中文说明书,需翻译 成英、日、德、俄四种文字,分 别记作E、J、G、R,现有甲、 乙、丙、丁四人,他们将中文说 明书翻译成英、日、德、俄四种 文字所需时间如下,问应该如何 分配工作,使所需总时间最少?
然后划去所在的列的其他0 元素,记作Ø。
Ø 13 7 0 6 6 9 5 3 2 Ø1 0 0
➢给只有一个0元素的列的0 元素加圈,记。
Ø 13 7 0 6 6 9 5 3 2 Ø 1 0
然后划去所在的行的其他0元 素,记作Ø
Ø 13 7 0 6 6 9 5 3 2 Ø 1 Ø
➢给最后一个0元素加圈, 记。
➢给只有一个0元素的列(或行)的0 元素加圈,记,然后划去所在的 行(或列)的其他0元素,记作Ø。
➢反复进行上述两步,直到所有的0 元素都被圈出和划掉为止。
➢若还有没有划圈的0元素,且同行 (或列)的0元素至少有二个,从剩有 0元素最少的行(或列)开始,比较这 行各0元素所在列中0元素的数目,选 择0元素少的那列的0元素加圈,然后 划掉同行同列的其他0元素,可反复进 行,直到所有的0元素都被圈出和划掉 为止。
指派问题(分配问题)
(Assignment Problem)
例5 有一份中文说明书,需翻译 成英、日、德、俄四种文字,分 别记作E、J、G、R,现有甲、 乙、丙、丁四人,他们将中文说 明书翻译成英、日、德、俄四种 文字所需时间如下,问应该如何 分配工作,使所需总时间最少?
任务 E
J
G
R
人员

2
15 13
➢若元素的数目m等于矩阵阶数n, 那么这分配问题的最优解已得到。若 m<n,则转下一步。
➢从只有一个0元素的行(或列)开 始,给这个0元素加圈,记。
0 13 7 0
66 9
053 2 010 0
➢从只有一个0元素的行(或列) 开始,给这个0元素加圈,记,
0 13 7 0
66 9 5 3 2
010 0
Ø 13 7 6 6 9 5 3 2 Ø 1 Ø
可见m=n=4,得到最优解。
0001 0100 1000 0010
即甲译俄文、乙译日文、丙 译英文、丁译德文所需时间 最少。Z=28小时
例6 分配问题效率矩阵
任务 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 9 7 89666 6 7 17 12 14 9 7 15 14 6 6 10 6 4 10 7 10 9 4
50202 23000 0 10 5 7 2 98004 06365
➢从只有一个0元素的行开始,给 这个0元素加圈,记
50202 23000
10 5 7 2
98004 06365
然后划去所在的行的其他0元素, 记作Ø。
52Ø 2 2 3Ø Ø 10 5 7 2 9 8 Ø 4 Ø 6365
的个数m=4,而n=5, m<n,转下 一步。
52Ø 2 2 3Ø Ø 10 5 7 2 9 8 Ø 4 Ø 6365
然后划去所在的列的其他0元素, 记作Ø。
50202 23000
10 5 7 2
98004
Ø 6365
➢从只有一个0元素的列开始, 给这个0元素加圈,记
52 0 2
23000
10 5 7 2
98004
Ø 6365
然后划去所在的行的其他0元素, 记作Ø。
52Ø 2
23000
10 5 7 2
98004
相关文档
最新文档