ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20...

64
1 3 整数规划

Transcript of ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20...

Page 1: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

1  

 

 

 

 

第 3章    整数规划 

   

Page 2: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

2  

第 3章的主要内容 

整数规划问题与模型 

整数规划算法 

  

 

 

 

 

Page 3: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

3  

 

 

 

 

3.1    整数规划问题举例 

 

Page 4: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

 

背背包问题

实例:一

(重量)

目标:选

价值 大

题 

一个背包

为 wi,

选择一些

大。 

包,容量为

价值 vi。

些物品装入

为 W。n

 

入背包,

n 件物品

使其总容

,物品 i

容量   W

 

i 容量

W,总

Page 5: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

5  

问题建模 

变量 xi –  是否选择物品  i。 

整数规划(0‐1规划): 

max  i vixi 

s.t. i wixi  W 

xi  {0, 1} 

Page 6: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

6  

集合覆盖(Set Cover)问题 

实例:基础集合 U = {e1, e2, …, en},集合族 C = {S1, S2, …, 

Sm},每一个集合 Si是 U 的一个子集。 

目标: 小数目的子集的集合族 C’  C,使得 C’中子

集的“并”包含(覆盖)U 中的所有元素。 

 

整数规划(0‐1规划): 

定义判定变量 xi,xi = 1表示集合 Si被选取,xi = 0 表示

Page 7: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

7  

集合 Si未被选取。 

min  i xi 

s.t.      Si: e  Si xi  1,        e  U 

xi  {0, 1} 

旅行售货员(TSP)问题 

实例:给定  n+1  个城市,任两个城市  vi  和  vj  之间

有一个距离 cij  0(cij = cji, cii = 0)。一个旅行售货员,

从城市  v0  出发,走遍所有的城市,再回到  v0。 

Page 8: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

8  

目标:售货员应该怎样走,才能使走过的总距离 短? 

 

Page 9: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

9  

 图片来自 www.princeton.edu 

Page 10: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

10  

TSP问题建模 

变量  xij:是否使用从城市  vi  到城市  vj  的路径。 

约束 

每个城市只能到达一次、离开一次。 

所走过的路径构成一个圈(不能多于一个圈)。   

Page 11: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

11  

njix

nSx

njx

nix

xc

ij

SjSiij

n

iij

n

jij

jiijij

