当前位置:
文档之家› 第五章 匈牙利法与最佳指派问题
第五章 匈牙利法与最佳指派问题
7 2 2
4
3
8 3 5 3
11 8
4
4 1 4
情况一出现,即得到了最优解,其相应的解矩阵为:
0 1 0 0 0
0 0 1 0 0
xij
1
0
0
0
0
0 0 0 1 0
0 0 0 0 1
由此得知最优指派方案为甲完成任务B,乙完成任务
C,丙完成任务A,丁完成任务D,戊完成任务E,最少时
间为
min z 7 6 7 6 6 32
而总的最少时间为32天.
当然,由于方法中的第二步4中的情况二的出现,造成 指派问题的最优解常常是不唯一的,但不同最优解的 最优值总是相同的.
第三节 非标准指派问题
前一节的匈牙利法只适用于目标函数为极小、价值 系数矩阵为方阵且价值系数矩阵中元素均为非负的情况。 当指派问题不满足上述三个条件时,就应先化成标准的 指派问题,然后再用匈牙利法求解.
解:
ABC DEF
甲 16 10 12 15 0 0 8 2
甲 16 10 12 15 0 0
8
2
乙 11 12 10 18 0 0 3 2 3
乙
11
12
10
18
0
0
3
2
3
丙 8 17 13 16 0 0 7 3 1
丙
8
17 13 16
0
0
7
3
1
8 10 10 15
本例经过反复的行、列检验后得到如下矩阵:
5 2 2
2
3
10 5 7 5
9
8
4
6 3 6 2
情况三出现,亦即未得到完全分配方案,求解过程 按以下步骤继续进行。
第三步:作最少的直线覆盖当前所有0元素(包括标 记上△和 的)
1.对所有不含△的行的右侧打√号; 2.对已打√号的行中含有 元素的列的下侧打√号 3.对已打√号的列中含有△的行的右侧打√号; 4、重复上述步骤“第三步2”“第三步3”,直到不 能进一步打√为止; 5、对没打√号的每一行画一横线,而对于已打√号 的每列画一纵线,即得到覆盖当前所有0元素的最少直线。
3
6
1
0
3
cij
5 5
4 4
3 2 2 2 3 2 1 0 0
7
2
5
5
0
9 12
7 10
8 2 3 4 5 3 11 1 0 7 8
1
0 6 8 5 2 6 8 5 2
3
5
1
0
3
3
5
1
3
3 1 1 0 0 3 1 1
0
8 12 7 10
8 12
第五章 匈牙利法与 最佳指派问题
什么是最佳指派问题?
最佳指派(或分配)问题是经济计划工作中经常遇到
的一个问题.比如,当某一个部门或某一个企业的生产任 务已经确定,如何分配给它们所属的单位,使得完成这些 任务所需费用最小(或效益最大).分配问题是较简单的 线性规划问题,也是运输问题的一个特例,当然可以用线 性规划的单纯形法加以求解.然而,使用本章介绍的方法 ——匈牙利法去求解,效果会更好,该方法的得名是因为
此模型称为指派问题的标准形式。
第二节 标准指派问题的匈牙利法
匈牙利法的基本原理 匈牙利法的求解步骤
一、匈牙利法的基本原理
1、指派问题最优解的性质
假设
cij
nn
是指派问题的价值系数矩阵,现将它的某
一行(或某一列)的各个元素都减去一个常数 k(k可为
正,也可为负),得到矩阵
bij nn.那么以
bij
情况二:存在未标记的0元素,但它们所在行和列中 ,未标记的0元素均至少有2个.
情况三:不存在未标记的0元素,但△的个数m<n.
4、如果情况一出现,则得一完整的最优分配方案, 可停止计算;如果情况二出现,可标记△到任何一个0元 素上,再将其同行、同列的其它0元素上标记,然后返回 步骤“第二步1”;如果情况三出现,则转到“第三步”。
一般地,当指派n个人去完成n项任务时,其数学模
型如下:
nn
min z
cij xij
i1 j1
n
xij 1
(i 1,2, ,n)
j1
s.t.
n
xij 1
( j 1,2, ,n)
i1
xij 0或1
(5.1.1)
其中 cij为第 i个人完成第项任务所消耗的资源(一般指时
间或费用等),称之为价值系数.
非标准指派问题:
目标函数为求极大值的问题 价值系数矩阵中存在负元素 价值系数矩阵不是方阵
一、目标函数为求极大值的问题
当目标函数为:
nn
max z
cij xij
i1 j1
时,记 M max 1i, jn
cij
bij M cij i, j 1,2, , n
得到一新矩阵
bij
nn
.由最优解的性质知,以
2 0
3 10
0 5
0 7
0 5
9 8 0 0 4
0 6 3 6 2
第二步:进行试指派,以寻求最优解 1.进行行检验 从第一行开始逐行检查,当遇到只含有一个未标记 的0元素的一行时,就在该0元素上标记符号△,这表示 分配△所在行的那个人担任△所在列的那个任务.然后 在该0元素所在列的其它0元素上标记 ,以免对此任务 再进行分配. 重复上述行检验,直到每一行都没有未标记的0元素 或至少有两个未标记的0元素时为止.
7
10
11 0 0 7 8 11 7 8
0 4 6 3 0 4 6 3 4 6 3
5
5
1
0 3
5
5
1
3
5
5
1
3
5 1 1 0 0 5 1 1 5 1 1
0
6 10
5 8
6 10 5
8
6 10
5
8
13 0 0 7 8 13 7 8 13 7 8
第 j 项工作由第 i 人完成 第 j 项工作不由第 i 人完成
此时 xij 称为0-1变量.
由于每个人只能完成一项工作,因而有:
x1 1 x21
x1 2 x22
x1 3 x23
1 1
x31 x32 x33 1
又由于每项工作只能由一个人完成,因而又有:
xx1121
x21 x22
x3 1 x3 2
素,即可使价值系数矩阵 cij nn满足非负条件,然后可以用
匈牙利法求解.
例1 求价值系数矩阵为如下所示的指派问题的最小 解.
3 4 5 2 1
4
cij
5
7 4
5 4
2
1
4
3 2 2
7
2
5
8 2 3 4 5
解:
3 4 5 2 1 3 0 7 8 5 2
4
7
2
1
4
1
本例题中,给第2步所得矩阵的第5行打√号,再给 第1列打√号,然后给第3行打√号.分别对该矩阵的第1、 2、4行画一横线,而对第1列画一纵线.即得到覆盖当前 所有0元素的最少直线.此矩阵如下:
第四步:对上步所得矩阵进行变换,以增加其0元 素.
从没被任何直线覆盖的各元素中找出最小元素,逐 个将打√号的行的各元素都减去这个最小元素,而打√ 号的列的各元素都加上这个元素,以保证打√号的行中 的0元素不变为负值而仍为0元素.
变量取值为0,就可以得到原指派问题的最优解.
2、关于矩阵中0元素的定理
系数矩阵中独立0元素的最多个数等于能覆盖所有0 元素的最少直线数.
二、匈牙利法的求解步骤
例1 有5个人去完成5项任务.每个人只能完成1项任 务,每项任务也只能由1个人完成,价值系数矩阵如下表 所示(单位:天).问如何分配才能使完成任务的总时 间最少?
工作.因各人对不同文字的熟悉程度不一样,所需工作 时间(单位:天)也不同(见下表).问应指派哪一个 人去完成哪一项工作才能使花费的总时间最短?
解:对于某个人来讲,要么做某项工作,比如“译 英”要么不做,二者必居其一,换句话说,每个人与每 项工作之间只有两种状态:“做”或“不做”为此我们 设变量:
1 , xij 0 ,
nn
为价值系
数矩阵的新的指派问题的最优解与原指派问题的最优解
相同,但其最优值比原来减小 k.
利用上述性质,可使原价值系数矩阵变为含有很多0
元素的新系数矩阵,而其最优解保持不变,在系数矩阵
bij
nn
中,我们关心位于不同行不同列的0元素,以下简称
为独立0元素,若能在系数矩阵中得到n个独立的0元素,
则令解矩阵中对应这n个独立0元素的变量取值为1,其它
匈牙利数学家狄·考尼格(D·Konig)为发展这个方法证
明了主要定理.
本章主要内容
第一节 最佳指派问题的线性规划模型 第二节 标准指派问题的匈牙利法 第三节 非标准指派问题
第一节 最佳指派问题的LP模型
例1 有一份资料需从汉语译成英、日、俄三种文字
,现有A、B、C三人,每人需完成且只完成其中的一种
11 8 0 0 4
0 4 1 4 0
返回“第二步”对矩阵进行行、列检验.得到如下 矩阵.
7 2 2
4
3
0
0
8 3 5 3
11 8 0
0
4
4 1 4
情况二出现.此时可以在四个0元素中任取一个,比 如第2行第3列的元素进行标记,然后将其所在行、列的 其它0元素上标记,再重新进行检验给第4行第4列的0元素 标记△.于是得到:
将矩阵中标记的△、还原为0,去掉√及直线,返 回“第二步”对矩阵进行行、列检验.