資源描述:
《matlab求解線性規(guī)劃和整數(shù)規(guī)劃問題》由會員上傳分享,免費在線閱讀,更多相關內容在學術論文-天天文庫。
1、1.線性規(guī)劃問題:minf*xs.t.A*x<=bAeq*x=beqlb<=x<=ub其中:A為不等式約束的系數(shù)矩陣,Aeq表示等式約束的系數(shù)矩陣,b表示不等式約束的常向量,beq表示等式約束的常向量,lb和ub表示自變量的上下范圍。求解函數(shù):linprog(f,A,b,Aeq,beq,lb,ub)其中:f,A,b,Aeq,beq,lb,ub的定義如上。2.整數(shù)規(guī)劃問題:利用函數(shù)(linprog)先把BranchBound函數(shù)存在matlab的路徑下,BranchBound函數(shù)的內容如下:function[y,fval]=BranchBound(c,A,b,Aeq,b
2、eq)NL=length(c);UB=inf;LB=-inf;FN=[0];AA(1)={A};BB(1)=;k=0;flag=0;whileflag==0;[x,fval,exitFlag]=linprog(c,A,b,Aeq,beq);if(exitFlag==-2)
3、(fval>=UB)FN(1)=[];ifisempty(FN)==1flag=1;elsek=FN(1);A=AA{k};b=BB{k};endelsefori=1:NLifabs(x(i)-round(x(i)))>1e-7kk=FN(end);FN=[FN,kk+1,kk+2];temp
4、_A=zeros(1,NL);temp_A(i)=1;temp_A1=[A;temp_A];AA(kk+1)={temp_A1};b1=[b;fix(x(i))];BB(kk+1)={b1};temp_A2=[A;-temp_A];AA(kk+2)={temp_A2};b2=[b;-(fix(x(i))+1)];BB(kk+2)={b2};FN(1)=[];k=FN(1);A=AA{k};b=BB{k};break;endendif(i==NL)&(abs(x(i)-round(x(i)))<=1e-7)UB=fval;y=x;FN(1)=[];ifisempty(F
5、N)==1flag=1;elsek=FN(1);A=AA{k};b=BB{k};endendendendy=round(y);fval=c*y;再利用命令[y,fval]=BranchBound(c,A,b,Aeq,beq)即可。