当前位置:文档之家› 01规划问题深入剖析

01规划问题深入剖析

x=y0+2y1+22y2+….2kyk x1 7 x2 5 x3 3 x1=y01+2y11+22y21 x2=y02+2y12+22y22 x3=y03+2y13
x4 3
x4=y04+2y14
代入原问题,得到:
Max Z= 3 y01+6y11+12y21 + 4y02+8y12+16y22 + 5 y03+10y13 + 6 y04+12y14
改进过滤性条件Z 5
循 (X2,X1,X3) 环 3 (0,1,0) 4 (0,1,1)
(0’)
s.t. s.t. s.t s.t s.t 满 Z 0’ 1 .2 .3 .4 足 值 3 no 8 0 2 1 1 ye 8 s
改进过滤性条件Z 8 (0’’)
循 (X2,X1,X3) 环 5 (1,0,0) 6 (1,0,1) 7 (1,1,0) 8 (1,1,1) s.t. s.t. s.t s.t s.t 满 Z 0’’ 1 .2 .3 .4 足 值 -2 no 3 no 1 no 6 no
5
指派问题(分配问题) (Assignment Problem)
例5-11 有一份中文说明书,需 翻译成英、日、德、俄四种文字, 分别记作E、J、G、R,现有甲、 乙、丙、丁四人,他们将中文说 明书翻译成英、日、德、俄四种 文字所需时间如下,问应该如何 分配工作,使所需总时间最少?
任务 人员 甲 乙 丙
4 0-1规划的解法
0-1 规划在线性整数规划中具有重要地位。
定理:任何整数规划都可以化成0-1规划。
一般地说,可把整数x变成(k+1)个0-1变量公 式为:x=y0+2y1+22y2+….2kyk 若x上界为U,则对0<x<U,要求k满足2k+1 U+1.

由于这个原因,数学界曾纷纷寻找“背包问 题”解的方法,但进展缓慢。
s.t. 2y01+4y11+8y21 +3y02+6y12
+12y22 + 4 y03+8y13 + 5 y04
+10y14 15
yij=0或=1
用隐枚举法可得到:
y11=y21 =y02 =1 其他全为零 Z=22 最优解(6,1,0,0)
0-1规划应用
华美公司有5个项目被列入投资计划,各项目 的投资额和期望的投资收益见下表: 项目 投资额(万元) 投资收益(万元) 1 210 150
6
9


15
4
14
10
6
7
6
10
10
9
12
7
9
7
9
7 6 7 6 4
8
7
9
6
6
14
6
9
17 12
15
4
14
10
6
7
6
10
10
9
5
0
2
0
2
2
0
3
10
0
5
0
7
0
2
9
0
8
6
0
3
0
6
4
5
从只有一个0元素的行开始,给 这个0元素加圈,记
5 2 0 3 2 0 5 0 0 0 7 0 2 0 2 4
10
任务 人员 甲 乙
E 2 10
J 15 4
G 13 14
R 4 15


9
7
14
8
16
11
13
9
匈牙利算法的步骤:
第一步:使分配问题的系数矩阵经 变换,在各行各列中都出现0元素: 从系数矩阵的每行元素减去该行的 最小元素。 再从所得系数矩阵的每列元素减去 该列的最小元素。 若某行已经有0元素,就不必再减了。
注意:
改进过滤性条件,在计算 过程中随时调整右边常数。
价值系数按递增排列。
以上两种方法可减少计算量。
循 (X2,X1,X3) 环 1 (0,0,0) 2 (0,0,1)
s.t. s.t. s.t s.t s.t 满 Z 0 1 .2 .3 .4 足 值 0 no 5 -1 1 0 1 ye 5 s
反复进行上述两步,直到所有的0元素 都被圈出和划掉为止。
若还有没有划圈的0元素,且同行 (或列)的0元素至少有二个,从剩有 0元素最少的行(或列)开始,比较这 行各0元素所在列中0元素的数目,选 择0元素少的那列的0元素加圈,然后 划掉同行同列的其他0元素,可反复进 行,直到所有的0元素都被圈出和划掉 为止。
称为过滤性条件。初看起来,增 加约束条件需增加计算量,实际 减少了计算量。
最优解(1,0,1) Z=8
循环 (X1,X2,X3) 1 2 (0,0,0) (0,0,1) s.t. s.t. s.t. s.t. s.t. 满 0 1 2 3 4 足 0 5 -1 1 1 0 2 1 5 1 2 6 1 1 0 1 0 1 no yes 5 Z 值
引入0-1变量xij=1分配第i 人去完成第j 项任务,xij=0不分配第 i人去完成第j 项任务。
分配问题的数学模型:
Min Z= cijxij xij =1 (j=1,2……n) xij =1 (i=1,2……n) xij 0或1 (i=1,2…..m; j=1,2……n)
xij =1 (j=1,2……n)表示
3
4 5 6 7 8
(0,1,0)
(0,1,1) (1,0,0) (1,0,1) (1,1,0) (1,1,1)
-2
3 3 8 1 6
no
no yes 3 yes 8 no no
增加约束条件(0)(Z 3)后实际做了24次运 算,而原问题需要计算 23*4=32次运算(3个变量, 4个约束条件)。

