第二节 Gomory割平面法
割平面法——精选推荐

3 割平面法割平面法是通过生成一系列的平面割掉非整数部分来得到最优整数解的方法。
目前,割平面法有分数割平面法,原始割平面法,对偶整数割平面法,混合割平面法等。
我们介绍Gomory割平面法(纯整数规划割平面法)用例子说明割平面法基本思想。
例5-8求下列问题:Max Z=2x 1+ 3x 2s.t.2x 1+4x 2 ≤25x 1≤82x 2 ≤10x 1,x 2 ≥0,且取整数值化成标准问题Max Z=2x 1+ 3x 2s.t.2x 1+4x 2 + x 3 =25x 1+ x 4=82x 2 + x 5 =10x j 0,且取整数值松驰问题(P)Max Z=2x 1+ 3x 2s.t.2x 1+4x 2 + x 3 =25x 1+ x 4=82x 2 + x 5 =10x j 0松驰问题(P)用单纯形法求解得到最优解:B(8,9/4)Z=22(3/4)但不是原问题(IP)的解,(IP)可行域是OABDE内的全部方格点组成。
BD E O 1 2 3 4 5 6 7 A 8 9 10 11 1210987654321X 1X 2引进割平面法l 1: x 1+ x 2=10割去非整数部分FBG l 2: x 1+2x 2=12 割去非整数部分HDGFGB F D E l 1O 1 2 3 4 5 6 7 A 8 9 10 11 1210987654321X 12l 2G B F H D E O 1 2 3 4 5 6 7 A 8 9 10 11 1210987654321X 12GH E O 1 2 3 4 5 6 7 A 8 9 10 11 1210987654321X 12形成新的凸可行域OAGHE (整点凸包),它的极点G (方格点)是原规划(IP )的最优解(8,2)Z=22。
约束条件:l 1: x 1+ x 2≤10l 2: x 1+2x 2≤12称为割平面。
问题是如何寻找割平面?松驰问题(P)Max Z=2x 1+ 3x 2s.t.2x 1+4x 2 + x 3 =25x 1+ x 4=82x 2 + x 5 =10x j 0初始单纯形表C 2 3 0 0 0bΘC B X B X1X2X3X4X50 X3 2 4 1 0 0 250 X4 1 00 1 0 80 X50 20 0 1 10σC2 3 0C B X B X 1 X 2 X 3 X 4 X 5 bΘ2 X 1 1 0 0 1 0 8 0 X 5 0 0 -1/2 1 1 11/2 3X 2 0 1 1/4 -1/20 9/4 σ0 -3/4 -1/20 91/4最终单纯形表:最优解(8,9/4,0,0,11/2)Z =91/4C2 3 0C B X B X 1 X 2 X 3 X 4 X 5 bΘ2 X 1 1 0 0 1 0 8 0 X 5 0 0 -1/2 1 1 11/2 3X 2 0 1 1/4 -1/20 9/4 σ0 -3/4 -1/20 91/4X 2相应的方程:x 2+(1/4)x 3 –(1/2) x 4 =9/4x 2+(1/4)x 3 –(1/2) x 4 =9/4把所有系数分解成整数和非负真分数之和。
割平面法

