matlab求解线性规划问题的实例代码,用matlab求解线性规划问题.doc
用matlab求解線性規(guī)劃問(wèn)題
實(shí)驗(yàn)四 用MATLAB求解線性規(guī)劃問(wèn)題
一、實(shí)驗(yàn)?zāi)康?#xff1a;
了解Matlab的優(yōu)化工具箱,能利用Matlab求解線性規(guī)劃問(wèn)題。
二、實(shí)驗(yàn)內(nèi)容:
線性規(guī)劃的數(shù)學(xué)模型有各種不同的形式,其一般形式可以寫為:
目標(biāo)函數(shù):
約束條件:
這里稱為目標(biāo)函數(shù),稱為價(jià)值系數(shù),稱為價(jià)值向量,為求解的變量,由系數(shù)組成的矩陣
稱為不等式約束矩陣,由系數(shù)組成的矩陣
稱為等式約束矩陣,列向量和為右端向量,條件稱為非負(fù)約束。一個(gè)向量,滿足約束條件,稱為可行解或可行點(diǎn),所有可行點(diǎn)的集合稱為可行區(qū)域,達(dá)到目標(biāo)函數(shù)值最大的可行解稱為該線性規(guī)劃的最優(yōu)解,相應(yīng)的目標(biāo)函數(shù)值稱為最優(yōu)目標(biāo)函數(shù)值,簡(jiǎn)稱最優(yōu)值。
我們這里介紹利用Matlab來(lái)求解線性規(guī)劃問(wèn)題的求解。
在Matlab中有一個(gè)專門的函數(shù)linprog()來(lái)解決這類問(wèn)題,我們知道,極值有最大和最小兩種,但求的極大就是求的極小,因此在Matlab中以求極小為標(biāo)準(zhǔn)形式,函數(shù)linprog()的具體格式如下:
X=linprog(f,A,b)
[X,fval,exitflag,ouyput,lamnda]=linprog(f,A,b,Aeq,Beq,LB,UB,X0,options)
這里X是問(wèn)題的解向量,f是由目標(biāo)函數(shù)的系數(shù)構(gòu)成的向量,A是一個(gè)矩陣,b是一個(gè)向量,A,b和變量x={x1,x2,…,xn}一起,表示了線性規(guī)劃中不等式約束條件,A,b是系數(shù)矩陣和右端向量。Aeq和Beq表示了線性規(guī)劃中等式約束條件中的系數(shù)矩陣和右端向量。LB和UB是約束變量的下界和上界向量,X0是給定的變量的初始值,options為控制規(guī)劃過(guò)程的參數(shù)系列。返回值中fval是優(yōu)化結(jié)束后得到的目標(biāo)函數(shù)值。exitflag=0表示優(yōu)化結(jié)果已經(jīng)超過(guò)了函數(shù)的估計(jì)值或者已聲明的最大迭代次數(shù);exitflag>0表示優(yōu)化過(guò)程中變量收斂于解X,exitflag<0表示不收斂。output有3個(gè)分量,iterations表示優(yōu)化過(guò)程的迭代次數(shù),cgiterations表示PCG迭代次數(shù),algorithm表示優(yōu)化所采用的運(yùn)算規(guī)則。lambda有4個(gè)分量,ineqlin是線性不等式約束條件,eqlin是線性等式約束條件,upper是變量的上界約束條件,lower是變量的下界約束條件。它們的返回值分別表示相應(yīng)的約束條件在約束條件在優(yōu)化過(guò)程中是否有效。
三、實(shí)驗(yàn)方法與步驟:
例1:某工廠生產(chǎn)A,B兩種產(chǎn)品,所用原料均為甲、乙、丙三種:生產(chǎn)一件產(chǎn)品所需原料和所獲利潤(rùn)以及庫(kù)存原料情況如下所示:
原料甲(公斤)原料乙(公斤)原料丙(公斤)利潤(rùn)(元)產(chǎn)品A8447000產(chǎn)品B68610000庫(kù)存原料量380300220在該廠只有表中所列庫(kù)存原料的情況下,如何安排A,B兩種產(chǎn)品的生產(chǎn)數(shù)量可以獲得最大利潤(rùn)?
設(shè)生產(chǎn)A產(chǎn)品件,生產(chǎn)B產(chǎn)品件,為所獲利潤(rùn),我們將問(wèn)題歸結(jié)為如下的線性規(guī)劃問(wèn)題:
s.t.
接著寫出Matlab程序如下:
clear
f=-[7000,10000];
A=[8,6;4,8;4,6];
b=[380,300,220];
[X,fval]=linprog(f,A,b)
運(yùn)行結(jié)果為:
Optimization terminated.
X =
40.0000
10.0000
fval =
-3.8000e+005
例2:求解下面的線性規(guī)劃問(wèn)題:
s.t.
,,
解決上述問(wèn)題的Matlab程序?yàn)?#xff1a;
Clear
f=-[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,lambda]=linprog(f,A,b,[],[],LB)
程序運(yùn)行的結(jié)果為:
Optimization terminated.
X =
0.0000
15.0000
3.0000
fval =
-78.0000
exitflag =
1
output =
iterations: 6
algorithm: 'large-scale: interior point'
cgiterations: 0
message: 'Optimization terminated.'
lambda =
ineqlin: [3x1 double]
eqlin: [0x1 double]
upper: [3x1 double]
lower: [3x1 double]
四、實(shí)驗(yàn)總結(jié)
在使用linprog()命令時(shí),系統(tǒng)默認(rèn)
總結(jié)
以上是生活随笔為你收集整理的matlab求解线性规划问题的实例代码,用matlab求解线性规划问题.doc的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。