0
1
0
0
然后划去所在的列的其他0 元素,记作Ø。 Ø
6 13 7 6 3 0 0 9 2 0

5 1

Ø
给只有一个0元素的列的0 元素加圈,记。
Ø
6
13
7
6
0
9

5
1

Ø
3
2
0

然后划去所在的行的其他0元 素,记作Ø Ø
6 13 7 6 3 0 9 2

5 1

Ø
Ø
给最后一个0元素加圈, 记。 Ø
E 2 10 9
J 15 4 14
G 13 14 16
R 4 15 13丁78119
类似有:有n项加工任务,怎样 分配到n台机床上分别完成;有n 条航线,怎样指定n艘船分别去 航行….. 等。 表中数据称为效率矩阵或系数矩 阵,其元素大于零,表示分配第 i人去完成第j 项任务时的效率 (或时间、成本等)。

5 2

3
2
Ø Ø
7
2
Ø
5

2 4
9 8
0
6
3
6
5
然后划去所在的列的其他0元素, 记作Ø。
5 2 0 3 2 0 5 0 0 0 7 0 2 0 2 4
10
9 8
Ø
6
3
6
5
从只有一个0元素的列开始, 给这个0元素加圈,记
5 2

3
2 0 5 0
0 0 7 0
2 0 2 4
10
9 8
Ø
6
3
6
5
然后划去所在的行的其他0元素, 记作Ø。
第j 项任务只能由一人去完成。
xij =1 (i=1,2……n)
第i人只能完成一项任务。 满足约束条件的解称为可行解可写成 矩阵形式:
0 1 0 0
X= 0 0 1 1 0 0 1
0 0 0
称为解矩阵其 各行各列元素 之和为1。
0 0
匈牙利算法基本思想:
对同一工作i来说,所有 机床的效率都提高或降低同一 常数,不会影响最优分配;同 样,对同一机床j来说,做所有 工作的效率都提高或降低同一 常数,也不会影响最优分配。
对没有的行,打
5 2

3
2
Ø Ø
7
2
Ø
5

2 4
10
9 8

3
Ø
6
Ø
6
5

对已打行中所有含0元素的列打

5 2

3
2
Ø Ø
7
2
Ø
5

2 4
10
9 8

3
Ø
6
Ø
6
5

再对打列中含0元素的行打
5 2

3
2
Ø Ø
7
2
Ø
5

2 4
10
9 8


3
Ø
6
Ø
6
5
对没有打行画横线
2 15 13
(cij)= 10 4 14
4
15 13
2
4 9 7 0 13 11 6 0 0 5 1 10 7 4 4 2 11 4 2 2
9 14 16
7
8 11
9
0 13 6 0 0 5
7 6 3
0 9 2
0
0
1
0
0
第二步:进行试分配,以寻找最优解。
从只有一个0元素的行(或列)开始, 给这个0元素加圈,记,然后划去所 在的列(或行)的其他0元素,记作Ø。 给只有一个0元素的列(或行)的0元素 加圈,记,然后划去所在的行(或列) 的其他0元素,记作Ø。
相关主题