第五章-整数规划-第5节
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二、匈牙利法
库恩(W.W.Kuhn)于1955年提出了指派问题的解法,他引用了匈牙利数学 家康尼格(D.Konig)的关于矩阵中独立零元素的定理:系数矩阵中独立0元素 的最多个数等于能覆盖所有零元素的最小直线数,习惯上称之为匈牙利解法。
分配问题最优解的以下性质:若从成本矩阵(cij )的某行(或某列)各元素 分别减去该行(列)的最小元素,得到新矩阵(cij‘)。那么以(cij')为系数矩阵 求得的最优解和利用原系数矩阵求得的最优解相同。
◎
5 4 Ø
3 ◎ 2 2 3 ◎ 2 2
4 3 1 Ø ◎ 4 6 0
◎
5 4 Ø
3 0 2 2
3 0 0 5 0 4 4 0 6 0 4 1
0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0
新商店 建筑公司 A1 A2
B1
4 7
B2
8 9
B3
7 17
B4
15 14
B5
12 10
A3
A4 A5
6
6 6
9
7 9
12
14 12
8
6 10
7
10 6
解 引入0-1变量xij (i, j=1,2,3,4,5),令:
1,当Ai 承建B j时, xij 0,当Ai 不承建B j时。
任务
人员
A
6 4 3 5
B
7 5 1 9
C
11 9 10 8
D
2 8 4 2
甲 乙 丙 丁
求解过程如下:
第一步,变换系数矩阵: 6 7 11 2 2 4 4 5 9 8 4 0 (cij ) 3 1 10 4 1 2 5 9 8 2 2 3 第二步,试指派: 4
5 1 0 7 9 5 9 6 -5 0 4 3 0
4 0 2 3 5 1 0 7 4 0 4 1 0 4 3 0
5 4 ◎ ◎ 1 4 Ø 2 ◎ 4 3 Ø 3 7 1
找到 3 个独立零元素 但 m =3 <n=4
第五节 分配问题及匈牙利法 一、分配问题的一般提法
在实际中经常会遇到这样的问题,有 n 项不同的任 务,需要 n 个人分别完成其中的一项,但由于任务的 性质和各人的专长不同,因此各人去完成不同的任务 的效率(或花费的时间或费用)也就不同。于是产生 了一个问题,指派哪个人去完成哪项任务,可使完成 n 项任务的总效率最高(或所需时间最少)?这类问 题称为指派问题或分配问题。
时间表
任务 人员 甲 乙 丙 丁 E 2 10 9 7 J 15 4 14 8 G 13 14 16 11 R 4 15 13 9
分配表
任务 人员 甲 乙 丙 丁
合计
E 0 0 1 0 1
J 0 1 0 0 1
G 0 0 0 1 1
R 1 0 0 0 1
合计
1 1 1 1
即 x14=1,x22=1,x31=1,x43=1, 其余xij=0
xij 1 简写为: i 1 ( j =1,2,3,4,5)
5
(3)变量xij 必须等于0或1,即xij =0或1。 目标函数为:Min z 4 x11 8x12 10 x54 6 x55
设n个人被分配去做 n件工作,规定每个人只做一件工作 ,每 件工作只有一个人去做。已知第 i 个人去做第 j 件工作的的时 间或费用为cij (i =1, 2, …, n; j =1, 2, …, n)并假设cij ≥0。问应 如何分配才能使 时间或费用最少? 设决策变量 xij = 1 分配第i 个人去做第j 件工作
变换过程中的三种可能情况:
③较少的零:矩阵中所有零元素元素或被划去,或加圈◎号, 但加圈◎的零元素个数≤n; 例、有一份中文说明书,需译成英、日、德、俄四种文字, 分别记作A、B、C、D。现有甲、乙、丙、丁四人,他们将 中文说明书译成不同语种的说明书所需时间如下表所示, 问如何分派任务,可使总时间最少?
先列后行
Ø 0 6 0 ◎ Ø 0
13 ◎ 0 5 1
7 6 3 ◎ 0
◎ 0
9 2 Ø 0
0 0 1 0
0 1 0 0
0 0 0 1
1 0 0 0
2 15 10 4 9 14 7 8
13 14 16 11
4 15 13 9
此题情况:位于不同行不同列的零元素正好有四个。
(2)目标函数求极大
作一个新矩阵B=(bij),使bij=M-cij(通常取 M=max(cij))
练习:
费 工作
用
A
人员
B
C
D
E
甲
乙 丙
分配表
任务 人员 甲 乙 丙 丁
合计
E 0 0 1 0 1
J 1 0 0 0 1
G 0 0 0 1 1
R 0 1 0 0 1
合计
1 1 1 1
minZ=3+2+1+4=10(小时) 方法:未被划去的零元素之间存在闭合回路,沿着闭合回路的走向,对每个间 隔的零元素加圈◎号,使得加圈◎号元素个数=m
◎ 1 Ø 4 独立零元素的个数 2 ◎ 4 3 m 等于最少直线数 √ l,即 3 7 1 Ø l=m=3<n=4 √
第四步:变换矩阵(bij)以增加0元素
在没有被直线覆盖的所有元素中找出最小元素,然后打 √ 各行都减去这最小元素;打 √ 各列都加上这最小元素 (以保证系数矩阵中不出现负元素)。新系数矩阵的最 优解和原问题仍相同。转回第二步。
任务
人员
A 2
10 9 7
B 15
4 14 8
C 13
14 16 11
D 4
15 13 9
甲
乙 丙 丁
第一步:变换成本矩阵,使每行每列中至少出现一 个0元素
(1) 令(cij)的每行元素都减去该行的最小元素;
(2) 再从所得新系数矩阵的每列元素中减去该列的 最小元素。
2 10 9 7 15 4 14 8 13 14 16 11 4 15 13 9
此时得问题的最优解为:
minZ=4+4+9+11=28(小时)
变换过程中的三种可能情况:
①恰好的零:重复系数矩阵的每行都有一个加圈◎的零元素, 即加圈◎元素个数 =n,且位于不同行不同列,只要令对应加 圈◎零元素的xij=1,就找到了问题的最优解。(如前例)
变换过程中的三种可能情况:
②较多的零:加圈◎的零元素个数小于n,但未被划去的零元素之间存在闭合 回路,此时沿着闭合回路的走向,对每个间隔的零元素加圈◎ ,使得加圈◎ 元素个数=n,然后对所有加圈◎零元素所在列画一条直线。 min (0) 0 0 2 (0) 0 3 3 5 3 3 (3) a -行min 1 (0) 0 3 0 3 (2) 2 5 2 2 ij 0 4 0 5 1 5 1 6 1 (1) 0 0 2 (0) 6 4 4 6 10 4 (4) min 0 0 0 0 0 aij-列min 1 (0) 0 0 (0) 0 2 0 0 3 (0) 0 4 0 5 0 2 (0) 6
第三步:作最少的直线覆盖所有0元素
(1) 对没有◎的行打√号; (2) 对已打√号的行中所有含Ø元素的列打√号; (3) 再对打有√号的列中含◎ 元素的行打√号; (4) 重复(2),(3)直到得不出新的打√号的行、列为止; (5) 对没有打 √号的行画横线,有打 √ 号的列画纵线,这就 得到覆盖所有0元素的最少直线数 l。l 应等于m,若不相等, 说明试指派过程有误,回到第二步 (4),另行试指派;若 l= m < n,须再变换当前的系数矩阵,以找到n个独立的0元素, 为此转第四步。 4 5 4 ◎ √
j 1 n i 2 j 1 n n
c1 j x1 j k x1 j cij xij
j 1 n j 1 i 2 j 1
n
n
n
cij xij k z k
i 1 j 1
n
例 1 、有一份中文说明书,需译成英、日、德、俄四 种文字。现有甲、乙、丙、丁四人,他们将中文说明 书翻译成不同语种的说明书所需时间如表所示。问应 指派何人去完成何种工作所需总时间最少?
1 i=1,2,3,4,5) 简写为: xij (
j 1
5
Βιβλιοθήκη Baidu
(2)一个商店只能由一家公司承建,即
x11 x 21 x31 x 41 x51 1 x x x x x 1 12 22 32 42 52 x13 x 23 x33 x 43 x53 1 x14 x 24 x34 x 44 x54 1 x15 x 25 x35 x 45 x55 1
成本矩阵:(cij )->设成本矩阵第一行各元素均减去同一个数k,得到的新矩阵 记为(c'ij )
j c1 j k ( j 1,2,, n); cij cij (i 2,3,, n; j 1,2,, n) c1
n n i 1 j 1 n
xij z cij (c1 j k ) x1 j cij xij
2 4 9 7
0 13 11 2 6 0 10 11 0 5 7 4 0 1 4 2 4 2
0 13 7 0 6 0 6 9 0 5 3 2 0 1 0 0
第二步:试求最优解 在新矩阵中找尽可能多的独立 0元素,若能找出 n个独立 0 元素,就以这n个独立0元素对应解矩阵(xij)中的元素为1,其余 为0,这就得到最优解。找独立0元素,常用的步骤为: 第一步:从只有一个 0 元素的行 (列 )开始,给这个 0元素加圈, 记作◎。然后划去◎所在列(行)的其它0元素,记作Ø;这表示 这列所代表的任务已指派完,不必再考虑别人了; 第二步:给只有一个 0元素的列 (行 )中的 0元素加圈,记作◎; 然后划去◎所在行的0元素,记作Ø; 第三步:反复进行 (1), (2)两步,直到尽可能多的 0元素都被 圈出和划掉为止;
变换矩阵(bij)以增加0元素:没有被直线覆盖的所有元素中的最 小元素为1,然后打√各行都减去1;打√各列都加上1,得如下 矩阵,并转第二步进行试指派:
4 ◎ 2 3
5 4 ◎ √ 1 Ø 4 ◎ 4 3 √ Ø 7 1 √
3 ◎ 2 2
4 3 1 Ø ◎ 4 6 0
15
4 3 1 Ø ◎ 4 6 ◎
◎
5 4 Ø
得到4个独立 零元素, 所以最优解 矩阵为:
其他情况:
(1)若m项任务分配给n个人完成
m > n,加上(m-n)个行向量,这些行元素均为 0,构成一个m阶方阵,再求解;
m < n,加上(n-m)个列向量,这些列元素均为 0,构成一个n阶方阵,再求解
每一项工作只能分配给一个人; 每一个人只能并且必须接受一项工作
例 某商业公司计划开办五家新商店。为了尽早建成营业 ,商 业公司决定由 5 家建筑公司分别承建。已知建筑公司 Ai 对新商 店Bj的建造费用的报价(万元)为Cij,见下表。商业公司应当对 5家建筑公司怎样分配建造任务,才能使总的建造费用最少?
0
相反
( i , j =1.2. …n )
min z cij xij
i 1 j 1 n n
其数学模型为:
n xij 1(i 1,2, , n) j 1 n xij 1( j 1,2, , n) i 1 xij 0或1(i, j 1,2, , n)
这个问题的约束条件如下: (1)一家公司只承建一个商店:
x11 x12 x13 x14 x15 1 x x x x x 1 21 22 23 24 25 x31 x32 x33 x34 x35 1 x 41 x 42 x 43 x 44 x 45 1 x51 x52 x53 x54 x55 1