系统工程---第四章 整数规划
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
各分枝问题的解可能出现的情况
序号 问题 B 1 问题 B 2 无可行解 无可行解 1 无可行解 整数解 2 无可行解 非整数解 3 整数解 整数解 4 非整数解 5 整数解,目标函 数优于问题 B 2 整数解 非整数解,目标 6 函数优于问题 B 1
说 明 整数规划无可行解 此整数解即最优解 对问题 B 2 继续分枝 较优的一个为最优解 问题 B 1 的解即最优解 问 题 B1 停 止 分 枝 ( 剪 枝 ) , 其 整 数解 为 界, 对问题 B 2 继续分枝
满足约
束条件?
f值
(0,0,0) (0,0,1) (0,1,0) (0,1,1) (1,0,0) (1,0,1) (1,1,0) (1,1,1)
√ √ √
0 5 -2
3 8
×
√ √
× ×
最优解为X*= (1,0,1)
隐枚举法
所谓隐枚举法就是只检查变量取值组合的一部分就能求得 问题最优解的方法。其基本思路是:先找到一组可行解, 增加一个过滤条件,然后改进过滤值,直至不能改进为止。
问题B2 x1=2.25 x2=4 f2=272.5
90 f * 285
max f 50x1 40x 2 4 x1 5 x 2 29 3 x1 2 x 2 16 问题B4 x 2 3 x 4 1 x1 , x 2 0
继续对问题B1和 B2进行分解, 因f1 >f2,先分解B1为B3和 B4
第四章 整数规划
一、 整数规划简介
•整数规划是数学规划的一个重要分支,它研究的是一类 要求其部分或全部变量取整数的最优化问题。
•要求所有的解xj 为整数,称为纯整数规划
•要求部分的xj 为整数,称为混合整数规划
•要求xj 的取值只能是0和1
整数规划 数学模型
max(min) f ( x ) c j x j
指派问题的特点:
指派问题不但是整数规划,而且是01规划
指派问题也是运输问题的特例,即m=n , ai=bj=1。
指派问题有2n个约束条件,但有且只有n个非零解,是 自然高度退化的
指派问题的可行解矩阵中,各行各列的元素之和都是1。 如: 0 1 0 0 0 0 1 0 ( xij ) 1 0 0 0 0 0 0 1
4 x1 5 x 2 29 3 x1 2 x 2 16 问题B2 x2 4 x1 , x 2 0
求解各分枝问题
问题B1 x1=3.3 x2=3 f1=285
因f1 >f2,故有
max f 50x1 40x 2 4 x1 5 x 2 29 3x1 2 x 2 16 问题B3 x 2 3 x 3 1 x1 , x 2 0
整数规划问题A
max(min)f ( x) c j x j
j 1 n
其松弛问题B
max(min)f ( x) c j x j
j 1 n
n a ij x j (, )bi , i 1,2, , m j 1 x j 0 且为整数, j 1,2, , n
枚举法 即检查变量取值为0或1的每一个组合,比较目标函数值的大 小以求得最优解。 例3 求解0-1规划
max f x x x x x x x x x x x x x x , x , x 或
2. 0-1规划的解法
① ② ③ ④
解 (x1,x2,x3)共有23=8种不同的组合,各种组合 下目标函数及各约束条件左端的值列于下表:
枚举法表
约束条件 (x1,x2,x3)
①
0 -1 2 1 1 0 3 2
②
0 1 4 5 1 2 5 6
③
0 0 1 1 1 1 2 2④0 1 4 5 0 1 4 5
问题B2的解即为原整数规划问题A的最优解
×
可能存在两个分枝都是非整数解的情况,则需要两边同时 继续分枝,直到有整数解出现,就可以进行定界过程 当有很多变量有整数约束时,分枝既广又深,在最坏情况 下相当于组合所有可能的整数解
例2
max f 50x1 40x 2
分枝定界法举例
max f 50x1 40x 2
由 x1=2.5 得到两个分枝如下:
max f 6 x1 4 x 2 2 x1 4 x 2 13 2 x1 x 2 7 问题B2 x1 3 x1 , x 2 0
2 x1 4 x 2 13 2 x1 x 2 7 问题B1 x1 2 x1 , x 2 0
例3 求解0-1规划
max f x x x x x x x x x x x x x x , x , x 或
① ② ③ ④
情况 2, 4, 5 找到最优解 情况 3 在缩减的域上继续分枝定界法 情况 6 问题 1 的整数解作为界被保留,用于以后与问题 2 的后续分枝所得到的解进行比较,结论如情况 4或5
分枝定界法举例
例1
max f 6 x1 4 x 2
max f 6 x1 4 x 2 2 x1 4 x 2 13 2 x1 x 2 7 x ,x 0 1 2
4 x1 5 x 2 29 问题A 3x1 2 x 2 16 x , x 0 且为整数 1 2
4 x1 5 x 2 29 松弛问题B 3 x1 2 x 2 16 x ,x 0 1 2
解:松弛问题B的最优解为 x1=3.142 , x2=3.285 , f =288.5 x1=1 , x2=1 显然是问题A的一个可行解, 其目标函数值为90 , 这时有
i 1 j 1
n
n
n xij 1 i 1,2, , n j 1 n x 1 j 1,2, , n ij i 1 xij 0,1
模型中:cij 为第 i 个工人完成第 j 项任务的时间(成本、费用);
{cij}nn 称为效率矩阵
0
2
1
1
× √ × × × √ × ×
5
8
最优解为X*= (1,0,1)
3.指派问题
(1)指派问题的数学模型: 引入0-1变量xij (i,j=1,2,…,n)
j项任务时 1 当指派第i个工人去完成第 xij j项任务时 0 当不指派第i个工人去完成第
min f cij xij
f f1
再用观察法找到 A的一个整数可行解,求其目标函数值作为 f*的下界,记为f,这时有 f f * f Step3 判断 f 是否等于 f 。如果 f f ,则 A 的最优解即为 其目标函数值等于 f 的那个整数可行解。否则,进行Step4。
Step4 分枝,在B的最优解中任选一个不符合整数条件的变量 xj=bj,以[bj]表示小于bj的最大整数。构造两个约束条件:
求解两个分枝问题
问题 B1 x1=2 x2=2.25 f 1=21 问题 B2 x1=3 x2=1 f 2=22
松弛问题B x1=2.5 x2=2 f=23 x1≤2 问题B1 x1=2 x2=2.25 f1=21
10≤f *≤23
x1≥3 问题B2 x1=3 x2=1 f2=22
22≤f *≤23
n a ij x j (, )bi , i 1,2, , m j 1 x j 0 , j 1,2, , n
二、整数规划的解法
1.分枝定界法 分枝定界法是一种计算与分析判断相结合的求解整数规划 问题的重要方法。它既能解决纯整数规划问题,又能解决混合 整数规划问题。这种方法有很强的适应能力,是目前较为成功 的求解整数规划问题的一种方法。
求解各分枝问题
问题B3 x1=3 x2=3 f3=270
因f4 >f3,故有
280 f * 285
问题B4 x1=4 x2=2 f4=280
因f2=272.5<280,所以再分解 B2已无必要,剪去该分枝。
故x1=4 ,x2=2 为原问题A的最优解,最优目标函数值为280。
松弛问题B x1=3.142 x2=3.285 f=288.5
90 f * 288.5
x2≥4
问题B2
x2≤3 问题B1
x1=3.3 x2=3 f1=285 x1≤3 问题B3 x1=3 x2=3 f3=270 x1≥4 问题B4 x1=4 x2=2 f4=280
x1=2.25 x2=4 f2=272.5
90 f * 285
×
280 f * 285
基本思想:分枝定界法是通过有系统的“分枝”和“定界” 步骤来寻求最优解的。它是先求解松弛问题,如果其最优解 不符合整数条件,则求出整数规划的上下界,用增加约束条 件的方法把相应的线性规划的可行域分成子区域(称为分 枝),再求解这些子区域上的线性规划问题,不断缩小整数 规划的上下界距离,最后取得整数规划的最优解。
指派问题,有著名的匈牙利算法
分枝定界法的解题步骤:
Step1 求解松弛问题B, -若松弛问题B无解,则整数规划A也无解,则停止。 -若 B有最优解,且符合问题 A的整数条件,则 B的最优解也是 A的最优解,则停止。 -若 B有最优解,但不符合 A的整数条件,记其目标函数值为 f1。 Step2 确定A的最优目标函数值f*的上下界,其上界为f1,即
2 x1 4 x 2 13 松弛问题B 问题A 2 x1 x 2 7 x , x 0 且为整数 1 2
10≤f *≤23
解:松弛问题B的最优解为 x1=2.5 , x2=2 , f =23 显然x1=1 , x2=1是问题A的可行解,其目标函数值为10
于是有
max f 6 x1 4 x 2
j 1
,称为0-1型整数规划 n
n aij x j ( , )bi , i 1,2,, m s.t. j 1 x j 0 且为整数, j 1,2,, n
•对应没有整数解要求的线性规划称之为松弛问题 •整数规划的解是可数个的,最优解不一定发生在极点 •整数规划的最优解不会优于其松弛问题的最优解
90 f * 288.5 由 x2=3.285 得到两个分枝如下:
max f 50x1 40x 2 4 x1 5 x 2 29 3x1 2 x 2 16 问题B1 x2 3 x1 , x 2 0
max f 50x1 40x 2
解 用观察法找一个可行解(x1,x2,x3)= (1,0,0), 其目标函数值为3。 于是增加过滤条件: 3x1-2x2+5x3≥3 ◎
隐枚举法表
约束条件 (x1,x2,x3)
◎
0 5 -2 3 3 8 1 6
①
-1
②
1
③
0
④
1
满足约
束条件?
f值
(0,0,0) (0,0,1) (0,1,0) (0,1,1) (1,0,0) (1,0,1) (1,1,0) (1,1,1)
xj≤ [bj]
和
xj ≥ [bj]+1
将这两个约束条件分别加入问题B,得到B的两个分枝B1和B2。 Step5 求解分枝B1, B2。修改A的最优目标函数值的上下界。 在各分枝问题的最优解中,找出最优目标函数值最大者作为新 的上界。从已符合整数条件的各分枝中,找出目标函数值最大 者作为新的下界,这就是定界过程。 Step6 比较与剪枝。各分枝的最优目标函数中若有小于 f 者, 则剪掉这枝,即以后不再考虑了。若大于 f ,且不符合整数条 件,则重复Step4至Step6,直至 f * f ,求出整数最优解为止。