官术网_书友最值得收藏!

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軟件得到的結果相同。

主站蜘蛛池模板: 龙门县| 肃南| 乌鲁木齐市| 周宁县| 尼玛县| 南丰县| 保康县| 西昌市| 古浪县| 尼勒克县| 陈巴尔虎旗| 惠来县| 日喀则市| 岢岚县| 乐亭县| 象州县| 澄迈县| 德惠市| 元阳县| 马公市| 小金县| 乌恰县| 桦川县| 和平县| 德庆县| 白玉县| 阳朔县| 晋宁县| 通化县| 桦南县| 绥芬河市| 南江县| 虎林市| 闵行区| 龙口市| 山西省| 九台市| 高淳县| 桐乡市| 盖州市| 榆中县|