31/7=4+3/7 于是,(1)式变为
4 1 3 x4 ( 1 ) x3 (3 ) x5 4 7 7 7
⑵
将所有整数项放在等式的左边,非整数值项放 在右边,得
3 4 1 x4 x3 3x5 4 x3 x5 7 7 7
⑶
⑶式左边是一个整数值,右边是一个小于1的 数。由于是等式,所以,右边应该是一个小于 或等于0的整数值,即
二、构造割平面约束的方法
在松弛问题的最优表中,设 b的分量bko不是 整数,将其分成整数与非负分数之和,即
bko Nko fko, 其中N ko为不超过bko的最大整数, fko为非负真分数; bko 所在行中的每一个非基 变量xj的系数分成整数与非负分数两部分:
ako , j Nko , j fko , j
1、求出松弛问题的最优解,若全部变量为整数解, 停止计算;否则转2。
2、构造割平面方程 •构造方法 割平面约束具备两个性质: ⑴ 已获得的非整数最优解不满足该线性约束, 从而保证在以后的解中不可能再出现。
⑵ 所有的整数解皆满足该线性约束,从而保 证整数规划问题的最优解始终都保留在每次所 形成的、新的线性规划问题的可行域中。 我们通过下面的例子来说明构造这种线性约束 的思路。
第二节 解纯整数规划的割平面法
一、 割平面方法的基本思想和步骤
二、构造割平面约束的方法
三、示例
一、 割平面方法的基本思想和步骤
•基本思想: 在IP问题的松弛问题中依次引进线性约束(称 Gomory约束或割平面),使问题的可行域逐步缩 小,所割去的区域仅包含问题的部分非整数解;当 规划问题的最优解恰好位于缩小的可行域的一个顶 点时,算法结束。 •求解步骤
运筹学__割平面法

x1
1 0 0 0 x1 1 0 0 0
x2
0 1 0 0 x2 0 1 0 0
x3
1/6 1/4 -1/4 -1/4 x3 0 0 1 0
x4
-1/6 1/4 -1/4 -1/4 x4 -1/3 0 1 0
s1
0 0 1 0 s1 2/3 1 -4 -1
CB
0 1 0
XB
x1 x2 x3
b
2/3 1 2
1 1 1 ( x 3 x4 ) 0 2 4 4
1 1 1 x3 x4 s1 4 4 2
Cj CB 0 1 0 σj XB x1 x2 s1 b 1 3/2 -1/2 -3/2 0 x1 1 0 0 0 1 x2 0 1 0 0 0 x3 1/6 1/4 -1/4 -1/4 0 x4 -1/6 1/4 -1/4 -1/4 0 s1 0 0 1 0
CB
0 1 0
XB
x1 x2 x3
b
2/3 1 2
x1
1 0 0
x2
0 1 0
x3
0 0 1
x4
-1/3 0 1
s1
2/3 1 -4
σj
-1
0
0
0
0
-1
CB 0
XB x1
b 2/3
x1 1
x2 0
x3 0
x4 -1/3
s1 2/3
1
0
x2
x3
1
2
0
0
1
0
0
1
0
1
1
-4
σj -1 0 0 0 0 -1 此时,X1 =(2/3, 1), Z=1,仍不是整数解。继续以x1为源行生成割 2 2 2 平面,其条件为:
5-2割平面法

1 x2 1 0 1 0 0 1/4
0 x3 1 0 0 1 -1 -1/3
-2 0 0 0 -1/3 -1/6
3 割平面法小结
1)令xi是线性规划最优解中为分数值的一个基变量
xi aik xk bi
k
2)将bi和a ik都分解成整数部分N和非负真分数f之和
bi Ni fi , 其中0<fi 1 aik Nik fik , 其中0 fik 1
筹
学
0
x1
图2 1
2 割平面法算例
例1 求解
m a x z x1 x 2
x1 x 2 1
3
x1 x1
,x
x
2
2
0
4
x 1 , x 2 整 数
最优解为:x1
3 4
,
x2
7 4
, max
z
10 4
表1
CB
初始计算 0
表
0
最终计算 1
表
Cj
1
XB b x1
x3 1 -1
x4 4 3
西安邮电大学 现代邮政学院
Xi'an post and telecommunications university modern post College
第五章 割平面法
主讲教师 武小平
主要内容
1 割平面法及其原理
2 割平面法算例
运
筹
3 割平面法小结
学
1 割平面法及其原理
割平面法添加能割去非整数解的线性约束条件,使
01
x1 3/4 1 x2 7/4 0
-5/2 0
100 x2 x3 x4 110 101 100 0 -1/4 1/4 1 3/4 1/4 1 -1/2 -1/2
深圳大学 运筹学课程教学大纲 (2)

