matlab中的線性規劃

2021-09-24 18:26:08 字數 1925 閱讀 7062

matlab中的線性規劃

目前本人基於matlab做了一些建模入門的基礎教程,可以在這裡分享給大家,

matlab中關於linprog的具體使用語法。(其實對於乙個剛入門時候的小七來說,看到這個圖腦袋一陣模糊,具體怎麼用,依舊一臉懵。)

在matlab學習中,最好用的學習方法莫過於通過乙個具體的例項,下面我們就結合具體問題,詳細解釋linprog函式的用法:

可以明顯看出來該規劃中一共有5個自變數,同時有8個約束條件

結合matlab中linprog具體語法來看,linprog函式中的變數需求可以根據我們需求填寫,在我們題目中我們可以採用:

x=linprog(c,a,b,aeq,beq,lb),(具體為什麼採用該種形式,客官您耐心向下看哦)

具體每乙個變數對應意義如下:

c:目標函式的係數,也就是目標函式minz中各個變數的係數,在上述例子中為c=[0.2 0.7 0.4 0.3 0.8],同時該問題中是求最小值,在linprog中直接用c即可,當我們要求函式的最大值時,需要在linprog中寫成-c;

a:約束條件是不等式中的係數,同時在該條件下需要注意,不等號的方向不同可能我們需要對係數做乙個正負變換,如果不等式為≥,那麼在a中需要取原係數的相反數,例如該題中a=[-3 -2 -1 -6 -18;-1 -0.5 -0.2 -2 -0.5 ;-0.5 -1 -0.2 -2 -0.8];

b:不等式右邊的數值,同理不等號的方向不同可能我們需要對係數做乙個正負變換,如果不等式為≥,那麼在b中需要取原係數的相反數,該題中b=[-700;-30;-100];

aeq:等式部分的係數,該題目中約束條件不存在等式,所以在函式中aeq可以用來表示空白;

beq:等式等號右邊的值,該問題中不存在等式,同理用表示;

lb:指x的下限,在我們題目中所有的變數都要求≥0,在這裡lb就可以用乙個0矩陣來表示,因為我們題目中有五個變數,就可以設定為lb=zeros[5,1],就是zeros生成乙個5行1列的零矩陣,通過該矩陣表示五個變數的下限。

在我們題目中,我們發現通過上述幾個係數,已經可以把我們題目中的約束條件表示出來,因此我們的linprog就採用上述形式,當我們面臨更複雜的題目時,約束條件更多時,我們可以採用後續的linprog形式。

上述題目在matlab中可以表示為:

完整**:

c=[0.2 0.7 0.4 0.3 0.8];

a=[-3 -2 -1 -6 -18;-1 -0.5 -0.2 -2 -0.5 ;-0.5 -1 -0.2 -2 -0.8];

b=[-700;-30;-100];

lb=zeros[5,1];

[x,fval]=linprog(c,a,b,,,lb);

disp(x); %x為最優解

disp(fval); %fval為我們要求的最小或者最大值

簡單的matlab中linprog函式應用如上,在這裡可以總結給大家幾點容易報錯的地方:

1.寫各個係數的時候,注意;和,例如在a=[-3 -2 -1 -6 -18;-1 -0.5 -0.2 -2 -0.5 ;-0.5 -1 -0.2 -2 -0.8]中每乙個不等式的係數用;隔開,而乙個不等式中用,或者空格隔開。

2. linprog函式中用法很多,當約束條件比較多的時候,可以依次採用更複雜的形式,但是不存在的約束條件不能跳過,需要用表示。

在matlab中同樣可以採用ga(遺傳演算法)進行簡單的線性規劃,這裡明天給各位童鞋講ga函式的用法,linprog函式的用法童鞋們還需要自己在進行練習,以便能具體掌握:這裡提供給大家乙個例子:

大家可以拿來練手,具體程式會在明天的推送中更新給大家。

大家關於線性規劃有啥疑問,可以具體問我。

線性規劃(matlab實現)

那天上了線性規劃,老師總是說,程式設計怎麼實現,一本天大出的薄薄的最優化方法的書,還有程式設計的步驟,我晚上就試了試,這個陣列設定,是按照書上的乙個例題。高興的是單純型表的遍歷正確,但還沒有最後輸出最有值,當時有點困了。b 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 b 6 8 ...

MATLAB之線性規劃

c和x為n維列向量,a aeq為適當維數的矩陣,b 資源向量 beq為適當維數的列向量。1 linprog c,a,b,aeq,beq 它的返回值是向量 x的值。引數為空時,用 表示 2 x,fval linprog c,a,b,aeq,beq,lb,ub,x0 fval 返回目標函式的值 lb和 ...

Matlab線性規劃規範

matlab規定了線性規劃的標準形式為 min ctx 求最大值用 c s t ax leq b 不等式約束條件 當出現 時,把對應行係數乘以負號即可 aeqx beq 等式約束條件 lb leq x leq ub x上下界 end s.t.ax b 不等式 約束條件 當出 現 時,把對應行 係數乘...