線性規(guī)劃是運(yùn)籌學(xué)的基礎(chǔ),在現(xiàn)實(shí)企業(yè)經(jīng)營中,如何有效的利用有限的人力、財力、物力等資源。? ? ? ? ? ? ? ? ? ?
MATLAB
為方便大家理解,這里我們直接用一個例題為大家講解使用matlab求解線性規(guī)劃問題。
根據(jù)上圖給出的線性規(guī)劃問題。我們使用linprog函數(shù)解線性規(guī)劃需要滿足:
首先,我們的目標(biāo)函數(shù)是為最小值,如果是最大值那么改變其正負(fù)號轉(zhuǎn)為最小值。
其次,需要將其約束條件中(大于等于)轉(zhuǎn)化為(小于等于),還是要注意轉(zhuǎn)換正負(fù)號。
最后,等號方程不變。如下圖:
?這時候,我們再使用linprog函數(shù):[x,fmin] = linprog(f,A,b,Aeq,beq,lb)
%%
f=[-2,-3,5]'; %f為目標(biāo)函數(shù)系數(shù)矩陣(注意后面的'在MATLAB中為轉(zhuǎn)置的意思)
A=[-2,5,-1]; %A為系數(shù)矩陣小于等于部分的矩陣
b=[-10]' %b為約束右邊項矩陣(注意轉(zhuǎn)置符號)
Aeq=[1,1,1] %Aeq為等式方程的系數(shù)矩陣
beq=[7] %beq為等式方程的約束右邊項矩陣
lb=zeros(3,1) %zeros(3,1)為約束條件,即三個變量均大于0,在MATLAB中是輸出3行1列的0矩陣
[x,fmin]=linprog(f,A,b,Aeq,beq,lb);
fmax=-fmin %linprog輸出的fval為最小值,因此我們變號,將其改為最大值
x,fmax %最后輸出x的最優(yōu)解,以及目標(biāo)函數(shù)的最大值
%%
注意:矩陣的轉(zhuǎn)置問題 ?。∧莻€矩陣進(jìn)行了轉(zhuǎn)置,那些沒有,大家一定要看清楚。
對于matlab中的線性規(guī)劃問題大致就是這樣,大家根據(jù)上面所舉的例題照葫蘆畫瓢基本上不會出錯。
許多時候,我們的運(yùn)輸問題也可以通過linprog()進(jìn)行求解,感興趣的可以自行嘗試,在這里就不給大家放上去了,如果有需要的可單發(fā)。
補(bǔ)充
MATLAB方面呢,更多的會推出一些可直接食用的計算代碼,例如關(guān)于本章的線性規(guī)劃問題的求解以及接下來推出的二元一次方程、常微分方程的求解、積分求解、峰度、偏度等等。既方便讀者,同時也方便我自己將來使用。大家如果有需要其他的問題解法,也可以告訴我,盡力幫你解決。文章來源:http://www.zghlxwxcb.cn/news/detail-400555.html
小白上路,相互探討、相互進(jìn)步。文章來源地址http://www.zghlxwxcb.cn/news/detail-400555.html
到了這里,關(guān)于MATLAB---線性規(guī)劃問題求最優(yōu)解(含例題)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!