整数规划
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在( LP )的最优解 X(0)中,任选一个不符合整数条件 的变量,例如xr= br(不为整数),以 br 表示不超过
br的最大整数。构造两个约束条件
x r≤
br 和xr≥ br+1
将这两个约束条件分别加入问题( IP ) ,形成两个子 问题( IP1)和( IP2 ) ,再解这两个问题的松弛问题( LP1) 和( LP2) 。 4、修改上、下界:按照以下两点规则进行。 ⑴.在各分枝问题中,找出目标函数值最大者作为新 的上界; ⑵.从已符合整数条件的分枝中,找出目标函数值最 大者作为新的下界。 5、比较与剪枝 :
定界: 0 Z * 14.75
max Z 3 x1 2 x2 2 x1 x2 9 2 x1 3x2 14 st. x2 2 x 0, x 0 2 1 x1 , x2为整数
max Z 3 x1 2 x2 2 x1 x2 9 2 x1 3x2 14 st. x2 3 x 0, x 0 2 1 x1 , x2为整数
1 若分枝后得到整数解,则这枝不必再分枝。 2 若分枝后得到非整数解, 如果比整数解更好,则这枝继续分枝 3 若分枝后得到非整数解, 如果比整数解更差,则这枝不必再分枝 这里解的好坏是指对应目标函数值的大小
例2 用分枝定界法求解 Max z = 40x1+90x2 s.t. 9x1+7x2 56 7x1+20x2 70 x1,x2 0 x1,x2 整数 ① ② ③ ④ ⑤
分枝定界算法的基本步骤
max Z c j x j
j 1 n
考虑纯整数问题:
n aij x j bi (i 1.2 m) ( IP) j 1 x 0, ( j 1.2 m)且为整数 j
max Z c j x j
n
纯整数问题的松弛问 题:
还不能说这就得到了最优整数解,因为问题(3)的目标 值 z=341.390 > 340,所以问题(3)的后继问题的z值仍 有可能优于问题(4)的z值。我们还需分解问题(3):因 为x2 =1.517,我们分别附加约束条件x21(称为问题(6)) 和x22(称为问题(7))。 解问题(6),知它的后继问题的z最优值不可能超过307, 而307又小于已经取得的最优值340,所以问题(5)即可 舍去,不必再作分解了。而问题(7)又没有可行解,这 就说明了问题(1)(原问题)的最优整数解是x1=4, x2=2,且max z =340。
2x1+5x2 13
两直线交 点( 4,1 )
整数规划的图解法
( 4.8, 0 )
7.2.2 分枝定界算法
在求解整数规划时,首先容易想到的方法就是
穷举变量的所有可行的整数组合,就象在图1 中画出所有“ ”号的点那样,然后比较它们的 目标函数值以定出最优解。对于小型的问题, 变量数很少,可行的整数组合数也是很小时, 这个方法是可行的,也是有效的。
各分枝的目标函数值中,若有小于Z 者,则剪掉此 枝,表明此子问题已经探清,不必再分枝了;否则继续 分枝。
如此反复进行,直到得到Z=Hale Waihona Puke *=Z 为止,即得最优解 X* 。
非整数解A 增加约束 增加约束
整数解B1
非整数解B2, 比B1好 增加约束 增加约束
非整数解B4, 比B1,B3好
增加约束
整数B3 ,
2 如果仅一部分变数限制为整数,则称为混合整数 规划 (Mixed Integer Programming )。
3 整数规划的一种特殊情形是0—1规划,它的变量数取 值仅限于0或1。例如指派问题就是一个0—1规划问题。
7.2 整数规划求解方法
7.2.1 分枝定界法引入
例 1 地方政府拟用集装箱托运甲乙两种抗洪救灾货资,每 箱的体积、重量、可获效益以及托运所受限制如下表,问 两种货物各托运多少箱可使获得效益最大?
问题(2) 问题(3) z=349.000 z=341.390 x1 =4.000 x1 =5.000 x2 =2.100 x2 =1.571
仍然没有得到全部整数解,但349.00和341.39分别是 问题(2)和问题(3)任意整数可行解所对应z值的 上界。 继续对问题(2)和问题(3)进行分解:先分解问 题(2),因为它的z值上界更大些。分别增加约束 条 件 x22 ( 称 为 问 题 ( 4 ) ) 和 x23 ( 称 为 问 题 (5)),而舍去2< x2<3之间的可行域。以下的解题 过程都列在图4中。
X ( 0) (b1 , b2 ,, br ,, bm ,0,,0)T 目标函数最优值为 (0) .其中bi(i 1,2,, m)不全为整数 Z
⑴.若( LP )没有可行解,则( IP )也没有可行解,停止计算。
2、定界:
记( IP )的目标函数最优值为Z* , 以Z(0) 作为Z* 的上界, Z 记为 = Z(0) 。再用观察法找的一个整数可行解 X′, 并以其相应的目标函数值 Z′作为Z* 的下界,记为Z= Z′,则有: Z ≤ Z* ≤ Z 3、分枝:
Max Z = 20x1+10x2 St 5x1+4x2 24 2x1+5x2 13
体积约束 重量约束
如将(x1=4.8,x2=0)凑整为(x1=5,x2=0),这 样就破坏了条件②(关于体积的限制),因而它 不是可行解; 再如将(x1=4.8,x2=0)舍去尾数0.8,变为(x1=4, x2=0),这当然满足各约束条件,因而是可行解。 但不是最优解,因为当(x1=4,x2=0)时,z=80,但 是当(x1=4,x2=1),我们就有 z=90 。
Max Z = 20x1+10x2 s.t. 5x1+4x2 24 2x1+5x2 13 x1,x2 0 x1,x2 整数
① ② ③ ④ ⑤
在例1中,变量只有x1和x2,由条件②,x1所能 取的整数值为0,1,2,3,4其5个;由条件③, x2 所能取的整数值为0,1,2共3个,它的组合 (不都是可行的)数是35=15个,穷举法还是 勉强可用的。 但是对于大型的问题,可行的整数组合的数目 是非常大的!
图2
为了说明方便,我们称原问题为问题(1),它的可行域为 R1;称分解出来的两枝为问题(2)和问题(3),它们的 可行域分别为R2和R3,以下类推。
不考虑整数条件,解问题(2)和问题(3)得:
问题(2) 问题(3) z=349.000 z=341.390 x1 =4.000 x1 =5.000 x2 =2.100 x2 =1.571
IP2
IP3
LP2
LP3
LP3
max Z 3 x1 2 x2 2 x1 x2 9 st. 2 x1 3 x2 14 x 0, x 0 2 1 LP1
例3 用分枝定界法求解
max Z 3x1 2 x2 2 x1 x2 9 2 x 3 x 14 1 2 st. x1 0, x2 0 x1 , x2为整数 IP1
max st.
Z 3 x1 2 x2 2 x1 x2 9 2 x1 3 x2 14 x 0, x 0 2 1 LP1
j 1
n aij x j bi (i 1.2 m) ( LP) j 1 x j 0, ( j 1.2 m)
1、先不考虑整数约束,解( IP )的松弛问题( LP ),可能 得到以下情况之一: ⑵.若( LP )有最优解,并符合( IP )的整数条件,则( LP )的 最优解即为( IP )的最优解,停止计算。 ⑶.若( LP )有最优解,但不符合( IP )的整数条件,转入下 一步。为讨论方便,设( LP )的最优解为:
分枝定界法可用于解纯整数或混合的整数规划问 题。它是以求相应的线性规划的最优解为出发点,
如果这个解不符合整数条件,就将原问题分解成
几部分,每部分都增加了约束条件,这样就缩小 了原来的可行域。
考虑到整数规划是在相应的线性规划增加了变量 为整数的条件,所以可行解的范围要缩小,这就 说明整数规划的最优解不会更优于相应的线性规 划的最优解。 对于极大化问题来说,相应的线性规划的目标函 数的最大值就成为整数规划目标函数值的上界。 对于极小化问题来说,相应的线性规划的目标函 数的最小值就成为整数规划目标函数值的下界。 分枝定界法就是利用这个性质的一种解法。
第七章
整数规划
主讲教师: 陈 炜
学习目标
1、分枝定界法 2、 隐枚举法 3、割平面法
7.1 整数规划分类
1 整数规划中如果所有的变量数都限制为(非负)整 数,就称为纯整数规划(Pure Integer Programming)或 称为全整数规划(All Integer Programming)。
货物 甲 乙 托运限制
体积 每箱(米 3) 5 4 24
重量 每箱(百斤) 2 5 13
效益 每箱(百元) 20 10
注:用前述单纯形法求得的解不能保证是整数最优解。
解:设x1,x2分别为甲、乙两种货物的托运箱数(当然 都是非负整数)。这是一个(纯)整数规划问题,用 数学式可表示为: Max Z = 20x1+10x2 ① s.t. 5x1+4x2 24 ② 2x1+5x2 13 ③ x1,x2 0 ④ x1,x2 整数 ⑤
由上例看出,将其相应的线性规划的最优解 “化整”来解原整数规划,虽是最容易想到的, 但常常得不到整数规划的最优解,甚至根本不 是可行解。因此有必要对整数规划的解法进行
专门研究。
5x1+4x2 24
max
20x1 10x 2
25x1 4x 2 24 2x1 5x 2 13 x1 , x 2 0 x1 , x 2 Integer
图1
解:先不考虑条件⑤,即解相应的线性规划①—④), 得最优解: x1=4.809, x2=1.817, max z =355.890 就是图1中的B点!
分枝定界法首先注意其中一个非整数的变量(可 以任选). 例如选x1=4.809,而x1在4与5之间是不合整数条件 的,于是把原问题分解成两枝,各枝都增加了约 束条件,我们可认为最优整数解x1是 x14 或 x15, 如图2。
例如在指派问题中,将n项任务指派n个人去完 成,不同的指派方案共有n种, 当n=10,这个数就超过三百万;当n=20,这个
数就超过21018,如果一一计算,就是用每秒
百万次的计算机,也要几万年的时间!
很明显,解这样的题,穷举法是不可取的。我们
希望检查一部分可行的整数组合,就能确定出最
优的整数解。分枝定界解法(Branch and Bound Method)就是其中之一。
0 Z * 355.890
0 Z * 349
340 Z * 340
340 Z * 341.39
可以看出,问题(4)的解已经都是整数,它的目 标函数值是340。 问题(2)的另一分枝问题(5)的最优解仍不是整 数,要不要继续分解呢? 分枝问题(5)的目标值z=327.120,如果我们继续 分解,它的后继问题的解所对应的z值决不会超过 327!而327又小于已经取得的最优值340,所以问 题(5)即可舍去,不必再作分解了。
(IP)和线性规划问题的区别仅在于最后的条件⑤。
5x1+4x2 24
max
20x1 10x 2
25x1 4x 2 24 2x1 5x 2 13 x1 , x 2 0
2x1+5x2 13
两直线交 点(4,1)
目标函数 的等 值线
( 4.8, 0 )
现在我们暂不考虑这整数约束条件,我们称这样 的问题为原问题的松驰问题,很容易求得最优解 为: x1=4.8,x2=0, max Z = 96。 显然,x1是托运甲种货物的箱数,现在它不是整数, 所以不合条件⑤的要求。于是,很自然地想法是将 非整数的最优解经过“化整”,就可得到合于条 件⑤的整数最优解.
br的最大整数。构造两个约束条件
x r≤
br 和xr≥ br+1
将这两个约束条件分别加入问题( IP ) ,形成两个子 问题( IP1)和( IP2 ) ,再解这两个问题的松弛问题( LP1) 和( LP2) 。 4、修改上、下界:按照以下两点规则进行。 ⑴.在各分枝问题中,找出目标函数值最大者作为新 的上界; ⑵.从已符合整数条件的分枝中,找出目标函数值最 大者作为新的下界。 5、比较与剪枝 :
定界: 0 Z * 14.75
max Z 3 x1 2 x2 2 x1 x2 9 2 x1 3x2 14 st. x2 2 x 0, x 0 2 1 x1 , x2为整数
max Z 3 x1 2 x2 2 x1 x2 9 2 x1 3x2 14 st. x2 3 x 0, x 0 2 1 x1 , x2为整数
1 若分枝后得到整数解,则这枝不必再分枝。 2 若分枝后得到非整数解, 如果比整数解更好,则这枝继续分枝 3 若分枝后得到非整数解, 如果比整数解更差,则这枝不必再分枝 这里解的好坏是指对应目标函数值的大小
例2 用分枝定界法求解 Max z = 40x1+90x2 s.t. 9x1+7x2 56 7x1+20x2 70 x1,x2 0 x1,x2 整数 ① ② ③ ④ ⑤
分枝定界算法的基本步骤
max Z c j x j
j 1 n
考虑纯整数问题:
n aij x j bi (i 1.2 m) ( IP) j 1 x 0, ( j 1.2 m)且为整数 j
max Z c j x j
n
纯整数问题的松弛问 题:
还不能说这就得到了最优整数解,因为问题(3)的目标 值 z=341.390 > 340,所以问题(3)的后继问题的z值仍 有可能优于问题(4)的z值。我们还需分解问题(3):因 为x2 =1.517,我们分别附加约束条件x21(称为问题(6)) 和x22(称为问题(7))。 解问题(6),知它的后继问题的z最优值不可能超过307, 而307又小于已经取得的最优值340,所以问题(5)即可 舍去,不必再作分解了。而问题(7)又没有可行解,这 就说明了问题(1)(原问题)的最优整数解是x1=4, x2=2,且max z =340。
2x1+5x2 13
两直线交 点( 4,1 )
整数规划的图解法
( 4.8, 0 )
7.2.2 分枝定界算法
在求解整数规划时,首先容易想到的方法就是
穷举变量的所有可行的整数组合,就象在图1 中画出所有“ ”号的点那样,然后比较它们的 目标函数值以定出最优解。对于小型的问题, 变量数很少,可行的整数组合数也是很小时, 这个方法是可行的,也是有效的。
各分枝的目标函数值中,若有小于Z 者,则剪掉此 枝,表明此子问题已经探清,不必再分枝了;否则继续 分枝。
如此反复进行,直到得到Z=Hale Waihona Puke *=Z 为止,即得最优解 X* 。
非整数解A 增加约束 增加约束
整数解B1
非整数解B2, 比B1好 增加约束 增加约束
非整数解B4, 比B1,B3好
增加约束
整数B3 ,
2 如果仅一部分变数限制为整数,则称为混合整数 规划 (Mixed Integer Programming )。
3 整数规划的一种特殊情形是0—1规划,它的变量数取 值仅限于0或1。例如指派问题就是一个0—1规划问题。
7.2 整数规划求解方法
7.2.1 分枝定界法引入
例 1 地方政府拟用集装箱托运甲乙两种抗洪救灾货资,每 箱的体积、重量、可获效益以及托运所受限制如下表,问 两种货物各托运多少箱可使获得效益最大?
问题(2) 问题(3) z=349.000 z=341.390 x1 =4.000 x1 =5.000 x2 =2.100 x2 =1.571
仍然没有得到全部整数解,但349.00和341.39分别是 问题(2)和问题(3)任意整数可行解所对应z值的 上界。 继续对问题(2)和问题(3)进行分解:先分解问 题(2),因为它的z值上界更大些。分别增加约束 条 件 x22 ( 称 为 问 题 ( 4 ) ) 和 x23 ( 称 为 问 题 (5)),而舍去2< x2<3之间的可行域。以下的解题 过程都列在图4中。
X ( 0) (b1 , b2 ,, br ,, bm ,0,,0)T 目标函数最优值为 (0) .其中bi(i 1,2,, m)不全为整数 Z
⑴.若( LP )没有可行解,则( IP )也没有可行解,停止计算。
2、定界:
记( IP )的目标函数最优值为Z* , 以Z(0) 作为Z* 的上界, Z 记为 = Z(0) 。再用观察法找的一个整数可行解 X′, 并以其相应的目标函数值 Z′作为Z* 的下界,记为Z= Z′,则有: Z ≤ Z* ≤ Z 3、分枝:
Max Z = 20x1+10x2 St 5x1+4x2 24 2x1+5x2 13
体积约束 重量约束
如将(x1=4.8,x2=0)凑整为(x1=5,x2=0),这 样就破坏了条件②(关于体积的限制),因而它 不是可行解; 再如将(x1=4.8,x2=0)舍去尾数0.8,变为(x1=4, x2=0),这当然满足各约束条件,因而是可行解。 但不是最优解,因为当(x1=4,x2=0)时,z=80,但 是当(x1=4,x2=1),我们就有 z=90 。
Max Z = 20x1+10x2 s.t. 5x1+4x2 24 2x1+5x2 13 x1,x2 0 x1,x2 整数
① ② ③ ④ ⑤
在例1中,变量只有x1和x2,由条件②,x1所能 取的整数值为0,1,2,3,4其5个;由条件③, x2 所能取的整数值为0,1,2共3个,它的组合 (不都是可行的)数是35=15个,穷举法还是 勉强可用的。 但是对于大型的问题,可行的整数组合的数目 是非常大的!
图2
为了说明方便,我们称原问题为问题(1),它的可行域为 R1;称分解出来的两枝为问题(2)和问题(3),它们的 可行域分别为R2和R3,以下类推。
不考虑整数条件,解问题(2)和问题(3)得:
问题(2) 问题(3) z=349.000 z=341.390 x1 =4.000 x1 =5.000 x2 =2.100 x2 =1.571
IP2
IP3
LP2
LP3
LP3
max Z 3 x1 2 x2 2 x1 x2 9 st. 2 x1 3 x2 14 x 0, x 0 2 1 LP1
例3 用分枝定界法求解
max Z 3x1 2 x2 2 x1 x2 9 2 x 3 x 14 1 2 st. x1 0, x2 0 x1 , x2为整数 IP1
max st.
Z 3 x1 2 x2 2 x1 x2 9 2 x1 3 x2 14 x 0, x 0 2 1 LP1
j 1
n aij x j bi (i 1.2 m) ( LP) j 1 x j 0, ( j 1.2 m)
1、先不考虑整数约束,解( IP )的松弛问题( LP ),可能 得到以下情况之一: ⑵.若( LP )有最优解,并符合( IP )的整数条件,则( LP )的 最优解即为( IP )的最优解,停止计算。 ⑶.若( LP )有最优解,但不符合( IP )的整数条件,转入下 一步。为讨论方便,设( LP )的最优解为:
分枝定界法可用于解纯整数或混合的整数规划问 题。它是以求相应的线性规划的最优解为出发点,
如果这个解不符合整数条件,就将原问题分解成
几部分,每部分都增加了约束条件,这样就缩小 了原来的可行域。
考虑到整数规划是在相应的线性规划增加了变量 为整数的条件,所以可行解的范围要缩小,这就 说明整数规划的最优解不会更优于相应的线性规 划的最优解。 对于极大化问题来说,相应的线性规划的目标函 数的最大值就成为整数规划目标函数值的上界。 对于极小化问题来说,相应的线性规划的目标函 数的最小值就成为整数规划目标函数值的下界。 分枝定界法就是利用这个性质的一种解法。
第七章
整数规划
主讲教师: 陈 炜
学习目标
1、分枝定界法 2、 隐枚举法 3、割平面法
7.1 整数规划分类
1 整数规划中如果所有的变量数都限制为(非负)整 数,就称为纯整数规划(Pure Integer Programming)或 称为全整数规划(All Integer Programming)。
货物 甲 乙 托运限制
体积 每箱(米 3) 5 4 24
重量 每箱(百斤) 2 5 13
效益 每箱(百元) 20 10
注:用前述单纯形法求得的解不能保证是整数最优解。
解:设x1,x2分别为甲、乙两种货物的托运箱数(当然 都是非负整数)。这是一个(纯)整数规划问题,用 数学式可表示为: Max Z = 20x1+10x2 ① s.t. 5x1+4x2 24 ② 2x1+5x2 13 ③ x1,x2 0 ④ x1,x2 整数 ⑤
由上例看出,将其相应的线性规划的最优解 “化整”来解原整数规划,虽是最容易想到的, 但常常得不到整数规划的最优解,甚至根本不 是可行解。因此有必要对整数规划的解法进行
专门研究。
5x1+4x2 24
max
20x1 10x 2
25x1 4x 2 24 2x1 5x 2 13 x1 , x 2 0 x1 , x 2 Integer
图1
解:先不考虑条件⑤,即解相应的线性规划①—④), 得最优解: x1=4.809, x2=1.817, max z =355.890 就是图1中的B点!
分枝定界法首先注意其中一个非整数的变量(可 以任选). 例如选x1=4.809,而x1在4与5之间是不合整数条件 的,于是把原问题分解成两枝,各枝都增加了约 束条件,我们可认为最优整数解x1是 x14 或 x15, 如图2。
例如在指派问题中,将n项任务指派n个人去完 成,不同的指派方案共有n种, 当n=10,这个数就超过三百万;当n=20,这个
数就超过21018,如果一一计算,就是用每秒
百万次的计算机,也要几万年的时间!
很明显,解这样的题,穷举法是不可取的。我们
希望检查一部分可行的整数组合,就能确定出最
优的整数解。分枝定界解法(Branch and Bound Method)就是其中之一。
0 Z * 355.890
0 Z * 349
340 Z * 340
340 Z * 341.39
可以看出,问题(4)的解已经都是整数,它的目 标函数值是340。 问题(2)的另一分枝问题(5)的最优解仍不是整 数,要不要继续分解呢? 分枝问题(5)的目标值z=327.120,如果我们继续 分解,它的后继问题的解所对应的z值决不会超过 327!而327又小于已经取得的最优值340,所以问 题(5)即可舍去,不必再作分解了。
(IP)和线性规划问题的区别仅在于最后的条件⑤。
5x1+4x2 24
max
20x1 10x 2
25x1 4x 2 24 2x1 5x 2 13 x1 , x 2 0
2x1+5x2 13
两直线交 点(4,1)
目标函数 的等 值线
( 4.8, 0 )
现在我们暂不考虑这整数约束条件,我们称这样 的问题为原问题的松驰问题,很容易求得最优解 为: x1=4.8,x2=0, max Z = 96。 显然,x1是托运甲种货物的箱数,现在它不是整数, 所以不合条件⑤的要求。于是,很自然地想法是将 非整数的最优解经过“化整”,就可得到合于条 件⑤的整数最优解.