文章目錄
某機床廠生産甲、乙兩種機床,每台銷售後的利潤分别為 4000 元與 3000 元。甲機床需用 A、B 機器加工,加工時間分别為每台 2 小時和 1 小時;生産乙機床需用 A、B、C 三種機器加工,加工時間為每台各一小時。若每天可用于加工的機器時數分别為 A 機器 10 小時、B 機器 8 小時和C 機器 7 小時,問該廠應生産甲、乙機床各幾台,才能使總利潤最大?
首先你要把問題當作數學問題來思考,暫時請不要考慮代碼。我們設該廠生産 x1 台甲機床和 x2 乙機床時總利潤最大。
根據題目我們所得關系如下:
1)
z = 4x1 + 3x2
就是我們要求的總利潤
2) 每天可用于加工的機器時數分别為 A 機器 10 小時、B 機器 8 小時和C 機器 7 小時可得到關系是分别為:
2x1+x2<10
x1+x2<8
x2<7
3) 最後一點還得保證:x1,x2>0
模組化就如此簡單,根據題目,我們得出對應的數學方程即可。
我們在這裡把變量 x1 , x2 稱之為決策變量,z = 4x1 + 3x2叫做目标函數,第二步和第三步的式子叫做限制條件。
你是不是有這樣一個疑問?為什麼這個是線性規劃模型?不是非線性呢?請把你的回答寫到評論區,我看看你們怎麼的了解。
我們使用linprog函數,這是專門解決線性規劃問題的,我們來看一看該函數的文法:
具體含義是什麼呢?似乎你還看不懂這個,是以我用中文來說一下我們主要用到的部分:
x = linprog(f,A,b) 求解 min f'*x 限制條件為 A*x ≤ b.
x = linprog(f,A,b,Aeq,beq) 求解上述問題,但是增加了限制條件,即将: Aeq*x = beq. 如果沒有等式存在可以用:A = [] and b = []
x = linprog(f,A,b,Aeq,beq,lb,ub) 定義變量x的下界lb和上街ub,使得x始終在該範圍内,即lb ≤ x ≤ ub。若沒有限制條件,則設: Aeq = [] and beq = []
我們的數學公式拿下來看看,看着我們對比着寫代碼:
目标函數:
max z = 4x1 + 3x2
限制條件:
2x1+x2<10
x1+x2<8
x2<7
x1,x2>0
做個線性規劃圖(高中數學知識了哈)
從數學角度,我們已經求出最優解x1和x2分别為2,6
強調: 在這裡我需要說明的是,求解max=cx在matlab中就是min=-cx,記住有個負号!
是以matlab代碼:
clc
clear all
c=[4 3];%用目标函數系數來确定
a=[2 1;1 1;0 1];%限制條件左邊限制
b=[10;8;7];%限制條件右邊系數
aeq=[];%沒有等式限制,是以aeq,beq都為空
beq=[];
lb=[0;0];%下限為0
ub=[inf;inf];%沒有上限,因為隻限制了x>0
[x,fval]=linprog(-c,a,b,aeq,beq,lb,ub);
x %擷取對應x1,x2
%或者你直接fval取絕對值也是一樣
best=c*x%計算最優值
運作結果:
x分别為2和6,我們帶入式子得到z=2*4+3+6=8+18=26。x參數就是最優解所對應值的意思。
fval=26也能驗證我們結果為26.fval參數就是最優解的意思。
是以最優解為26了。
求解該線性規劃對應的最大值z以及x1,x2,x3
請你認真讀題思考!再看我分析,自己再去寫代碼,把練習題的解析寫成一篇部落格,然後點選送出任務,送出你寫的這篇解題部落格連結。
為什麼我要求你也些一篇跟我一樣的文章?當你自己寫一篇文章的時候,你一定會大有收獲,自己寫出來的時候,你一定是真的動過腦子,親手敲過代碼(我不希望你是複制粘貼我的)
如何寫部落格?
1-
2-
3)
4)添加标題
5)标題取名
寫完你的練習題部落格後來這裡送出:
把你的這篇練習題部落格連結送出确定: