資源描述:
《用matlab求解線性規(guī)劃問題》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、實驗四用MATLAB求解線性規(guī)劃問題一、實驗?zāi)康模毫私釳atlab的優(yōu)化工具箱,能利用Matlab求解線性規(guī)劃問題。二、實驗內(nèi)容:線性規(guī)劃的數(shù)學(xué)模型有各種不同的形式,其一般形式可以寫為:目標函數(shù):約束條件:這里稱為目標函數(shù),稱為價值系數(shù),稱為價值向量,為求解的變量,由系數(shù)組成的矩陣稱為不等式約束矩陣,由系數(shù)組成的矩陣稱為等式約束矩陣,列向量和為右端向量,條件稱為非負約束。一個向量,滿足約束條件,稱為可行解或可行點,所有可行點的集合稱為可行區(qū)域,達到目標函數(shù)值最大的可行解稱為該線性規(guī)劃的最優(yōu)解,相應(yīng)的目標函數(shù)值稱為最優(yōu)目標函數(shù)值,簡稱最優(yōu)值。我們這里介紹利用Matlab來求解線
2、性規(guī)劃問題的求解。在Matlab中有一個專門的函數(shù)linprog()來解決這類問題,我們知道,極值有最大和最小兩種,但求的極大就是求的極小,因此在Matlab中以求極小為標準形式,函數(shù)linprog()的具體格式如下:X=linprog(f,A,b)[X,fval,exitflag,ouyput,lamnda]=linprog(f,A,b,Aeq,Beq,LB,UB,X0,options)這里X是問題的解向量,f是由目標函數(shù)的系數(shù)構(gòu)成的向量,A是一個矩陣,b是一個向量,A,b和變量x={x1,x2,…,xn}一起,表示了線性規(guī)劃中不等式約束條件,A,b是系數(shù)矩陣和右端向量。A
3、eq和Beq表示了線性規(guī)劃中等式約束條件中的系數(shù)矩陣和右端向量。LB和UB是約束變量的下界和上界向量,X0是給定的變量的初始值,options為控制規(guī)劃過程的參數(shù)系列。返回值中fval是優(yōu)化結(jié)束后得到的目標函數(shù)值。exitflag=0表示優(yōu)化結(jié)果已經(jīng)超過了函數(shù)的估計值或者已聲明的最大迭代次數(shù);exitflag>03表示優(yōu)化過程中變量收斂于解X,exitflag<0表示不收斂。output有3個分量,iterations表示優(yōu)化過程的迭代次數(shù),cgiterations表示PCG迭代次數(shù),algorithm表示優(yōu)化所采用的運算規(guī)則。lambda有4個分量,ineqlin是線性不等
4、式約束條件,eqlin是線性等式約束條件,upper是變量的上界約束條件,lower是變量的下界約束條件。它們的返回值分別表示相應(yīng)的約束條件在約束條件在優(yōu)化過程中是否有效。三、實驗方法與步驟:例1:某工廠生產(chǎn)A,B兩種產(chǎn)品,所用原料均為甲、乙、丙三種:生產(chǎn)一件產(chǎn)品所需原料和所獲利潤以及庫存原料情況如下所示:原料甲(公斤)原料乙(公斤)原料丙(公斤)利潤(元)產(chǎn)品A8447000產(chǎn)品B68610000庫存原料量380300220在該廠只有表中所列庫存原料的情況下,如何安排A,B兩種產(chǎn)品的生產(chǎn)數(shù)量可以獲得最大利潤?設(shè)生產(chǎn)A產(chǎn)品件,生產(chǎn)B產(chǎn)品件,為所獲利潤,我們將問題歸結(jié)為如下的線
5、性規(guī)劃問題:s.t.接著寫出Matlab程序如下:clearf=-[7000,10000];A=[8,6;4,8;4,6];b=[380,300,220];[X,fval]=linprog(f,A,b)運行結(jié)果為:Optimizationterminated.X=40.000010.0000fval=-3.8000e+005例2:求解下面的線性規(guī)劃問題:s.t.,,解決上述問題的Matlab程序為:Clearf=-[5,4,6];A=[1,-2,1;3,2,4;3,2,0];b=[20,42,30];LB=[0;0;0];[X,fval,exitflag,output,lam
6、bda]=linprog(f,A,b,[],[],LB)程序運行的結(jié)果為:Optimizationterminated.3X=0.000015.00003.0000fval=-78.0000exitflag=1output=iterations:6algorithm:'large-scale:interiorpoint'cgiterations:0message:'Optimizationterminated.'lambda=ineqlin:[3x1double]eqlin:[0x1double]upper:[3x1double]lower:[3x1double]四、實驗總結(jié)
7、在使用linprog()命令時,系統(tǒng)默認它的參數(shù)至少為3個,但如果我們需要給定第5個參數(shù),則第4個參數(shù)也必須給出,否則系統(tǒng)無法認定給出的是第5個參數(shù)。遇到無法給出時,則用空矩陣“[]”替代。3