第五章 匈牙利法与最佳指派问题
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一般地,当指派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个人完成第项任务所消耗的资源(一般指时
间或费用等),称之为价值系数.
本例经过反复的行、列检验后得到如下矩阵:
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元素的最少直线。
情况二:存在未标记的0元素,但它们所在行和列中 ,未标记的0元素均至少有2个.
情况三:不存在未标记的0元素,但△的个数m<n.
4、如果情况一出现,则得一完整的最优分配方案, 可停止计算;如果情况二出现,可标记△到任何一个0元 素上,再将其同行、同列的其它0元素上标记,然后返回 步骤“第二步1”;如果情况三出现,则转到“第三步”。
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
本例题中,给第2步所得矩阵的第5行打√号,再给 第1列打√号,然后给第3行打√号.分别对该矩阵的第1、 2、4行画一横线,而对第1列画一纵线.即得到覆盖当前 所有0元素的最少直线.此矩阵如下:
第四步:对上步所得矩阵进行变换,以增加其0元 素.
从没被任何直线覆盖的各元素中找出最小元素,逐 个将打√号的行的各元素都减去这个最小元素,而打√ 号的列的各元素都加上这个元素,以保证打√号的行中 的0元素不变为负值而仍为0元素.
工作.因各人对不同文字的熟悉程度不一样,所需工作 时间(单位:天)也不同(见下表).问应指派哪一个 人去完成哪一项工作才能使花费的总时间最短?
解:对于某个人来讲,要么做某项工作,比如“译 英”要么不做,二者必居其一,换句话说,每个人与每 项工作之间只有两种状态:“做”或“不做”为此我们 设变量:
1 , xij 0 ,
nn
为价值系
数矩阵的新的指派问题的最优解与原指派问题的最优解
相同,但其最优值比原来减小 k.
利用上述性质,可使原价值系数矩阵变为含有很多0
元素的新系数矩阵,而其最优解保持不变,在系数矩阵
bij
nn
中,我们关心位于不同行不同列的0元素,以下简称
为独立0元素,若能在系数矩阵中得到n个独立的0元素,
则令解矩阵中对应这n个独立0元素的变量取值为1,其它
1 1
x1 3
x23
x3 3
1
上述6个方程以及xij 为0-1变量就构成了本问题的约束 条件,而目标为所消耗的总时间最少,因而目标函数为:
min z 2x11 15x12 13x13 10x21 4x22 14x23 9x31 14x32 16x33
这是依本例实际问题而建立的线性规划模型.
间为
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
第 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
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元素时为止.
此模型称为指派问题的标准形式。
第二节 标准指派问题的匈牙利法
匈牙利法的基本原理 匈牙利法的求解步骤
一、匈牙利法的基本原理
1、指派问题最优解的性质
假设
cij
nn
是指派问题的价值系数矩阵,现将它的某
一行(或某一列)的各个元素都减去一个常数 k(k可为
正,也可为负),得到矩阵
bij nn.那么以
bij
第五章 匈牙利法与 最佳指派问题
什么是最佳指派问题?
最佳指派(或分配)问题是经济计划工作中经常遇到
的一个问题.比如,当某一个部门或某一个企业的生产任 务已经确定,如何分配给它们所属的单位,使得完成这些 任务所需费用最小(或效益最大).分配问题是较简单的 线性规划问题,也是运输问题的一个特例,当然可以用线 性规划的单纯形法加以求解.然而,使用本章介绍的方法 ——匈牙利法去求解,效果会更好,该方法的得名是因为
变量取值为0,就可以得到原指派问题的最优解.
2、关于矩阵中0元素的定理
系数矩阵中独立0元素的最多个数等于能覆盖所有0 元素的最少直线数.
二、匈牙利法的求解步骤
例1 有5个人去完成5项任务.每个人只能完成1项任 务,每项任务也只能由1个人完成,价值系数矩阵如下表 所示(单位:天).问如何分配才能使完成任务的总时 间最少?
cij
nn
为价值
系数矩阵的指派问题与以
bij
nn
为价值系数矩阵的指派问
题同时达到最优,且有相同的最优解.经过上述转换,
即可将极大化问题变为极小化问题.
二、价值系数矩阵中存在负元素
若价值系数矩阵 的第 cij nn i行(或第 列j )存在负元
素,则第 i行(或第 j列)每个元素都减去该行的最小元
M 12 bij M cij 12 cij
匈牙利数学家狄·考尼格(D·Konig)为发展这个方法证
明了主要定理.
本章主要内容
第一节 最佳指派问题的线性规划模型 第二节 标准指派问题的匈牙利法 第三节 非标准指派问题
第一节 最佳指派问题的LP模型
例1 有一份资料需从汉语译成英、日、俄三种文字
,现有A、B、C三人,每人需完成且只完成其中的一种
非标准指派问题:
目标函数为求极大值的问题 价值系数矩阵中存在负元素 价值系数矩阵不是方阵
一、目标函数为求极大值的问题
当目标函数为:
nn
max z
cij xij
i1 j1
时,记 M max 1i, jn
cij
bij M cij i, j 1,2, , n
得到一新矩阵
bij
nn
.由最优解的性质知,以
其中 E、F为虚拟任务.
用匈牙利法求得最优解为:
0 1 0 0 0 0
0 0 0 1 0 0
0 0 1 0 0 0
xij 0 0 0 0 1 0
1 0 0 0 0 0
0 0 0 0 0 1
即甲完成工作B、D;乙完成工作 C;丙完成工作 A ,可使 完成任务所需时间为最少,此时
min z 1015108 43
0 3 5 3 0 3 5 3
5
4 0 0 3
5
4
3
5 0 0 0 0 5
0
5
9
5 8
5 9 5 8
14 0 0 8 9 14 8 9
于是最优解为:
0 0 0 0 1
0 0 1 0 0
xij
0
0
0
1
0
1 0 0 0 0
0 1 0 0 0
最优值为:
min z (1) 2 2 (5) (2) 4
将矩阵中标记的△、还原为0,去掉√及直线,返 回“第二步”对矩阵进行行、列检验.
本例中,未被任何直线覆盖过的各元素中的最小元 素为2,将第3、5行各元素分别减去2,将第一列各元素分 别都加上2,并将矩阵中标记的△、 还原为0,去掉√及 直线由此得到如下矩阵 :
7 0 2 0 2
4
3
0
0
0
0 8 3 5 3
第一步:变换价值系数矩阵,使各行各列都出现0元 素
1、将系数矩阵的每行都减去本行的最小元素; 2、将上步所得新的价值系数矩阵的每列都减去本列 的最小元素.
12 7 9 7 9 7
8
9
6
6
6
6
Cij
nn
7 15
17 14
12 6
14 6
12 10
7 6
4 10 7 10 6 4
5 0 2 0 2
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
2、进行列检验 与行检验类似,从第一列开始逐列检查,当遇到只 含有一个未标记的0元素的一列时,就在该0元素上标记 △,并在该0元素所在行的其它0元素上标记 . 重复上述列检验,直到每一列都没有未标记的0元素 或至少有两个未标记的0元素时为止.
3、反复进行1、2直到下列三种情况之一出现:
情况一:每一行均标记有△,令△的个数为m,则有 m=n.
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,最少时
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元素 标记△.于是得到:
三、价值系数矩阵不是方阵
若记人员(或设备)数为m ,任务(或加工件)数 为n ,所谓价值系数矩阵不是方阵,即 m n,此时,需 分情况讨论:
mn
mn
1、m n
(1)m n 且 n项任务又都必须完成时:此时,必有 某个(些)人完成一项以上的任务,这类问题可按例2的 方法处理.
例2 有三人分配去完成四项任务,且四项任务都必 须完成,假定每个人至多完成2项任务.试求使完成任务 的总时间为最少的分配方案.
(2)若 m n,但每人只能完成一项任务.此时一定 有某个(些)任务没有人去完成,这类问题可按例3的方 法处理.
例3 某设备公司有3台设备,可租给 A 、B 、C、D、E五 项工程使用,各设备用于各项工程创造的利润如表所示。 问将哪一台设备租给哪一项工程,才能使创造的总利润 为最大?
解:先把极大化问题变为极小化问题,记
素,即可使价值系数矩阵 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