6.4混合整数规划问题的计算机求解

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

整数线性问题求解
整数线性规划的一般数学描述为
min
f
T
x
Ax B x s.t Aeq x Beq ^ x 为整数
Matlab中自身没有提供整数线性规划的函数,一般采用荷兰的Eindhoven科技大学 Michel Berkelaar等人开发的LP_Solve包中的MATLAB支持的mex文件。函数表示为如 下:
另一方面,得出的解往往不是很精确的整数,所以应该在该函 数调用前后给出下面的补丁语句
调用前:ix=(intlist==1);xm(ix)=ceil(xm(ix));xM(ix)=floor(xM(ix)); 调用后:if lengthe(err)==0,x(ix)=round(x(ix)),end
一般非线性整数规划问题求解
0-1规划问题求解
0-1规划,指自变量xi的值或者为0,或者为1。Matlab提供了一个新函数 bintprog() 可以用来求解0-1线性规划问题,调用格式为 x=bintprog(f,A,B,Aeq,Beq)
min ( 3 x1 2 x1 5 x3 ) x1 2 x2 x3 2 x 4x x 4 1 2 3 x s.t. x1 x2 3 4 x2 x3 6
一般非线性整数规划问题求解
x0=[1;1];xm=-100*[1;1];xM=100*[1;1]; A=[];B=[];Aeq=[];Beq=[];intlist=[1 1]'; [errmsg,f,x]=bnb20('c6fun1',x0,intlist,xm,xM,A,B,Aeq,Beq); x' if length(errmsg)==0,x=round(x),end; x xm=-20*[1;1];xM=20*[1;1]; [errmsg,f,x]=bnb20('c6fun1',x0,intlist,xm,xM,A,B,Aeq,Beq); if length(errmsg)==0,x=round(x),end; x
[ x, how] ipslv _ mex( A, B, f ,int list, xM , xm , ctye)
intlist为整数约束标示,其第i个分量为1表示需要xi为整数。当前的版本ipslv_mex()函 数不能用于MALTLAB7.*下。
一般非线性整数规划问题求解
在实际应用中经常需要求解非线性整数规划或混合规划问题, 常用的方法是分枝定界算法。给出基于此算法编写的函数bnb20 ()该函数的调用格式为: [err,f,x]=bnb20(fun,x0,intlist,xm,Xm,A,B,Aeq,Beq,CFun) err为函数的错误信息字符串,x和f分别为最优解和其函数值。 如果正确返回最优解,则err字符串为空字符串。该函数尚有不 完全之处,一方面,接受xm和xM时,非整数的向量会导致问题;
分支定界法
算法原理:分支定揭发的基本思想是不断将可行域分割成小的 集合,然后在小的集合上找整数最优解,在分割可行域时,整 数解并不会丢失。 调用格式:[intx,intf]=IntProgFZ(f,A,b,Aeq,beq,Ib,ub) f:表示目标函数系数向量; A:不等式约束矩阵; b:不等式约束右端向量; Aeq:等式约束矩阵; beq:等式约束右端向量; ib:自变量下界; ub:自变量上界; intx:目标函数取最小值时的自变量值; intf :目标函数的最小值;
使用bnb20求解0-1规划问题
割平面法
算法原理:Gommory割平面法首先求解非整数约束的线性规划,在 选择一个不是整数的基变量,定义新的约束,增加到原来的约束中, 增加到原来的约束中,新的约束缩小了可行域,但是保留了原问题 的全部整数可行解。调用函数如下: [intx,intf]=DividePlane(A,c,b,baseVector) A:约束矩阵 c:目标函数系统向量; b:约束右端向量; basenVector:初始基向量 intx:目标函数取最小值时的自变量值; intf:目标函数的最小值
A=[0 2 1 4 2;3 4 5 -1 -1];intlist=ones(5,1); Aeq=[];Beq=[];B=[54;62]; xm=[0,0,3.32, 0.678,2.57]';xM=2000*ones(5,1); ix=(intlist==1);xm(ix)=ceil(xm(ix));x0=xm; [errmsg,f,X]=bnb20('c6miopt',x0,intlist,xm,xM,A,B,Aeq,Beq); if length(errmsg)==0, x(ix)=round(x(ix)),end intlist=[1,0,0,1,1]';ix=(intlist==1);xm(ix)=ceil(xm(ix)); [errmsg,f,X]=bnb20('c6miopt',x0,intlist,xm,xM,A,B,Aeq,Beq); if length(errmsg)==0,X(ix)=round(X(ix)),end
f=[-3,2,-5];A=[1 2 -1;1 4 1;1 1 0;0 4 1];B=[2;4;5;6]; x=bintprog(f,A,B,[],[])'
0-1规划问题求解
x0=[1;1;1];xm=[0;0;0];xM=[1;1;1];intlist=[1;1;1]; A=[1 2 -1;1 4 1;1 1 0;0 4 1];B=[2;4;5;6];Aeq=[];Beq=[]; [errmsg,f,x]=bnb20('c6fun2',x0,intlist,xm,xM,A,B,Aeq,Beq)
混合整数规划问题的计算机 求解
整数线性问题求解
最优化问题的要求除了满足约束条件的规则外,还需要是 的全部和部分自变量取整数,这类问题又称为整数规划。 其中要求全部。 要求全部自变量均为整数的最优问题又称为纯整数规划 问题,部分自变量要求为整数的最优化问题又称为混合整数规 划问题。要求自变量只能是Байду номын сангаас或1,这类规划问题又称为0-1规 划问题。 整数规划问题又分为线性整数规划问题和非线性整数规 划问题。书中介绍整数规划问题是分为了:整数线性规划问题, 整数非线性规划问题,0-1整数规划问题。
相关文档
最新文档