资源描述:
《整数规划分支定界算法matlab通用源程序.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、整数规划分支定界算法matlab通用源程序%整数规划分支定界算法matlab通用源程序%各参数的意义同matlab优化工具箱的线性规划函数linprog%调用前,输入参数要化成matlab的标准形式[x,val]=kfz-f-3(n,f,a,b,aeq,beq,lb,ub)x=zeros(n,1);x1=zeros(n,1);m1=2;m2=1;[x1,val1]=linprog(f,a,b,aeq,beq,lb,ub);if(x1==0)x=x1;val=val1;elseif(round(x1)==x1)x=x1;val=val1;elsee1={0,a,b,
2、aeq,beq,lb,ub,x1,val1};e(1,1)={e1};zl=0;zu=-val1;while(zu~=zl)forc=1:1:m2if(m1~=2)if(cell2mat(e{m1-1,c}(1))==1)e1={1,[],[],[],[],[],[],[],0};e(m1,c*2-1)={e1};e(m1,c*2)={e1};continue;end;end;x1=cell2mat(e{m1-1,c}(8));x2=zeros(n,1);s=0;s1=1;s2=1;lb1=cell2mat(e{m1-1,c}(6));ub1=cell2mat(e
3、{m1-1,c}(7));lb2=cell2mat(e{m1-1,c}(6));ub2=cell2mat(e{m1-1,c}(7));ford=1:1:nif(abs((round(x1(d))-x1(d)))>0.0001)&(s==0)s=1;lb1(d)=fix(x1(d))+1;if(a*lb1<=b)s1=0;end;ub2(d)=fix(x1(d));if(a*lb2<=b)s2=0;end;end;end;e1={s1,a,b,aeq,beq,lb1,ub1,[],0};e2={s2,a,b,aeq,beq,lb2,ub2,[],0};e(m1,c*
4、2-1)={e1};e(m1,c*2)={e2};end;m1=m1+1;m2=m2*2;forc=1:1:m2if(cell2mat(e{m1-1,c}(1))==0)[x1,val1]=linprog(f,cell2mat(e{m1-1,c}(2)),cell2mat(e{m1-1,c}(3)),cell2mat(e{m1-1,c}(4)),cell2mat(e{m1-1,c}(5)),cell2mat(e{m1-1,c}(6)),cell2mat(e{m1-1,c}(7)));e1={cell2mat(e{m1-1,c}(1)),cell2mat(e{m1-
5、1,c}(2)),cell2mat(e{m1-1,c}(3)),cell2mat(e{m1-1,c}(4)),cell2mat(e{m1-1,c}(5)),cell2mat(e{m1-1,c}(6)),cell2mat(e{m1-1,c}(7)),x1,val1};e(m1-1,c)={e1};end;z=val1;if((-z)<(-zl))e1={1,[],[],[],[],[],[],[],0};e(m1-1,c)={e1};elseif(abs(round(x1)-x1)<=0.0001)zl=z;end;end;forc=1:1:m2if(cell2ma
6、t(e{m1-1,c}(1))==0)zu=cell2mat(e{m1-1,c}(9));end;end;forc=1:1:m2if(-cell2mat(e{m1-1,c}(9))>(-zu))zu=cell2mat(e{m1-1,c}(9));end;end;end;forc=1:1:m2if(cell2mat(e{m1-1,c}(1))==0)&(cell2mat(e{m1-1,c}(9))==zu)x=cell2mat(e{m1-1,c}(8));end;end;val=zu;end;