第 3 章 整数规划 (integer programming)

23
1 Network Optimization 清清清清清清清清清 清清清 清清清 清清清 2206# 清清清 (: 010-62787812 Email:[email protected] http://faculty.math.tsinghua.edu.cn/~jxie/courses/n etopt 网网网网网网70420133 网网 () 网 3 网 网网网网 (Integer Programmin g)

Upload: molly

Post on 12-Feb-2016

220 views

Category:

Documents


0 download

DESCRIPTION

第 3 章 整数规划 (Integer Programming). 网 络 优 化. Network Optimization. 清华大学课号: 70420133 (研). 清华大学数学科学系 谢金星 办公室:理科楼 2206# (电话: 010-62787812 ) Email:[email protected] http://faculty.math.tsinghua.edu.cn/~jxie/courses/netopt. 整数规划问题 的例子. 例(续例 1.4 ) 指派问题 (Assignment Problem) - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第 3 章  整数规划 (Integer Programming)

1

网 络 优 化 Network

Optimization

清华大学数学科学系 谢金星办公室:理科楼 2206# (电话: 010-62787812 )Email:[email protected]

http://faculty.math.tsinghua.edu.cn/~jxie/courses/netopt

清华大学课号: 70420133 (研)第 3 章 整数规划 (Integer Programming)

Page 2: 第 3 章  整数规划 (Integer Programming)

2

整数规划问题的例子例(续例 1.4 ) 指派问题 (Assignment Problem)

一家公司经理准备安排 N 名员工去完成 N 项任务,每人一项 . 由于各员工的特点不同,不同的员工去完成同一项任务时所获得的回报是不同的 . 如何分配工作方案可以使总回报最大?

..

max1 1

ts

xwn

i

n

