快速用matlab求解線性規劃

2021-08-08 21:02:31 字數 1567 閱讀 5873

用matlab也有一年時間了,但是從來都懶得記怎麼用,所以老師上個月講的函式,這個月要用的時候一般都會在視窗自動先打出help 某函式,於是最近整理了乙個可以快速看懂函式用法的文章,幫助和我一樣懶惰的同學........

eg: 某飯店24小時中需要服務員數量如下表,如果每個服務員連續工作8小時,試問在2點,6點,10點,14點,18點,22點開始上班的服務員為多少時,一天所需服務員人數最少???

時間          2-6      6-10     10-14   14-18   18-22    22-2

最少服務員 4       8            10          7          12           4

解:設在2點,6點,10點,14點,18點,22點開始上班的服務員分別為 x1,x2,x3,x4,x5,x6

max    x1+x2+x3+x4+x5+x6  (習慣用mathtype但複製不過來。。。。。。)

st      x1+x6>=4

x1+x2>=8

x2+x3>=10

x3+x4>=7

x4+x5>=12

x5+x6>=4

編寫m檔案

c=[1 1 1 1 1 1];

>> a=[-1 0 0 0 0 -1;-1 -1 0 0 0 0;0 -1 -1 0 0 0;0 0 -1 -1 0 0;0 0 0 -1 -1 0 0 0 0 -1 -1 ];

>> b=[-4; -8; -10; -7; -12; -4];

>> vlb=[0;0;0;0;0;0];

>> vub=;

>> aeq=;

>> beq=;

>> [x,fval]=linprog(c,a,b,aeq,beq,vlb,vub);

求出結果為 fval=26 即總人數為26人

各個時段人數分別為

x =2.7154

6.9396

3.0604

6.4597

5.5403

1.2846

由題意可知,人數不可能為小數,這是乙個線性的整數規劃問題,於是我們嘗試用lindo軟體

輸入 min x1+x2+x3+x4+x5+x6

stx1+x6>=4

x1+x2>=8

x2+x3>=10

x3+x4>=7

x4+x5>=12

x5+x6>=4

end

gin 6

得到結果為

1) 26.00000

variable value reduced cost

x1 0.000000 1.000000

x2 8.000000 1.000000

x3 2.000000 1.000000

x4 12.000000 1.000000

x5 0.000000 1.000000

x6 4.000000 1.000000

所以在2點,6點,10點,14點,18點,22點開始上班的服務員分別為

0 ,8 ,2,12, 0, 4 一共26人,將所得結果與matlab結果對比檢驗,總人數都為26人

matlab快速實現線性規劃求解

m in xctx min c tx minx c txs t ax b aeq x beq lb leq x leq ub end right.s.t.ax b aeq x be qlb x ub 其中c,x b,b eq,l b,ub c,x,b,beq,lb,ub c,x,b,beq,lb,u...

用matlab求解線性規劃技巧

一下是我學習的筆記,有不足之處還望提出交流!轉化為matlab的標準形式 即min f x 2.找價值列向量,注意是列向量,即f 3,找準a,b,aeq,beq,lb ub明白各自的含義,b是列向量 4,套用公式linprog f,a,b,aeq,beq,lb,ub 5,附上以下 用於求解如何轉化為...

非線性規劃問題的matlab求解

函式 x,fval fmincon fun,x0,a,b,aeq,beq,lb,ub,nonlcon 返回的x 是乙個向量 在取得目標函式最小時各個xi的取值 返回的fval 目標函式的最小值 引數fun 目標函式 引數x0 向量x的初始值 引數a 線性不等式約束的係數矩陣,若沒有線性不等式約束,則...