包括⑴线性规划问题的基本理论和单纯形方法,对偶理论及对偶单纯形法,灵敏度分析。⑵求解整数线性规划问题的Gomory割平面法和分枝定界法。⑶非线性规划问题的基本概念及其性质,一维搜索方法,无约束优化问题的最优性条件及其最速下降法和共轭方向法,约束优化问题的最优性条件及其简单梯度法和惩罚函数法。⑷图与网络的基本概念,图的连通与割集,树与支撑树,最小树及其Kruskal与Dijkstra算法,最短有向路及其Dijkstra算法,最大流算法。
第五节约束最优化方法
教学要求
理解:非线性规划问题解的概念。
掌握:凸规划及其性质。
掌握:无约束优化问题及约束优化问题的最优性条件及其求解方法。
第五章网络分析
教学目的
使学生掌握几种典型网络模型的特征及其求解方法。
主要内容
第一节图与子图
第二节图的连通与割集
第三节树与支撑树
第四节最小树
第五节最短有向路
第六节最大流
国家级精品课程教材,面向二十一世纪教材——《运筹学》(第二版),刁在筠、郑汉鼎、刘家壮、刘桂真编,高等教育出版社,2001年9月
(九)参考书目
《运筹学》,钱颂迪,清华大学出版社,1987年.
《线性规划》,张建中,许绍吉,科学出版社,1997年.
《最优化理论和方法》,袁亚湘,孙文瑜,科学出版社,1997年.
3.题型与举例
深圳大学数学与计算科学学院
200×-200×学年第×学期期末考试A卷
课程运筹学年级
姓名成绩
一、判断题(每小题4分,共40分)
1、当原问题无可行解时,其对偶问题仅有无界解。
二、建模题(每小题10分,共30分)
1、现有三种机床,生产某种产品的两种零件。产品需要这两种零件的数目相同。各机床生产两种零件的日产量如表所示。问:应如何组织生产,是总产量最大。
割平面法

§3割平面法割平面法也是求解整数规划问题常用方法之一。
3.1基本思路用割平面法求解整数规划的基本思路是:先不考虑整数约束条件,求松弛问题的最优解,如果获得整数最优解,即为所求,运算停止。
如果所得到最优解不满足整数约束条件,则在此非整数解的基础上增加新的约束条件重新求解。
这个新增加的约束条件的作用就是去切割相应松弛问题的可行域,即割去松弛问题的部分非整数解(包括原已得到的非整数最优解)。
而把所有的整数解都保留下来,故称新增加的约束条件为割平面。
当经过多次切割后,就会使被切割后保留下来的可行域上有一个坐标均为整数的顶点,它恰好就是所求问题的整数最优解。
即切割后所对应的松弛问题,与原整数规划问题具有相同的最优解。
下面以全整数规划问题的割平面法为例,介绍割平面的求解过程。
3.2求解步骤与举例割平面法的具体求解步骤如下:1.对于所求的整数规划问题(4.2),先不考虑整数约束条件,求解相应的松弛问题(4.6)2.如果该问题无可行解或已取得整数最优解,则运算停止;前者表示原问题也无可行解,后者表示已求得整数最优解。
如果有一个或更多个变量取值不满足整数条件,则选择某个变量建立割平面。
3.增加为割平面的新约束条件,用前面介绍的灵敏分析的方法继续求解,返回1。
下面介绍割平面的建立方法及其求解过程。
例1 求解下列整数规划问题(4.7)解引入松弛变量,写成标准形式:(4.8)对上述模型不考虑整数条件,用单纯形法求解相应松弛问题的最终单纯形表为(表4-2)表4-215/38/3-13/3显然,为非整数解。
为求得整数解,我们想办法在原约束条件的基础下引入一个新的约束条件,以保证一个或几个变量取值为整数。
为此,在表4-2中任选一个取值非整数的变量,如,写出用基变量表示基变量的表达式:(4.9)将上式的所有变量的系数及右端常数均改写成一个整数与一个非负真分数之和的形式。
据此,(4.9)式可以改写成若将带有整数系数的变量整数项留在方程的左边,其余移到方程的右边,则有, (4.10) 由于要求变量取值为正整数,方程(4.10)的左边必为整数。
割平面法Gommoy