j ijij

}.1,0{

,,,2,1,1

,,,2,1,1

1

1

ij

n

j ij

n

i ij

x

nix

njx

许多网络优化问题也可以用整数规划 (IP) 来建模

线性整数规划 (LIP)非线性整数规划 (NIP)纯整数规划 (PIP)混合整数规划 (MIP)

特例: 0-1 规划

Page 3: 第 3 章  整数规划 (Integer Programming)

3

3.1.1 整数规划问题的几种描述形式 线性规划( LP: Linear Programming)问题的标准形式

纯整数线性规划 (PILP ,以后简称整数规划( IP ) ) 的标准形式

0)1.3(..

min

xbAxtsxcT

, A 是行满秩的,且 nmmn RARbRxc ,,, 0, bnm

Zxx

bAxtsxc

i

T

0

)2.3(..min

, A 是行满秩的,且 0, bnmnmmn ZAZbZxc ,,,

Page 4: 第 3 章  整数规划 (Integer Programming)

4

3.1.1 整数规划问题的几种描述形式 整数规划的一般形式

整数规划的规范形式 NjZx

NjZx

Mibxa

Mibxats

xc

j

j

iTi

iTi

T

,

,

)3.3(,

,..

min

Zxx

bAxtsxc

i

T

0

)4.3(..min

整数规划的上述三种形式是等价的:一种形式下的实例,可以简单地等价变化为另一种形式下的实例 .

Page 5: 第 3 章  整数规划 (Integer Programming)

5

3.2.2 整数规划问题的求解难度 整数规划问题是 NP 困难的 .

为什么不先求解相应的线性规划问题(一般称为整数规划问题的线性规划松弛问题,或简称 LP-Relaxation ),然后将得到的解四舍五入到最接近的整数?

IP 可行解对应于整点 A(2,2) 和 B(1,1), 而最优解为 A 点 . 但 LP 松弛的最优解为 C(3.5,2.5)

目标函数下降方向 x1

x2

C

AB

Page 6: 第 3 章  整数规划 (Integer Programming)

6

IP 的 LP 松弛的最优解什么时候一定是整数解呢?假设在( 3.1 )式所示的线性规划问题中等式约束个数等于决策变量个数 (m=n), 则此时的等式约束构成一个线性方程组 Ax=b.

如果方阵 A 为整数矩阵且 b 为整数向量 , 则 det(A) 和 det(Aj) 都是整数 . 当然,解 x 未必是整数向量 .

如果 det(A) = 1 或 -1, 则解 x 一定是整数向量 .

3.2 全么模阵

.,...,2,1,)det()det(

njAA

x jj

Page 7: 第 3 章  整数规划 (Integer Programming)

7

3.2 全么模阵

证明 ( 1 ) => ( 2 ): bB

BbBxadj

B )det()()( 0

010

( 2 ) => ( 3 ):设 B 为任一基矩阵,如果其逆矩阵不是整数矩阵,任取整数向量 y 使得 ,这里 ei 表示第 i 个分量为 1 其余分量为 0 的“单位向量” . 01 ieByz

令 ,则 b 为整数向量,且向量 为 D ( b )的一个极点的基向量,因此是整数向量 . ii eByeByBBzb )( 1

01 bBz

定理 3.1 设在( 3.1 )式所示的线性规划问题中 A 为整数矩阵,且 A 满行秩,则下面三个条件等价: ( 1 )对每个基矩阵 B ,其行列式 det ( B ) =1 或 -1. ( 2 )对任何整数向量 b ,其可行域 的每个极点都是整数向量 . ( 3 )对每个基矩阵 B ,其逆矩阵也是整数矩阵 .

0,|)( xbAxxbD

因此 为整数向量,即 是整数矩阵 . yzeB i 1 1B

(3)=>(1) :设 B 为任一基矩阵,由于 ,又知 B 和 都是整数矩阵,所以 det ( B ) =1 或 -1. IBB 1 1B

- Hoffman-Kruskal 定理( 1956 )

Page 8: 第 3 章  整数规划 (Integer Programming)

8

3.2 全么模阵定义 3.1 如果一个矩阵 A 的任何子方阵的行列式的值都等于 0 ,1 或 -1 ,则称 A 是全么模的( TU : Totally Unimodular ,又译为全单位模的),或称 A 是全么模矩阵 . 定理 3.2 (全么模矩阵的性质)下列命题等价:1) A 是全么模矩阵 . 2) -A 是全么模矩阵 . 3) AT 是全么模矩阵 . 4) ( A , A )是全么模矩阵 . 5) ( A , I ) ,( A , 0 )是全么模矩阵 .

– 定义

全么模矩阵的元素只能取 0 , 1 和 -1.

A为全么模矩阵时的整数规划问题实际上等价于对应的 LP松弛问题(单纯形算法) .

Page 9: 第 3 章  整数规划 (Integer Programming)

9

定理 3.3 设 A 是由 0 , 1 和 -1 组成的矩阵,如果下面两个条件同时成立,则A 为全么模矩阵 .

( 1 ) A 的每一列至多含有两个非零元素 .

( 2 ) A 的行可以分为 A1 , A2 两个集合,使得:如果 A 的一列中有两个符号不同的元素,则相应的两行在同一集合 A1 或 A2 中;如果 A 的一列中有两个符号相同的元素,则相应的两行分别位于两个集和 A1 和 A2 中 .

证明 如果矩阵 A 满足条件( 1 )和( 2 ),则 A 的任意子矩阵仍然满足条件( 1 )和( 2 ) . 所以,只需证明当 A为方阵且满足条件( 1 )和( 2 )时, det ( A ) = 0 , 1 或 -1 即可 . 下面用数学归纳法证明

3.2 全么模阵

A的某一列元素全为 0 ,则 det ( A ) =0.

当 A 为 1 阶方阵时,显然 =0 , 1 或 -1. 假设结论对任意( n-1 )阶方阵均成立,下面考虑 A为 n阶方阵的情形 . 有且只有以下三种可能: A的某一列元素只有一个不为 0 ,则 det ( A ) =0 , 1 或 -1.

A的每一列均含有两个非零元 , 则 det ( A ) =0.

