Transcript 纯整数规划的求解
Ch6 整数规划 Integer Programming 6.2 纯整数规划的求解(续) Solving Pure Integer Programming 6.2 纯整数规划的求解 Solving Pure Integer Programming Ch6 整数规划 Integer Programming 6.2.2 求解IP的割平面法 设纯整数规划 n n max Z c j x j a x j 1 j 1 ij j bi x j 0且为整数,j 1,, n 松弛问题 n max Z c j x j j 1 的最优解 n a x j 1 X=( B1b,0)T ij j bi x j 0,j 1,, n b B1b (b1 , b2 ,, bm )T 设xi不为整数, xi aik xk bi , 即xi bi aik xk k k xk 为非基变量 6.2 纯整数规划的求解 Solving Pure Integer Programming Ch6 整数规划 Integer Programming 将 bi 及aik 分离成一个整数与一个非负真分数之和: aik aik fik , 0 fi 1, 0 fik 1 bi [bi ] fi , 则有 xi [bi ] f i [aij ]xk f ik xk k k xi [bi ] [aij ]xk fi fik xk k k 等式(6.5)两边都为整数并且有 f i f ik xk f i 1 k (3. 5) 6.2 纯整数规划的求解 Solving Pure Integer Programming 则 fi fik xk 0 Ch6 整数规划 Integer Programming (3. 6) k 加入松弛变量si得 si fik xk fi (3. 7) k 此式称为以xi行为源行(来源行)的割平面,或分数切割式,或 R.E.Gomory(高莫雷)约束方程。 将Gomory约束方程加入到松弛问题的最优表中,用对偶 单纯形法计算,若最优解中还有非整数解,再继续切割,直 到全部为整数解。 6.2 纯整数规划的求解 Solving Pure Integer Programming x1 56 x3 16 x4 53 2 1 2 x x x 2 3 3 3 4 3 例如, x1行: 移项: 令 x1 56 x3 (1 56 ) x4 1 23 x1 x4 1 23 56 x3 56 x4 2 3 56 x3 56 x4 0 s1 56 x3 56 x4 23 加入松弛变量s1得 同理,对于x2行有: s2 13 x3 13 x4 23 Ch6 整数规划 Integer Programming 6.2 纯整数规划的求解 Solving Pure Integer Programming 【例6.6】 用割平面法求解下列IP问题 max Z 4 x1 3 x 2 6 x1 4 x 2 30 x1 2 x 2 10 x , x 0且为整数 1 2 【解】 放宽变量约束,对应的松弛问题是 max Z 4 x1 3x 2 6 x1 4 x 2 30 x1 2 x 2 10 x , x 0 1 2 Ch6 整数规划 Integer Programming 6.2 纯整数规划的求解 Solving Pure Integer Programming Ch6 整数规划 Integer Programming 加入松弛变量x3及x4后,用单纯形法求解,得到最优表6-3: 表6-3 Cj CB 4 3 XB x1 x2 λj 4 x1 1 0 3 x2 0 1 0 x3 1/4 -1/8 0 x4 b -1/2 3/4 5/2 15/4 0 0 -5/8 -1/4 最优解X(0)=(5/2,15/4),不是IP的最优解。选择表6-3的 第一行(也可以选第二行)为源行 1 1 5 x1 x3 x 4 4 2 2 6.2 纯整数规划的求解 Solving Pure Integer Programming Ch6 整数规划 Integer Programming 分离系数后改写成 1 1 1 x1 x3 (1 ) x 4 2 4 2 2 1 1 1 x1 x 4 2 x3 x 4 0 2 4 2 加入松弛变量x5得到高莫雷约束方程 x3 2x4 x5 2 (3. 8) 将式(6.8)作为约束条件添加到表6-3中,用对偶单纯形 法计算,如表6-4所示: 3.2 纯整数规划的求解 Solving Pure Integer Programming Ch6 整数规划 Integer Programming 表6-4 Cj 4 3 0 0 0 x4 x5 CB XB x1 x2 x3 4 3 0 x1 x2 x5 1 0 0 0 1 0 1/4 -1/8 -1 0 0 1 0 0 -5/8 0 1 0 0 0 1 0 1/2 -1/2 1/2 -1/4 3/8 -1/2 0 0 -1/2 -1/8 λj 4 3 0 x1 x2 x4 λj b 5/2 15/4 -2→ 3 3 1 最优解X(1)=(3,3),最优值Z=21。所有变量为整数,X(1)就是IP的最优解。 如果不是整数解,需要继续切割,重复上述计算过程。 如果在对偶单纯形法中原切割方程的松弛变量仍为基变量,则此松弛 变量所在列化为单位向量后就可以去掉该行该列,再切割。 6.3 0-1规划的求解 Solving BIP Ch6 整数规划 Integer Programming 6.3 0-1规划的求解 Solving BIP 6.3.1 求解0-1整数规划的隐枚举法 隐枚举法的步骤: 1.找出任意一可行解,目标函数值为Z0 ; 2. 原问题求最大值时,则增加一个约束 c1 x1 c2 x2 cn xn Z0 (*) 当求最小值时,上式改为小于等于约束; 3. 列出所有可能解,对每个可能解先检验式(*),若满足再检 验其它约束,若不满足式(*),则认为不可行,若所有约束都满 足,则认为此解是可行解,求出目标值 ; 4. 目标函数值最大(最小)的解就是最优解。 6.3 0-1规划的求解 Solving BIP Ch6 整数规划 Integer Programming 【例6.7】用隐枚举法求解下列BIP问题 max Z 6 x1 2 x2 3x3 5 x4 4 x1 2 x 2 x3 3x4 10 3x1 5 x2 x3 6 x4 4 2 x1 x2 x3 x4 3 x 2 x 4 x 5 x 10 2 3 4 1 x j 0或1,j 1,2,3,4 【解】(1) 不难看出,当所有变量等于0或1的任意组合时,第一个约束满 足,说明第一个约束没有约束力,是多余的,从约束条件中去掉。还能通 过观察得到X0 =(1,0,0,1)是一个可行解,目标值Z0 =11是BIP问题的 下界,构造一个约束:6 x1 2 x2 3x3 5x4 11 ,原BIP问题变为 6.3 0-1规划的求解 Solving BIP Ch6 整数规划 Integer Programming max Z 6 x1 2 x2 3x3 5 x4 6 x1 2 x 2 3x3 5 x4 11 3x1 5 x2 x3 6 x4 4 2 x1 x2 x3 x4 3 x 2 x 4 x 5 x 10 2 3 4 1 x j 0或1,j 1,2,3,4 (3.9a) (3.9b) (3.9c) (3.9d ) (2) 列出变量取值0和1的组合,共24=16个,分别代入约束条件判断是否可行。 首先判断式(6.9a)是否满足,如果满足,接下来判断其它约束,否则认为不 可行,计算过程见表6-5所示。 Ch6 整数规划 Integer Programming 6.3 0-1规划的求解 Solving BIP 表6-5 j Xj 3.9a 3.9b 3.9c 3.9d Zj j Xj 3.9a 3.9b 3.9c 3.9d 1 (0,0,0,0) × 9 (1,0,0,0) × 2 (0,0,0,1) × 10 (1,0,0,1) √ 3 (0,0,1,0) × 11 (1,0,1,0) × 4 (0,0,1,1) × 12 (1,0,1,1) √ 5 (0,1,0,0) × 13 (1,1,0,0) × 6 (0,1,0,1) × 14 (1,1,0,1) 7 (0,1,1,0) × 8 (0,1,1,1) × Zj √ √ √ 11 √ √ √ 14 √ √ √ √ 13 15 (1,1,1,0) √ × 16 (1,1,1,1) √ √ √ × (3) 由表6-5知,BIP问题的最优解:X=(1,0,1,1),最优值Z=14。 6.3 0-1规划的求解 Solving BIP Ch6 整数规划 Integer Programming 注: (1) 选择不同的初始可行解,计算量会不一样。一般地, 当目标函数求最大值时,首先考虑目标函数系数最大的变量 等于1,如例6.7。当目标函数求最小值时,先考虑目标函数 系数最大的变量等于0; (2) 在表6-5的计算过程中,当目标值等于14时,将其下界 11改为14,可以减少计算量。 6.3 0-1规划的求解 Solving BIP Ch6 整数规划 Integer Programming 1. 领会割平面法的基本原理; 2. 分离源行,求出Gomory约束; 3. 在最优表中增加Gomory约束,用 对偶单纯形法迭代。 4. 用隐枚举法求0-1规划的最优解; 作业:教材P76 T 8(2) The End of Chapter 6