割平面法Gommoy算法步骤:① 求解原整数规划对应的线性规划 min f(x)=cx, .⎩⎨⎧≥≤为整数xi x b A t s x .0.,设最优解为x*.② 如果最优解的分量均为整数,则x*为原整数规划的最优解:否则任选一个x*中不是整数的分量,设其对应的基变量为x p ,, 定义包含这个基变量的切割约束方程∑=+jcom j ij b x r p x ,其中x j 为非基变量.③ 令][b b b ],[r com com com ij ij ij r r -=-=,其中[]为高斯函数符号,表示不大于某数的最大整数. 将切割约束方程变换为∑∑-=-+jj ij j j ijp x r x r x com com b ][b ][,由于10,1r 0<≤<≤com ij b ,所以有∑-j ij com x r b <1,因为自变量为整数,则∑-j ij com x r b 也为整数,所以进一步有∑-j ij com x r b <=0.④ 将切割方程加入约束方程中,用对偶单纯算法求解线性规划⎪⎪⎩⎪⎪⎨⎧≥≤-≤=∑00b b Ax .,)(min com x x r t s cx x f j j ij ,转 .算法MATLAB 实现代码:function [intx,intf]=Gomory(A,c,b,base)%约束矩阵:A;%目标函数系数向量:c%约束右端向量:b%初始基向量base%目标函数取最小化时的自变量值:x%目标函数的最小值:minfsz=size(A);nVia=sz(2);n=sz(1);xx=1:nVia;if length(base)~=ndisp('基变量的个数要与约束矩阵的行数相等!');mx=NaN;mf=NaN;return;endM=0;sigma=-[transpose(c) zeros(1,(nVia-length(c)))]; xb=b;while 1[maxs,ind]=max(sigma);if maxs<=0vr=find(c~=0,1,'last');for l=1:vrele=find(base==l,1);if(isempty(ele))mx(l)=0;elsemx(l)=xb(ele);endendif max(abs(round(mx)-mx))<1.0e-7intx=mx;intf=mx*c;return;elsesz=size(A);sr=sz(1);sc=sz(2);[max_x,index_x]=max(ads(round(mx)-mx)); [isB,num]=find(index_x==base);fi=xb(num)-floor(xb(num));for i=1:(index_x-1)Atmp(1,i)=A(num,i)-floor(A(num,i));endfor i=(infex_x+1):scAtmp(1,i)=A(num,i)-floor(A(num,i));end%构建对单纯形法的初始表格Atmp(1,index_x)=0;A=[A zeros(sr,1);-Atmp(1,:) 1];xb=[xb;-fi];base=[base sc+1];sigma=[sigma 0];%对偶单纯形法迭代过程while 1if(xb)>=0if max(abs(round(xb)-xb))<1.0e-7%用对偶单纯形法求得了整数解vr=find(c~=0 ,1,'last');for l=1:vrele =find (base==l,1);if(isempty(ele))mx_1(l)=0;elsemx_1(l)=xb(ele);endendintx=mx_1;intf=mx_1*c;return;elsesz=size(A);sr=sz(1);sc=sz(2);[max_x,index_x]=max(abs(round(mx_1)-mx_1)); [isB,num]=find(index_x==base);fi=xb(num)-flooor(xb (num));for i=1:(index_x-1)Atmp(1,i)=a(num,i)-floor(A(num,i));endfor i=(index_x+1):scAtmp(1,i)=a(num,i)-floor(a(num,i));end%下一次对偶单纯形法迭代的初始表格Atmp(1,index_x)=0;A=[A zeros(sr,1);-Atmp(1,:) 1];xb=[xb;-fi];base=[base sc+1];sigma=[sigma 0];continue;end%对偶单纯形法的换基变量过程elseminb_1=inf;chagB_1=inf;sA=size(A);[br,idb]=min(xb);for j=1:sA(2)if A(idb,j)<0bm=sigma(j)/A(idb,j);if bm<minb_1minb_1=bm;chagB_1=j;endendendsigma=sigma-A(idb,:)*minb_1;xb(idb)=xb(idb)/A(idb,chagB_1);A(idb,:)=A(idb,:)/A(idb,chagB_1);for i=1:sA(1)if i ~=idbxb(i)=xb(i)-A(i,chagB_1)*xb(idb);A(i,:)=A(i,:)-A(i,chagB_1)*A(idb,:);endendbase=chagB_1;endendendelseminb=inf;chagB=inf;for j=1:nif A(j,ind)>0bz=xb(j)/A(j,ind);if bz <minbminb=bz;chagB=j;endendendsigma=sigma-A(chagB,:)*maxs/A(chagB,ind);xb(chagB)=xb(chagB)/A(chagB,ind);A(chagB,:)=A(chagB,:)/A(chagB,ind); for i=1:nif i~=chagBxb(i)=xb(i)-A(i,ind)*xb(chagB); A(i,:)=A(i,:)-A(i,ind)*A(chagB,:); endendbase(chagB)=ind;endM=M+1;if (M==1000000)disp('找不到最优解!');mx=NaN;minf=NaN;return ;endend算法举例⎪⎩⎪⎨⎧≥≤+≤+--=为整数且2121212121,,0,4222.,)(inf m x x x x x x x x t s x x x解:首先引入人工变量x3,x4,将约束条件化为等式形式⎪⎩⎪⎨⎧≥=++=++--=为整数且21432142132121,,0,,,422x 2.,)(inf m x x x x x x x x x x x t s x x x在MATLAB 命令行输入下列命令:>>A=[-1 2 1 0 ;2 1 0 1];C=[1;-1];B=[2;4];>>[intx,intf]=Gomory(A,c,b,[3 4])结果为:intx= 0 1Intf= -1。
割平面法_精品文档

从而
fi-ΣfijXj≤0
⑸
取⑸式作为切割方程。因为任何整数可行解都满足这个方程,所以 把它加到原问题的约束中,它能够对原可行域进行切割,而不会切 割掉整数解。
例3 用割平面法求解
maxZ=x1+x2 -x1+x2≤1 3xx1,1x+2x≥20≤,4 整数
解:将问题标准化得
maxZ=x1+x2
⑴
-x1+x2=1
1
D B(1,1)
x3 =1+x1-x2 x4=4 -3x1-x2 代入切割方程 得
-1 0
3x1+x2=4
3(1+x1-x2)+(4-3x1-x2)≥3
1
x1
即 x2≤1,将此切割方程 加入原约 束中,就等于切掉原可行域得
A1B部分,如图。 显然在A1B区域不含整数解点,对原可行域切割的结果是产生了一
下面讨论切割方程的求法。
设与整数规划相对应的线性规划最优解中基变量XBi=(B-1b)i不 是整数,将最优单纯形表中该基变量对应的行还原成约束方程,即
XBi +ΣaijXj=(B-1b)i
⑴
将(B-1b)i,aij都分解成整数与非负真分数之和的形式,即
(B-1b)i=Ni+fi 其中0< fi <1 ⑵
aij=Nij+fij
其中0≤ fij <1 ⑶
这里Ni、Nij是整数,将⑵、 ⑶代入⑴,得
XBi +Σ(Nij+fij)Xj=Ni+fi
即
XBi +ΣNijXj-Ni=fi-ΣfijXj
⑷
当诸Xi都是整数时, ⑷式左端是整数,所以右端亦应是整数,但右
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
两个问题具有如下明显关系: (1) (P)的可行域包含在(P0)的可行域之中; (2) 若(P0)无可行解,则(P)无可行解;
(3) (P0)的最优值是(P)的最优值得一个下界;
(4) 若(P0)的最优解是整数向量,则它也是(P)的最优解.
1. Gomory 割平面法基本思想
由松弛问题的可行域向整数规划的可行域逼近:
n 0
x1 x2
xr
x m xm1
xn
sr
0 0 0
b1
br
1
1 1
a1m 1
a rm 1
a 1n
a rn
b b
r
bm
1 a mm 1
0 0 0
m1 0
r
a rm 1 a rm 1 arn arn 1
n 0
a mn
jN
xr
a
jN
rj
x j br
–
xr arj x j br
jN
(a
jN
rj
arj ) x j br 来自 br 加入松弛变量s
f rj arj arj ; f r br br
min c x Ax b s.t . f rj x j sr f r jN x 0, x Z
x1 x2 xr
x m xm1
xn
b1
br
1
1 1
a1m 1 a1n
a rm 1
a rn
bm
1 a mm 1 a mn
首先求解松弛问题,若松弛问题的最优解x0是
整数解,则其为原问题的最优解;否则,对松弛问
题增加一个线性约束条件(称之为割平面条件). 方法:利用超平面切除一部分可行域. 要求:整数解保留;非整数解x0恰好在被切除部 分,原整数规划问题任何一个可行点都没切除; 松弛问题最优值增加.
割平面法生成方法
割 平 面 生 成 方 法 条件:保留整数解,删除最优解!!
解答
例 3.2.1 解答
min x 2 3 x1 2 x 2 x 3 6 s.t . 3 x1 2 x 2 x 4 0 x1 , x 2 , x 3 , x 4 0
第1页
(1,1.5)
下面是求松弛问题的最后一张单纯形表:
b
xB
xN
B bb0
c B 1b B
1
I
B 0
B 1 N
N
如果b是一个整数向量,则它 也是(P)的最优解;否则设分量 b r 不是整数, 它所对应的约束方程为
xr arj x j br
jN
xr arj x j br
arj arj f rj a rj
第二节 Gomory割平面法
Gomory 割平面法基本思想 Gomory 割平面法计算步骤
1. Gomory 割平面法基本思想
整数规划
min z c x
对应的松弛问题
min z c x
(P)
(P0) Ax b Ax b s.t. s.t. x 0 x 0, x为整数
0
cB B b
1
0 0
0 m1 0
n 0
x1 x2 xr
x m xm1
xn
sr
0
0
b1
br
1
1 1
a1m 1 a1n
a rm 1
a rn
b
r
bm
1 a mm 1 1
arm 1
0 m1 0
a mn 0 arn 1
0
c B 1b 0 0 0 B
割平面方程
f rj x j s f r
jN
min c x
min c x Ax b s.t. x 0, x为整数
Ax b s.t. x r a rj x rj br jN x 0, x为整数
min c x Ax b s.t . xr arj xrj sr br j N x 0, x Z
rj
a
jN
br br f r
r r
b b
xr arj x j br
jN
整数可行解
最优基可行解
xr arj x j br
jN
xr arj x j br
c B 1b 0 0 B
0
x1 x2 xr
x m xm1
xn
sr
0
0 0
b1
br
1
1 1
a1m 1 a1n
a rm 1
a rn
bm
fr
1 a mm 1
0
f rm 1
a mn
f rn
1
0
c B 1b 0 0 B
fr 0
0
0 m1 0
n 0
2. Gomory 割平面法计算步骤
求松弛问题的 最优基可行解
判断是否 为整数解
是 得到最优解
否 在单纯性表中加入 一列利用对偶单纯 形算法求最优解
2. Gomory 割平面法计算步骤-例题
例3.2.1
求解ILP问题
max x 2 3 x1 2 x 2 6 s.t. 3 x1 2 x 2 0 x , x 0, 整数 1 2