.,,2,1,21

njaaAi

ijAi

ij

- 充分条件

Page 10: 第 3 章  整数规划 (Integer Programming)

10

3.2 全么模阵推论 ( 1 )一个有向图的关联矩阵为全么模矩阵 . ( 2 )一个无向图的关联矩阵为全么模矩阵,当且仅当该图为二部图 . 当采用整数规划来描述网络优化问题时,其约束矩阵一般是有向图的关联矩阵或它的简单变形,一般都是全么模矩阵 . 因此可以认为,许多网络优化问题都是一类特殊的整数规划,其 LP松弛与原问题有相同的最优解 . 网络优化处于线性规划和整数规划的结合点上,或者说处于连续优化和离散优化(组合优化)的结合点上 .

- 与网络优化的关系

Page 11: 第 3 章  整数规划 (Integer Programming)

11

Gomory ( 1958)

基本思想:如果给整数线性规划增加一个线性约束,而没有“割掉”其任何可行整数解,则新问题与原问题有相同的整数解 . 增加的相应约束通常被称为割平面( Cutting Plane ) .

对约束方程两边取“地板函数”(用 表示),即取小于或等于对应的实数值的最大整数值 . 由于 x 为非负整数,所以

3.3 分数割平面法 如果给线性规划增加一个约束,则原线性规划问题的可行域集合可能缩小 , 即可行域相当于被“割掉”了一块 .

首先用原始单纯形法求解整数线性规划( 3.2 )的 LP 松弛( 3.1 ),得到一个最优基本解 . 设它对应的基为 B ,且设对应的单纯形表中第 i 个方程 ( 第 i 行 ) 为: ( i=0,1,2,…,m)