,,2,1,0,1,0

},2,1,0{1

,,2,1,0,1

,,2,1,0,1s.t.

min

,

0

0

 

Page 12: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

12  

强制路径构成仅一个圈 

使用如下约束: 

nSxSjSi

ij ,,1,0,1,

 

Page 13: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

13  

 

Page 14: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

14  

整数线性规划的特征、模型 

特征—变量整数性要求 

问题本身的要求 

引入的逻辑变量的需要 

性质—可行域是离散点的集合 

整数线性规划的常见模型: 

一般整数规划模型——变量取值为整数。   

0‐1整数规划模型——变量取值为 0 或 1。   

Page 15: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

15  

混合整数规划模型——部分变量取值为整数,部分

变量取值为实数。   

整数规划与线性规划的关系 

整数规划                        线性规划 

         

为整数, ixxbAx

xc

0s.t.

min

0s.t.

min

xbAx

xc

Page 16: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

16  

线性规划是整数规划的放松。 

整数规划的可行解是对应的放松问题的可行解。 

放松的线性规划的 优值    整数规划的 优值。 

解整数规划 

对整数规划的几点说明: 

对放松问题的 优解进行简单的舍入(如,四舍五入)

不能得到整数规划的 优解。这样的整数解对于原整

数规划甚至是不可行的。 

Page 17: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

17  

  整数可行解的数目可呈爆炸性增长,简单的枚举法不

Page 18: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

18  

可取。 

算法 

求精确解:   

割平面算法 

分枝定界算法   

求近似解:   

舍入法   

原始‐对偶方法 

Page 19: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

19  

 

 

 

 

3.2 Gomory割平面算法 

   

Page 20: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

20  

割平面算法的基本思想[Gomory, 1958] 

用单纯形法解松驰问题(P0),求到 优解 x0。 

若 x0是整数向量,则 x0是 ILP问题(P)的 优解,计算

结束。 

否则,根据 x0 设法对(P0)增加一个约束条件,称为割

平面条件。这个割平面条件将(P0)的可行域割掉一块,

且 x0在被割掉的区域中,而原 ILP的任何一个整数可行

解都没有被割掉。 

Page 21: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

21  

记增加了约束条件的问题为(P1)。对(P1)继续上述过程,

直到求到一个整数 优解为止。 

说明 

如果在增加约束的过程中,得到的 LP 没有可行解,则

原 ILP没有可行解。 

如果得到的 LP 问题无界,则原 ILP问题或者无界,或

者没有可行解。 

Page 22: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

22  

割平面生成方法 

给定整数规划问题 IP0,A, b, c 中的元素均为整数。 

设它的松弛问题为 LP0。用单纯形算法解 LP0,设求得

的 优 bfs为 x0,它的基为 B = (AB(1), AB(2), , AB(m))。 

为简便,记非基变量下标的集合为 N。 后一张单纯

形表所表示的 LP0的典式为: 

Page 23: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

23  

mibxax

zxz

iNj

jijiB

Njjj

,,1,)(

0

 

为简便记,令 zxB )0( , jja 0 , 00 zb 。上式将统

一记为 

mibxax iNj

jijiB ,,0 ,)( 。 

若 ib 全为整数(0   i  m),则 x0为原问题 IP0的 优

解。 

Page 24: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

24  

否则假设 lb 不是整数(0  l  m)。 lb 所对应的约束为: 

lNj

jljlB bxax

)( 。        (1)   

因为 0, jxj ,可知

Nj

jljNj

jlj xaxa。因此有 

lNj

jljlB bxax

)( 。由于所要求的 x 为整数向量,该

不等式可加强到 

lNj

jljlB bxax

)( 。      (2) 

Page 25: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

25  

(1)  (2),得: llNj

jljlj bbxaa 。将该式记为 

                              lNj

jlj fxf ,        (3) 

其中 0  flj < 1, j;0 < fl < 1,称为割平面条件。 

割平面条件(3)式是一个新的约束。将它加到 LP0 中,

得到更紧的松弛问题 LP1。 

将(3)式两端乘以1,再引入松弛变量 s,得到 

                            lNj

jlj fsxf ,称为割平面方程。 

Page 26: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

26  

这样就得到 LP1 的一个基本(不可行)解和其对偶的

一个可行解,从而可使用对偶单纯形算法继续求解 LP1。 

注意 

在割平面条件 lNj

jlj fxf 中,有 ljljlj aaf 和

lll bbf 。 

当 0lja (以及 0lb )时, ljf (以及 lf )为 lja (以

及 lb )的小数部分。 

Page 27: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

27  

例: 25.1lja , 25.0125.125.125.1 ljf 。 

当 0lja 时, ljf 等于 1  “ lja 的小数部分”。( lb 总是 

 0) 

例: 25.1lja , 75.0225.125.125.1 ljf 。 

Page 28: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

 

割割平面算算法的流流程图 

28 

 

Page 29: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

29  

算例 

整数,0,023

623s.t.

max

21

21

21

2

xxxx

xx

x

 

Page 30: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

 

解解: 

30 

 

Page 31: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

31  

将松弛问题 LP0化为标准型:

0,,,023

623..

min

4321

421

321

2

xxxxxxx

xxxts

x

使用单纯形算法求解: 

  x1  x2  x3  x4   

z  0  1  0  0  0 

x3  3  2  1  0  6 

x4  3  2  0  1  0 

Page 32: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

32  

  x1  x2  x3  x4   

z  3/2  0  0  1/2  0 

x3  6  0  1  1  6 

x2  3/2  1  0  1/2  0 

  x1  x2  x3  x4   

z  0  0  1/4  1/4  3/2

x1  1  0  1/6  1/6 1 

x2  0  1  1/4  1/4  3/2 

求到松弛问题 LP0的 优 bfs,不是整数解。 

Page 33: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

33  

第 2 行生成的割平面条件为: 

21

41

41

43 xx , 

割平面方程为: 

21

41

41

143 sxx 。 

加入割平面方程,得到松弛问题 LP1的单纯形表: 

  x1  x2  x3  x4  s1   

z  0  0  1/4  1/4  0  3/2

Page 34: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

34  

x1  1  0  1/6  1/6 0  1 

x2  0  1  1/4  1/4  0  3/2 

s1  0  0  1/4 1/4 1  1/2

应用对偶单纯形算法继续求解 LP1。 

  x1  x2  x3  x4  s1   

z  0  0  0  0  1  1 

x1  1  0  0  1/3 2/3  2/3 

x2  0  1  0  0  1  1 

x3  0  0  1  1  4  2 

LP1的 优解为 x = (2/3, 1, 2, 0, 0),仍然不是整数解。 

Page 35: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

35  

第 1 行生成的割平面条件为: 

32

32

32

14 sx 。 

对应的割平面方程为: 

32

32

32

214 ssx 。 

加入割平面方程,得到松弛问题 LP2: 

  x1  x2  x3  x4  s1  s2   

z  0  0  0  0  1  0  1 

Page 36: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

36  

x1  1  0  0  1/3 2/3  0  2/3 

x2  0  1  0  0  1  0  1 

x3  0  0  1  1  4  0  2 

s2  0  0  0  2/3 2/3 1  2/3 

继续用对偶单纯形算法求解。 

  x1  x2  x3  x4  s1  s2   

z  0  0  0  0  1  0  1 

x1  1  0  0  0  1  1/2 1 

x2  0  1  0  0  1  0  1 

x3  0  0  1  0  5  3/2  1 

Page 37: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

37  

x4  0  0  0  1  1  3/2 1 

得到 LP2的 优解 x = (1, 1, 1, 1, 0, 0),是整数解。 

因此原问题 IP0的 优解为 x* = (1, 1)。 

对算例的解释 

第 1 次切割,割平面条件为 

21

41

41

43 xx 。                (1) 

由问题 LP0,可知 

Page 38: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

38  

213 236 xxx ,              (2) 

214 23 xxx                         (3) 

将(2)、(3)代入(1),得到与(1)等价的割平面条件: 

                                12 x 。 

第 1 次切割,加入的割平面方程为 

21

41

41

143 sxx 。(4) 

将(2)  、(3)代入(4),可将 s1写成 x1和 x2的线性组合: 

121 xs 。                  (5) 

Page 39: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

39  

第 2 次切割,割平面条件为 

32

32

32

14 sx 。          (6) 

将(3)、(5)代入(6),得到与(6)等价的割平面条件: 

                                021 xx 。 

Page 40: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

 

   

40 

 

Page 41: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

41  

 

 

 

 

3.3  分枝定界法 

   

Page 42: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

42  

分枝定界法的基本思想 

将状态空间  U  一分为二。——分枝 

状态空间可以取  IP  的可行域,或者比其更大。 

进入一个状态空间  U’。若判定在  U’  内不可能找到比

当前已知解更好的解,则摒弃该搜索空间。——剪枝 

若在状态空间  U’  内能够找到更好的解,则用新的解

代替当前的已知解。——定界 

若在状态空间  U’  内已经找到了 好的解,则结束对 

Page 43: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

43  

U’  的搜索。 

否则对状态空间  U’  继续分枝。 

整数规划的情形 

考虑整数规划问题 IP0,其松弛记为 LP0: 

整数,0s.t.min T

xbAx

xc

,    0s.t.min T

xbAx

xc

。 

求 LP0的 优解,记为 x0。若 x0为整数解,则已经求

Page 44: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

44  

到了 IP0的 优解。 

否则设0ix 不为整数。向 IP0 中分别加入两个约束

0ii xx 和 0

ii xx ,得到两个整数规划问题 IP1和 IP2: 

整数,0

s.t.min

0

T

xxxbAx

xc

ii ,    整数,0

s.t.min

0

T

xxxbAx

xc

ii 。 

显然,若 IP0有 优解,则其 优解必定或者在 IP1上

取得,或者在 IP2上取得。 

Page 45: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

45  

解 LP1,若其 优解不是整数解,则对 IP1继续进行分

枝……;解 LP2,若其 优解不是整数解,则对 IP2继

续进行分枝……。 

在这个过程中,若对某个 LPk,其 优解 xk为整数解,

且解值比当前已知的 IP0的整数解 x*的解值还要好,

则将 xk作为 IP0的当前已知 好解。 

若 LPk 的 优解不是整数解,且其解值 cTxk 比当前已

知的 IP0的 好的整数解的解值 cTx*还要差(即,cTxk  

cTx*),则放弃对 LPk的搜索。 

Page 46: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

46  

重复上述过程,当整个状态空间(或者由于求到了整

数解,或者由于剪枝)都搜索完毕后,当前已知 IP0好的解 x*就是 IP0的 优解。 

Page 47: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

47  

搜索树 

 

Page 48: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

48  

例子 

解整数规划:

整数,0,21

1124124.s.t

min

21

2

21

21

21

xx

x

xxxx

xx

。 

解: 

Page 49: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

49  

解 LP0, 优解为

T0

25

23

x

, 优解值 z0 = cTx0 = 4。 

在01x 上进行分枝,得到两个约束:x1  1和 x1  2。 

IP1

整数,0,121

1124124.s.t

min

21

1

2

21

21

21

xxx

x

xxxx

xx

,    IP2

整数,0,221

1124124.s.t

min

21

1

2

21

21

21

xxx

x

xxxx

xx

。 

Page 50: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

50  

解 LP2 , 优 解 为

T2

232

x

, 优 解 值

272T2 xcz 。 

在22x 上进行分枝,得到两个约束:x2  1和 x2  2。 

Page 51: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

51  

IP3

整数,0,2

121

1124124.s.t

min

21

1

2

21

21

21

xxx

x

xxxx

xx

,    IP4

整数,0,22

1124124.s.t

min

21

1

2

21

21

21

xxxx

xxxx

xx

。 

解 LP3, 优解为 T3 125.2x ,解值 25.33T2 xcz 。 

在31x 上进行分枝,得到两个约束:x1  2和 x1  3。 

Page 52: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

52  

IP5

整数,0,2

121

1124124.s.t

min

21

1

2

21

21

21

xxx

x

xxxx

xx

,    IP6

整数,0,3

121

1124124.s.t

min

21

1

2

21

21

21

xxx

x

xxxx

xx

。 

解 LP5, 优解为 T5 12x , 优解值 33T5 xcz ,

将其保存为当前已知 IP0 的 好的解 T* 12x ,

Page 53: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

53  

3* z 。 

解 LP6,无解(到达叶节点)。 

解 LP4,无解(到达叶节点)。 

解 LP1, 优解

T1

231

x

,解值*1T1

25 zxcz ,

剪枝。 

状态空间搜索完毕,求得 优解 T* 12x ,解值

3* z 。 

Page 54: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

54  

例子的搜索树 

IP0

IP2 IP1

IP3 IP4

IP5 IP6

21 x 11 x

12 x 22 x

31 x21 x

35 z无解

无解

剪枝 251 z

T5 12x

 

Page 55: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

55  

例子的搜索过程 

 

Page 56: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

56  

 

分枝定界法解整数规划的算法 

1 活点集合  A  {IP0},上界  U  +,当前 好的整

数解  x*  NIL。 

Page 57: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

57  

2 while A   do   

3     从  A  中取出一个问题  IPk, 

并将  IPk从  A  中删除。 

4     解  LPk。 

5     if  无解  then  转  2 else  记 优解为  xk*,值为  zk*。 

6     if zk* < U then   

7         if xk*  是整数解  then x*  xk*,U  zk*   

else  选择  xk*  的一个非整数分量,生成 

IPk  的两个后代问题,加入 A。 

Page 58: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

58  

8     endif   

9 endwhile   

10 if x* = NIL then  输出“IP0  无解”  else  输出解  x*。 

11 return   

线性规划舍入法 

解整数规划的一个方法,是将其放松为线性规划,解

线性规划得到分数 优解,再将分数 优解舍入为原

整数规划的近似解。   

Page 59: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

59  

没有通用的舍入方法。必须针对具体的问题,设计不

同的舍入方法。   

举例:顶点覆盖问题 

实例:无向图 G = (V, E)。 目标:找 V 的一个最小尺寸的顶点覆盖(子集 V’,使得 V’包含 E 中每一条边的至少一个顶点)。

Page 60: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

60  

整数规划: VvxEvuxx

x

v

vu

Vvv

}1,0{),(1s.t.

min

线性规划: VvxEvuxx

x

v

vu

Vvv

0),(1s.t.

min

舍入方法: 设 x 是顶点覆盖 LP 的最优解。构造整数解 x 如下:

Page 61: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

61  

o.w.,021,1 v

vxx

分析: x 是一个顶点覆盖。 证明:任取一条边 e = (u, v)。因为 x 是一个可行解,

因此有 xu + xv 1。这表明 xu和 xv中必至少有一个

1/2。即, ux 和 vx 中至少有一个为 1。因此, x 是一个

顶点覆盖。

x 的解值 xSOL 不超过最优解值 OPT 的 2 倍。

Page 62: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

 

证明:

例子: 

SOL x Vv

vx

62 

2 Vv

vx OPT2。

 

Page 63: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

63  

OPTf = 3/2  OPT = 2  SOL = 3  SOL  2OPT   

   

Page 64: ch03 - 整数规划course.sdu.edu.cn/G2S/eWebEditor/uploadfile/... · 20 割平面算法的基本思想[Gomory, 1958] 用单纯形法解松驰问题(P 0),求到最优解x 0。 若x0

 

 

 

 

64