资源描述:
《整数规划分支定界法matlab程序》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、function[x,y]=lpint(f,G,h,lb,ub,x,n,id)%整数线性规划分枝定界法,可求解线性全整数或线性混合整数规划%此程序基于Matlab优化工具箱的lp函数写成%此程序为GreenSim团队原创作品,转载请注明%欢迎访问GreenSim团队的主页http://blog.sina.com.cn/greensim% y=minf'x subjectto: Gx<=h x为整% x%用法% [x,y]=lpint(f,G,h)% [x,y]=lpint(f,G,
2、h,lb,ub)% [x,y]=lpint(f,G,h,lb,ub,x)% [x,y]=lpint(f,G,h,lb,ub,x,n)% [x,y]=lpint(f,G,h,lb,ub,x,n,id)%参数说明% x:最优解列向量% y:目标函数最小值% f:目标函数系数列向量% G:约束条件系数矩阵% h:约束条件右端列向量% lb:解的的下界列向量(Default:-inf)% ub:解的的上界列向量(Default:inf)% x:迭代初值列向量% n:等式约束数(Default:
3、0)% id:整数变量指标列向量。1-整数,0-实数(Default:1)%举例% minZ=x1+4x2%s.t. 2x1+x2<=8% x1+2x2>=6% x1,x2>=0且为整数%先将x1+2x2>=6化为-x1-2x2<=-6%》[x,y]=lpint([1;4],[21;-1-2],[8;-6],[0;0])%Y.MA&L.J.HU1999globalupperoptcNx0AbID;ifnargin<8,id=ones(size(f));endifnargin<7
4、isempty(n),n=0;en
5、difnargin<6,x=[];endifnargin<5
6、isempty(ub),ub=inf*ones(size(f));endifnargin<4
7、isempty(lb),lb=zeros(size(f));endupper=inf;c=f;N=n;x0=x;A=G;b=h;ID=id;temp=ILP(lb(:),ub(:));x=opt;y=upper;%以下子函数functiony=ILP(vlb,vub)globalupperoptcNx0AbID; warningoff; [x,temp,how]=lp(c,A,b
8、,vlb,vub,x0,N,-1); ifstrcmp(how,'ok')~=1 return; end; ifc'*x-upper>0.00005 %inordertoavoiderror return; end; ifmax(abs(x.*ID-round(x.*ID)))<0.00005 ifupper-c'*x>0.00005%inordertoavoiderror opt=x'; upper=c'*x; return; else opt=[opt;x']; re
9、turn; end; end; notintx=find(abs(x-round(x))>=0.00005);%inordertoavoiderror intx=fix(x); tempvlb=vlb; tempvub=vub; ifvub(notintx(1,1),1)>=intx(notintx(1,1),1)+1 tempvlb(notintx(1,1),1)=intx(notintx(1,1),1)+1; temp=ILP(tempvlb,vub); end; ifvlb(notintx(1,1),1)<=i
10、ntx(notintx(1,1),1) tempvub(notintx(1,1),1)=intx(notintx(1,1),1); temp=ILP(vlb,tempvub); end;