第五节 指派问题

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C 或 (cij )
目标函数:
min S 2 x11 15 x12 13 x13 14 x14
10 x21 4 x22 14 x23 15 x24
9 x31 14 x32 16 x33 13 x34
7 x41 8 x42 11 x43 9 x44
2 14 7 2
10 3 8 13
源自文库4 8 5 6
7 7 5 7
0 8 0 11 2 3 11 0

2 5 0 4
5 4 0 5
√ √
第三步:作覆盖所有零元素的最少数量的直线 步骤如下: (1) 对没有△ 的行打√; (2) 对打√的行上有Φ元素的列打√; (3) 再对打√的列上有△的行打√; (4) 重复(2)、 (3) ,直到无法进行为止; (5) 对没有打√的行和打√的列划线.
4
若指派第i人完成第j项任务 若不指派第i人完成第j项任务
每人只承担一项任务 承担
则有:
xij =1 , j 1, 2, 3,4
j 1 4
i 1
每项任务只能一人 x 1 , i 1, 2, 3,4 ij
任务 人员 甲 乙 丙 丁
E
2
J
G
R
4
15
4 14 8
显然, 解矩阵具有这样的特点:每行每列 都只有一个1,其余都是零元素.
5.5.2
指派问题的解法 —匈牙利法
匈牙利法是1955年库恩(W.W.Kuhn)提出的, 他引用了匈牙利数学家狄康尼格(D.Kö nig) 的一个关于矩阵中0元素的定理 ,故称为匈牙利 法。
定理 如果效益矩阵 C 的每一行的各元素都 减去一个常数 a i ,每一列的各元素也都减去 一个常数 bj ,得到一个新矩阵 C ,则以新 矩阵为效益矩阵的指派问题和原问题有相同 的最优解.
2 14 7 2
10 3 8 13
4 8 5 6
7 7 5 7
0 8 0 11 2 3 11 0

2 5 0 4
5 4 0 5
√ √
第四步:修改缩减矩阵,使每行每列都至少 有一个△元素;方法如下: (1) 对没有直线覆盖的部分找出最小元素; (2) 让打√行的各元素都减去这个最小元素; (3) 让打√列的各元素都加上这个最小元素;
5.5 指派问题 5.5.1 指派问题的数学模型
指派问题的一般描述: n项任务,需n个人去完成,一人完成一项; 由于任务的性质和每个人的技术专长不同, 从而不同的人完成不同任务的效率也不同. 问:怎样分配任务能使总效率最高?
例 5.5 有一份中文说明书,需译成英、日、 德、俄四种文字。分别记作 E 、 J 、 G 、 R。 现有甲、乙、丙、丁四人,他们将中文说明 书翻译成不同语种的说明书所需时间如下表 所示。问应如何指派才能使所需总时间最少?
n
目标函数的系数可以写成矩阵的形式,称 为系数矩阵或收益矩阵.
如例1的收益矩阵为
2 15 13 4 10 4 14 15 C 9 14 16 13 8 11 9 7
满足约束条件的可行解也可以写成矩阵形 式,称为解矩阵.
如例1的解矩阵有
( x )ij 0 0 0 1 0 1 0 0 或 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 或 1 0 0 1 0 0 0 1 1 0 0 0
X 或 ( xij ) 2 15 13 14 x11 x21 x31 x41 x x x x 10 4 14 15 g 12 22 32 42 9 14 16 13 x13 x23 x33 x43 7 8 11 9 x x x x 14 24 34 44
13
14 16 11
10 9 7
15 13 9
目标函数:
min S 2 x11 15 x12 13 x13 14 x14
10 x21 4 x22 14 x23 15 x24
9 x31 14 x32 16 x33 13 x34
7 x41 8 x42 11 x43 9 x44
和行同样的操作. 3. 重复1、2 步,直到每行每 列都只有一个“△”符号. 解.

0 0 1 0
0 1 0 0
0 0 0 1
1 0 0 0
4. 把“△”换成1,其余的换成0.即得最优
若经过前两步没有得到最优解,则接着进行 第三步:
第三步:作覆盖所有零元素的最少数量的直线 步骤如下:
S ai xij b j xij
i 1 n j 1 j 1 i 1
n
n
n
n
1
S ai b j
i 1 j 1
n
匈牙利法的基本步骤是: 1.从效益矩阵的各行减去这一行的最小元素, 再从各列减去这一列的最小元素.
2 15 13 4 2 0 13 11 2 10 4 14 15 4 6 0 10 11 C 9 14 16 13 9 0 5 7 4 4 2 7 8 11 9 7 0 1 4 2 0 13 7 0 6 0 6 9 0 5 3 2 0 1 0 0
任务 人员 甲 乙 丙 丁
E
2
J
G
R
4
15
4 14 8
13
14 16 11
10 9 7
15 13 9
任务 人员 甲 乙 丙 丁
E
2
J
G
R
4
15
4 14 8
13
14 16 11
10 9 7
15 13 9
解 引进变量 xij (i , j 1, 2, 3,4) ,使得
1 , xij 0 ,
0 7 15 13 2 0 10 4 14 15 min 1 6 14 16 13 8 0 9 0 7
0 1 0 0
0 0 0 1
1 0 0 0

