MATLAB分支定界法程序(共5页).doc
《MATLAB分支定界法程序(共5页).doc》由会员分享,可在线阅读,更多相关《MATLAB分支定界法程序(共5页).doc(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上源代码如下:function x,y=ILp(f,G,h,Geq,heq,lb,ub,x,id,options) %整数线性规划分支定界法,可求解纯整数规划和混合整数规划。 %y=minf*x s.t. G*x=h Geq*x=heq x为全整数或混合整数列向量 %用法 %x,y=ILp(f,G,h,Geq,heq,lb,ub,x,id,options) %参数说明 %lb:解的下界列向量(Default:-int) %ub:解的上界列向量(Default:int) %x:迭代初值列向量 %id:整数变量指标列向量,1-整数,0-实数(Default:1) globa
2、l upper opt c x0 A b Aeq beq ID options; if nargin10,options=optimset();options.Display=off; options.LargeScale=off;end if nargin9,id=ones(size(f);end if nargin8,x=;end if nargin7 |isempty(ub),ub=inf*ones(size(f);end if nargin6 |isempty(lb),lb=zeros(size(f);end if nargin5,heq=;end if nargin4,Geq=;en
3、d upper=inf;c=f;x0=x;A=G;b=h;Aeq=Geq;beq=heq;ID=id; ftemp=ILP(lb(:),ub(:); x=opt;y=upper; %下面是子函数 function ftemp=ILP(vlb,vub) global upper opt c x0 A b Aeq beq ID options; x,ftemp,how=linprog(c,A,b,Aeq,beq,vlb,vub,x0,options); if how 0.00005 %in order to avoid error return; end; if max(abs(x.*ID-rou
4、nd(x.*ID)0.00005 %in order to avoid error opt=x;upper=ftemp; return; else opt=opt;x; return; end; end; notintx=find(abs(x-round(x)=0.00005); %in order to avoid error intx=fix(x);tempvlb=vlb;tempvub=vub; if vub(notintx(1,1),1)=intx(notintx(1,1),1)+1; tempvlb(notintx(1,1),1)=intx(notintx(1,1),1)+1; ft
5、emp=IntLP(tempvlb,vub); end; if vlb(notintx(1,1),1)c=1,1,-4;a=1,1,2;1,1,-1;-1,1,1;b=9;2;4; x,f=ILp(c,a,b,0;0;0,inf;inf;inf)从你的程序中的如下这条语句可以看出变量ID是全局变量:global upper opt c x0 A b Aeq beq ID options;该全局变量(ID)是在你的函数之外被别的程序语句进行过赋值,而且也很有可能被赋成了向量/矩阵、并且它的大小跟向量x的大小并不相同,这就造成了进行运算x.*ID的时候不匹配的问题第二个:题目:min (4*x1+
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 分支 定界 程序
限制150内