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