用matlab求解線性規劃問題

2021-03-04 08:10:36 字數 2294 閱讀 7329

實驗四用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=一起,表示了線性規劃中不等式約束條件,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兩種產品,所用原料均為甲、乙、丙三種:生產一件產品所需原料和所獲利潤以及庫存原料情況如下所示:

在該廠只有表中所列庫存原料的情況下,如何安排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 =

1output =

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()命令時,系統預設它的引數至少為3個,但如果我們需要給定第5個引數,則第4個引數也必須給出,否則系統無法認定給出的是第5個引數。遇到無法給出時,則用空矩陣「」替代。

利用Matlab求解線性規劃問題

15.利用matlab求解線性規劃問題 線性規劃是一種優化方法,matlab優化工具箱中有現成函式linprog對如下式描述的lp問題求解 min f x s.t 約束條件 ax b 等式約束條件 aeqx beq lb x ub linprog函式的呼叫格式如下 x linprog f,a,b x...

15利用Matlab求解線性規劃問題

線性規劃是一種優化方法,matlab優化工具箱中有現成函式linprog對如下式描述的lp問題求解 min f x s.t 約束條件 ax b 等式約束條件 aeqx beq lb x ub linprog函式的呼叫格式如下 x linprog f,a,b x linprog f,a,b,aeq,b...

2 使用MATLAB求解線性規劃問題

應用matlab優化工具箱中的linprog函式求解線性規劃時模型要求為如下形式 其中 均為列向量,為常數矩陣,為常數列向量。函式呼叫格式如下 決策變數有上下界,預設變數非負。例1 38 用matlab 求解下面線性規劃問題 令z1 z matlab求解程式存為 c 150,210 a 2,3 3,...