(2)出现死循环时灵活处理
例5.7 求解指派问题,系数矩阵为
√ √
x13 x22 x34 x41 1
5.5.3 一般情况的处理
(1)求极大值的指派问题
max S cij xij
j 1 i 1 n n 具有相同 min S ( cij ) xij j 1 i 1 的最优解 n n min w ( M cij ) xij
C 或 (cij )
目标函数:
min S
c
j 1 i 1
4
4
ij
xij
指派问题的一般数学模型为
min S cij xij
j 1 i 1 n n
j 1 n xij 1 , i 1,L , n i 1 xij 0,1
xij =1 , j 1,L , n
0 13 4 0
6 0 3 9
0 5 0 2
3 4 0 3

0 0 0 1
0 1 0 0
1 0 0 0
0 0 1 0

第四步:修改缩减矩阵,使每行每列都至少 有一个△元素;方法如下: (1) 对没有直线覆盖的部分找出最小元素; (2) 让打√行的各元素都减去这个最小元素; (3) 让打√列的各元素都加上这个最小元素; 若经过此步骤仍然没有得到最优解,则返回 第三步重复进行,直到得到最优解.
找不同行不同列的0元素的方法如下: 1. 从第一行开始检查,若某 0 13 行只有一个 0 元素,则在该 0 6 0 元素上打上“△”符号,然 0 5 后划去同行同列的其它 0 元 1 0 素,记作“Φ ”.
2. 再从第一列开始,实施
7 6 3 0
0 9 2 0
证明
S cij xij S cij xij
j 1 i 1 n n j 1 i 1 n n
n
n
(cij ai b j ) xij cij xij ai xij b j xij
j 1 i 1 j 1 i 1 j 1 i 1 j 1 i 1 n n n n n n
0 13 4 0
6 0 3 9
0 5 0 2
3 4 0 3

0 8 0 11 2 3 11 0

2 5 0 4
5 4 0 5
√ √
第四步:修改缩减矩阵,使每行每列都至少 有一个△元素;方法如下: (1) 对没有直线覆盖的部分找出最小元素; (2) 让打√行的各元素都减去这个最小元素; (3) 让打√列的各元素都加上这个最小元素;
j 1 i 1
n
n
M max{cij }
3 14 9 1 6 12 2 1 max 10 2 0 3 9 8 16 7 16 9 16 1 16 3 16 14 16 6 16 12 16 2 16 1 min 16 10 16 2 16 0 16 3 16 9 16 8 16 16 16 7
请练习:
1、用匈牙利法求解下列指派问题,效益 矩阵为:
9 10 12 7 13 12 16 17 15 16 14 15 11 12 15 16
解:
9 10 12 7 0 7 12 13 12 16 17 1 15 16 14 15 14 1 11 12 15 16 11 0 3 4 0 4
0 1 1 1 C= 1 1 1 0

0
0 0 0 1 1 1 1

1 0 0 0 1 1 1 1
1 0 0 0 1 1 1 1
1 1 0 0 1 1 1 1

0 0 0 0 0 0
2 0 2 1
3 4 0 4
5 5 1 5 1
0 1 1 0

2 0 2 1
0 1 2 3 √ 0 1 0 1 4 √ √ 2 0 4 4 2 0 2 2 4 2 2 4 4 0 0 0 0 0 √ 0 0 3 3 0 0 1 1 4√
X 或 ( xij ) 2 15 13 14 x11 x21 x31 x41 x x x x 10 4 14 15 g 12 22 32 42 9 14 16 13 x13 x23 x33 x43 7 8 11 9 x x x x 14 24 34 44
第二步:进行试指派,以寻求最优解 经过第一步后,矩阵的每行每列都有了0 元素, 但我们希望找出n个位于不同行不同列的0 元素, 如果能找到,我们就以把这些元素写成1, 令其余的元素写成0 ,即得问题的最优解.
0 13 7 6 0 6 LL 0 5 3 0 1 0 0 9 2 0
相关文档
最新文档