用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 線性不等式約束的係數矩陣,若沒有線性不等式約束,則...