利用Matlab解決規劃問題

2021-10-01 04:04:02 字數 1318 閱讀 1369

整數規劃

非線性規劃

二次規劃

將線性規劃問題的一般形式轉化為標準形式:

1.若為maxf(x),則化為-maxf(x)

2.將不等式約束化為等式約束:

(1)若gi(x)<=bi,轉為gi(x)+xk=bi

(2)若gi(x)>=bi,轉為gi(x)-xk=bi

3.將任意變數轉為非負變數(即xi>=0)

4.將負的限定係數轉為正值(ax=b,若b為負值,則等式兩邊均乘以-1)

e.g.

minf(x)=-4x1-x2

s.t.

-x1+2x2

<=4

2x1+3x2

<=12

x1-x2

<=3

x1,x2>=0

解:

用m函式形式求解

a=[-1,2,1,0,0;2,3,0,1,0;1,-1,0,0,1]

c=[-4,-1,0,0,0]

b=[4,12,0]

[x,mf]=******mthd0(a,c,b,[3 4 5])

執行結果如下;

x= 4.2000 1.2000

mf=-18.0000

matlab的優化工具箱裡有現成函式linprog

minf(x)

s.t.(不等式約束)ax<=b

(等式約束)aeqx=beq

lb<=x<=ub

基本格式

[x,fval]=linprog(f,a,b,aeq,beq,lb,ub)
e.g.

minf(x)=-2x1-x2+3x3-5x4

s.t.

x1+2x2+4x3-x4

<=6

2x1+3x2-x3+x4

<=12

x1+x3+x4

<=4

x1,x2,x3,x4>=0

解:

f=[-2 -1,3,-5]

a=[1 2 4 -1;2 3 -1 1;1 0 1 1]

b=[[6 12 4]

lb=[0 0 0 0]

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

輸出結果如下:

x=0.0000

2.6667

0.0000

4.0000

fval=-22.6667

利用動態規劃解決連乘問題

動態規劃過程是 每次決策依賴於當前狀態,又隨機引起狀態的轉移。乙個決策序列就是在變化的狀態中產生,所以,這種多階段最優化決策解決問題的過程稱為動態規劃。給定n個矩陣 a1,a2,an 其中ai與ai 1是可乘的,i 1,2 n 1。如何確定計算矩陣連乘積的計算次序,使得依此次序計算矩陣連乘積需要的數...

數學建模 matlab解決線性規劃問題

在人們的生產實踐中,經常會遇到如何利用現有資源來安排生產,以取得最大經濟效 益的問題。此類問題構成了運籌學的乙個重要分支一數學規劃,而線性規劃 linear programming,lp 則是數學規劃的乙個重要分支。自從1947年g.b.dantzig 提出求解線 性規劃的單純形方法以來,線性規劃在...

matlab解決有約束的線性規劃問題

在 matlab解決有約束的二次規劃問題 中,提到了線性規劃問題 linear programming 而線性規劃問題實際與二次規劃問題十分相似,現在在matlab中實現求解 這是用於求解問題的linprog 函式文件 同樣使用乙個例子說明這個函式的呼叫方法 例 求解如下線性規劃問題 分析 對比幫助...