- 優化數學模型及其軟件實現
- 周凱等編著
- 1499字
- 2023-08-03 18:10:30
1.4 食用油加工的線性規劃模型案例
加工一種食用油需要精煉若干種原料油并把它們混合起來。原料油的來源有兩大類共五種:植物油VEG1、植物油VEG2、非植物油OIL1、非植物油OIL2、非植物油OIL3。購買每種原料油的價格(英鎊/噸)如表1-2所示,最終產品以150英鎊/噸售出。
表1-2 原料油價格

植物油和非植物油需要在不同的生產線上進行精煉。每月能夠精煉的植物油不超過200噸,非植物油不超過250噸;在精煉過程中,重量沒有損失,精煉費用可忽略不計。注意,最終產品必須符合硬度指標的技術條件。按照硬度計量單位,它必須為3.0~6.0。假定硬度的混合過程是線性的,且原料油的硬度數據如表1-3所示。
表1-3 原料油硬度

為使利潤最大,建立數學模型制訂月采購計劃和加工計劃。
問題分析
這個優化問題的目標是使得利潤最大,而要做的決策是每月采購的各類原料油噸數。決策受到3個條件的限制:原料油的精煉能力、成品油的硬度要求以及決策變量屬性。通過對原題進行分析后,可以得到如圖1-5所示框架結構。按照題目所給條件將決策變量、目標函數和約束條件用數學符號及公式表示出來,就可以得到相應的數學模型。

圖1-5 食用油加工問題思路
模型假設
1.每種原料油的進價與進貨量無關,最終成品油的售價與產量無關,且生產的成品油均可售出。
2.最終產品的硬度值是各種原料油硬度值的線性組合,且在精煉過程中沒有重量損失。
3.每種原料油的采購噸數可以是任意非負實數。
模型設計
按照優化模型的三要素(決策變量、目標函數、約束條件)建立數學模型。設每月采購五種原料油(VEG1、VEG2、OIL1、OIL2、OIL3)的噸數分別為xm(m=1,2,3,4,5),那么,購買各類原料油的成本可表示為c=110x1+120x2+130x3+110x4+115x5。由于精煉過程中重量沒有損失,成品油重量可表達為。假設精煉的成品油均可售出,利潤可表達為
。因此,利潤最大化的目標函數可以表示如下:

確立目標函數后,決策變量取值受到原料油精煉能力、成品油硬度要求、決策變量屬性的限制。
? 原料油精煉能力的限制:每月能夠精煉的植物油不超過200噸,每月能夠精煉的非植物油不超過250噸。

? 成品油硬度要求的限制:最終產品硬度必須為3.0~6.0;而最終產品的硬度值是各種原料油硬度值的線性組合。因此,此約束條件可以表達如下:

? 決策變量屬性的限制:xm均不能為負值,即xm≥0,m=1,2,…,5。
綜上所述,所建立的食用油加工優化模型如下:

模型求解
在LINGO軟件中輸入如下代碼求解上述線性規劃模型:

運行如上程序,顯示求解狀態如圖1-6所示。

圖1-6 食用油加工問題LINGO求解狀態
圖1-6顯示:模型類型屬于LP(線性規劃模型),目標函數值的狀態為Global Opt(全局最優解),目標函數最優值為17592.6,迭代次數為3次。模型運算的具體結果將顯示在Solution Report如下:

模型運算的結果顯示:當x1=159.2593,x2=40.74074,x4=250時,目標函數取得最大值17592.59,即采購植物油VEG1 159.2593噸、植物油VEG2 40.74074噸、非植物油OIL2 250噸,能夠獲得最大收益17592.59元。
為便于調用MATLAB軟件求解上述線性規劃模型,需將食用油加工問題的線性規劃模型寫成矩陣形式如下:

其中,A=[40 30 20 40 35]T,X=[x1x2x3x4x5]T,

然后,調用函數linprog求解線性規劃模型。注意,函數linprog可用于求解目標函數最小化的線性規劃模型。因此,當求目標函數最大化時,可采用取相反數的方式將最大化問題轉化為最小化問題。代碼如下所示:

運行上述程序,可以得到具體結果顯示如下:

模型運算的結果顯示:當x1=159.2593,x2=40.7407,x4=250時,目標函數取得最小值-17592.59,即原目標函數取得最大值17592.59。所得優化模型的決策變量與目標函數值和LINGO軟件得到的結果相同。
采用MATLAB軟件Optimizationtool工具箱求解上述線性規劃模型時,模型結果顯示如圖1-7。

圖1-7 MATLAB軟件optimtool工具箱求解線性規劃模型示意
如果采用Python求解上述線性規劃模型,程序如下所示:

運行上述程序,可得到具體結果顯示如下:

模型運算結果顯示:當x1=159.25926,x2=40.74074,x4=250時,目標函數取得最小值-17592.59,即原目標函數取得最大值17592.59,所得優化模型的決策變量與目標函數值與LINGO軟件、MATLAB軟件得到的結果相同。