记0)( ijijNBjiB yxyx

zxB )0(

0)( ijijNBjiB yxyx

Page 12: 第 3 章  整数规划 (Integer Programming)

12

令 则 ,,,2,1,0, miyyf ijijij

分数割平面法两式相减:

第 i 行的 Gomory割

0)( ijijNBjiB yxyx

0)( ijijNBjiB yxyx

00)( iiNBj jijij yyxyy

.0ijijNBj fxf

为了将它加入已经得到的单纯形表并仍然保持一个基本解 , 将它进一步变为 其中 s 为引进的新变量(非负) .

)10.3()( 0ijijNBj fsxf

引理 3.1 约束 (3.10)加入到 LP 松弛问题的最优表之后,没有割掉任何整数可行点;并且当 不是整数时,新表里是一个对偶基本可行解,但不是原始可行解 . 0iy

s与 B 一起构成新的基变量;基本解中 00 ifs

单纯形表第 0 行不变,所以基本解是对偶基本可行解 .

Page 13: 第 3 章  整数规划 (Integer Programming)

13

STEP0. 解 ILP 的 LP 松弛问题 . 如果松弛问题无解 , 则令 feasible=“no”;否则得松弛问题的最优解 , 令 feasible=“yes”, 继续 STEP1. STEP1. 如果 feasible=“no”, 则原问题无解 , 结束 ; 如果feasible=“yes” 且是整数解 , 则得到原问题的最优解 , 结束 ; 否则继续 STEP2. STEP2. 选取某行生成割平面;在单纯形表中加上生成的 Gomory割( 3.10 )和对应的基变量 s.

分数对偶算法算法 (Fractional Dual Algorithm,Gomory,1958)

STEP3. 应用对偶单纯形法求解新问题 . 如果对偶问题无解 , 令 feasible=“no”;否则设为新的当前最优解 . 转 STEP1.

Page 14: 第 3 章  整数规划 (Integer Programming)

14

例 3.1 用分数割平面法求解: 分数对偶算法算法 (Fractional Dual Algorithm,Gomory,1958)

Zxxxx

xxtsx

21

21

21

2

,023

623..max

将其 LP 松弛问题化为标准形: 0,,,

023623..

)min(max

4321

421

321

22

xxxxxxx

xxxtsxx

1x 2x 3x 4x

3x

  b

-z = 0 0 -1 0 0

= 6 3 2 1 0

= 0 -3 2 0 14x

Page 15: 第 3 章  整数规划 (Integer Programming)

15

分数对偶算法算法 (Fractional Dual Algorithm,Gomory,1958)

1x 2x 3x 4x

3x

  b

-z = 0 -3/2 0 0 1/2

= 6 6 0 1 -1

= 0 -3/2 1 0 1/22x

1x 2x 3x 4x

3x

  b

-z = 0 0 -1 0 0

= 6 3 2 1 0

= 0 -3 2 0 14x

1x 2x 3x 4x  b

-z = 3/2 0 0 1/4 1/4

= 1 1 0 1/6 -1/6

= 3/2 0 1 1/4 1/42x1x

21

441

341 xx

Page 16: 第 3 章  整数规划 (Integer Programming)

16

1x 2x 3x 4x  b

-z= 1 0 0 0 0 1= 2/3 1 0 0 -1/3 2/3= 1 0 1 0 0 1= 2 0 0 1 1 -4

5x

2x1x

5x

分数对偶算法算法 (Fractional Dual Algorithm,Gomory,1958)1x 2x 3x 4x

  b-z= 3/2 0 0 1/4 1/4 0= 1 1 0 1/6 -1/6 0= 3/2 0 1 1/4 1/4 0= -1/2 0 0 -1/4 -1/4 1

5x

2x

  b-z= 3/2 0 0 1/4 1/4 0= 1 1 0 1/6 -1/6 0= 3/2 0 1 1/4 1/4 0= -1/2 0 0 -1/4 -1/4 1

1x

5x

32

532

432 xx

2x

  b-z= 1 0 0 0 0 1 0= 2/3 1 0 0 -1/3 2/3 0= 1 0 1 0 0 1 0= 2 0 0 1 1 -4 0= -2/3 0 0 0 -2/3 -2/3 1

2x1x 4x 5x

3x6x

1x

6x3x

Page 17: 第 3 章  整数规划 (Integer Programming)

17

分数对偶算法算法 (Fractional Dual Algorithm,Gomory,1958)

2x

  b-z= 1 0 0 0 0 1 0= 2/3 1 0 0 -1/3 2/3 0= 1 0 1 0 0 1 0= 2 0 0 1 1 -4 0= -2/3 0 0 0 -2/3 -2/3 1

2x1x 4x 5x

3x6x

1x

6x3x

2x

  b-z= 1 0 0 0 0 1 0= 1 1 0 0 0 1 -1/2= 1 0 1 0 0 1 0= 1 0 0 1 0 -5 3/2= 1 0 0 0 1 1 -3/2

2x1x 4x 5x

3x

1x

6x3x

4x

得到最优解为( 1 , 1 ),是整数解 . 结束,原问题最优解为( 1 , 1 ),最大值为 1.

Page 18: 第 3 章  整数规划 (Integer Programming)

18

对分数割平面算法 ,我们作以下几点说明

(2) 可以看出 ,该算法在计算过程中不断增加割平面的个数 , 因此约束越来越多 . 为了防止割平面个数任意增加 , 一般可以作如下处理 :如果一个松弛变量应进入基 , 则将相应的行和列从单纯形表中去掉 , 即去掉了对应的割平面 . 因此 , 单纯形表中的约束行数不会多于变量个数 .

(1)该算法能否保证其有限性 , 即是否一定在有限步内停止 ?我们知道 , 线性规划的单纯形法可能出现循环 , 因此不一定在有限步内停止 . 所以 , 分数割平面算法也不一定在有限步内停止 . 但是 , 当在 ( 对偶 ) 单纯形法中采用字典序反循环法则时 , 可以证明分数割平面算法一定在有限步内停止 .

(3) 该算法在计算机上实现过程中会有一点麻烦 :由于存在误差 ,判定一个实数是否为整数是比较困难的 . 为了克服这一困难 , 人们提出了全整数算法 . (4) 分数对偶算法采用对偶单纯形法 , 在达到最优解之前得不到原问题的可行解 , 因此如果计算时间过长而不得不中间停机时 ,结果往往无法使用 .为了解决这一问题 , 人们提出了原始整数割平面算法 .

Page 19: 第 3 章  整数规划 (Integer Programming)

19

3.4 分枝定界法( Branch and Bound ) 基本思想:隐式地枚举一切可行解(组合优化)所谓分枝,就是逐次对解空间进行划分;而所谓定界,是指对于每个划分后的解空间(即每个分枝),要计算原问题的最优解的下界(对极小化问题) . 这些下界用来在求解过程中判定是否需要对目前的解空间(即分枝)进一步划分,也就是尽可能去掉一些明显的非最优点,从而避免完全枚举 . 定界方法中经常采用的有 Lagrange 松弛方法和线性规划松弛方法等 若在某一时刻,得到一个全整数解的费用为 zm ,则 zm 为原问题的一个上界 ;否则得该分枝的一个下界,继续分枝.

n

ii

T

Zx

xx

xbAxtsxc

1

0..

min

0 n

ii

T

Zx

xx

xbAxtsxc

0

0..

min

Page 20: 第 3 章  整数规划 (Integer Programming)

20

STEP4. 转 STEP1.

分枝定界算法 STEP0. 令 activeset={0}(原问题 );U = ∞; currentbest=0. STEP1. 如果 activeset=, 则已经得到原问题的最优解 , 结束 ; 否则从活跃分枝点集合 activeset 中选择一个分枝点 k;将 k从activeset 中去掉 , 继续 STEP2.

STEP2. 生成 k的各分枝 及其对应的下界 zi. kni ,,2,1

STEP3. 对分枝 : 如果分枝 i 得到的是全整数解且 zi<U, 则令 U=zi 且 currentbest=i;如果分枝 i 得到的不是全整数解且 <U, 则把 i加入 activeset 中 . kni ,,2,1

Page 21: 第 3 章  整数规划 (Integer Programming)

21

分枝定界算法 – 例例 3.2 用分枝定界法求解: ( P0 )

问题 (P3) 的 LP 松弛无可行解 .

Zxxx

xxxxtsxxz

21

21

2

211

21

21

21

21

,

22..

min

该问题的 LP 松弛解为 , 不是整数解 , 最优值为 z0=-4.(P1): (P0)加上 ; (P2): (P0)加上 .

Tx ),( 25

230

21 x

11 x

问题 (P1) 的 LP 松弛解为 , 不是整数解 , 最优值为 z1=-3.5(P3): (P1)加上 ; (P4): (P1)加上 .

Tx ),2( 231

22 x12 x

Page 22: 第 3 章  整数规划 (Integer Programming)

22

分枝定界算法 – 例

问题 (P5) 的 LP 松弛无可行解 .

问题 (P4) 的 LP 松弛解为 , 不是整数解 , 最优值为 z4=-3.25 (P5): (P4)加上 ; (P6): (P4)加上 .

Tx )1,( 494

31 x

21 x

问题 (P1) 的 LP 松弛解为 , 是整数解 , 最优值为 z6=-3. Tx )1,2(6

再看问 题 (P2). 问 题 (P2)的 LP 松弛解为 , 不是整数解 , 最优值为 z2=-2.5 > z6 , 因此没有必要继续从问题 (P2)进行分枝 .

Tx ),1( 232

P0

P1 P2

P3P4

P5 P6

21 x 11 x

22 x 12 x

31 x 21 x , Txx )1,2(6* 36

* zz

Page 23: 第 3 章  整数规划 (Integer Programming)

23

布 置 作 业目的 掌握整数规划的基本概念;

掌握全么模阵的基本概念和性质;掌握割平面法和分枝定界算法

内容 《网络优化》第 95-96页 3; 7; 10 ( 2 ); 9*(1) ( min改为 max, 此题选做)