Linear Programming線性規劃,就是目標函數和約束條件都是線性的優化問題,是運籌學中研究較早、發展較快、應用廣泛、方法較成熟的一個重要分支,它是輔助人們進行科學管理的一種數學方法,英文縮寫LP。
一、業務問題描述:這是一個簡單的線性規劃問題,具體要求如下:
某公司生產氨氣(NH3)和氯化銨(NH4CI), 公司的日處理能力為50單位的氮(N), 180單位的氨(H), 40單位氯(CI). 氨氣的利潤為30$/每單位、氯化銨的利潤為40$/每單位,如何確定氨氣和氯化銨的產量,使利潤最大?
二、從數學的角度理解和定義該問題:
將上述生產問題轉為為數學問題,建立數學模型一般有以下三個步驟:
1.根據影響所要達到目的的因素找到決策變量;
2.由決策變量和所在達到目的之間的函數關系確定目標函數;
3.由決策變量所受的限制條件確定決策變量所要滿足的約束條件。
三、OPL模型建立的步驟
下面用OPL語言來理解和定義該問題,OPL模型就是尋找決策變量,使得決策變量滿足約束條件并取得目標函數最值的過程。下面是求解該問題的幾個步驟:
1.定義該問題的數據變量,
為了方便起見,以下定義的數據變量均為數組變量,數組是有序數據的集合,一個數組中的每一個元素都屬于同一種數據類型。
(1)Products 代表氣體的名稱,
{string}Products = ...;
即定義了數組名為“Products”的字符串數組,一維數組。
(2)Components 代表所含的成分,
{string} Components = ...;
即定義了數組名為“Components”的字符串數組,一維數組。
(3)Demand 代表每種氣體所含的成分,
floatDemand[Products][Components] = ...;
即定義了數組名為“Demand”的浮點型數組,二維數組。
(4)Profit 代表對應氣體的利潤,
float Profit[Products] =...;
即定義了數組名為“Profit”的浮點型數組,一維數組。
(5)Stock 代表該成分的日處理能力,
float Stock[Components] =...;
即定義了數組名為“Stock”的浮點型數組,一維數組。
2.數據的初始化;
定義了數據變量之后,要進行數據的初始化,所謂初始化就是給數據變量賦值,下面依次給上述定義的數據變量賦值:
Products = { "NH3" "NH4CI"};
Components = { "N" "H" "CI"};
Demand = [ [1 3 0] [1 4 1] ];
Profit = [30 40];
Stock = [50 180 40];
3.定義決策變量,數據變量和決策變量是有區別的,數據變量是具體數據的名稱,比如之前定義的數據變量“Products”,代表該公司生產氣體的名稱,而決策變量是針對數學模型來說的,這個問題所需做的決策即每種氣體的產量,
dvar float+Production[Products];
dvar(decision variable)是定義決策變量的一個最常用的關鍵字,
此處定義了變量名為”Production”的決策變量,代表兩種氣體的產量,其實是浮點型數組。
4. 目標函數的定義,即利潤最大化,目標函數是決策變量的線性函數,
maximize
sum( p in Products )
Profit[p] * Production[p];
5. 約束條件的設定,有三種成分有日處理能力的限制,用很簡潔的寫法實現:
subject to {
forall( c in Components )
ct:
sum( p in Products )
Demand[p][c] * Production[p] <= Stock[c];
}
四、用IBM ILOG CPLEX Optimization Studio 12.8來求解該問題
IBM ILOG CPLEX Optimization Studio 12.8來求解該問題的具體操作過程如下:
打開軟件界面,有四個常用的窗口,分別是OPL項目導航窗口、編輯窗口、問題瀏覽器窗口、輸出窗口;
新建一個OPL項目,項目名稱是“gaseous”,勾選”Adda default Run Configuration”、“CreateModel”和“CreateData”,即該OPL項目包含一個模型文件和一個數據文件;
編輯模型文件的內容,即“gaseous.mod”文件
該模型文件的內容包含四部分內容:
(1) 定義數據變量;
(2) 定義決策變量;
(3) 設定目標函數;
(4) 設定約束條件;
編輯數據文件的內容,即“gaseous.dat”文件
然后在”Configuration(default)”上執行:
執行 Run Configuration,得到如下輸出結果:
五、業務解讀
從IBM ILOG CPLEX Optimization Studio 12.8的運行結果,可知當氨氣的產量為6.6667個單位,氯化銨的產量為40個單位時,該公司得到最大利潤,并滿足當日每種成分的處理能力限制。
-
IBM
+關注
關注
3文章
1755瀏覽量
74679 -
線性
+關注
關注
0文章
198瀏覽量
25145
原文標題:IBM ILOG CPLEX Optimization Studio : 一個線性規劃的案例
文章出處:【微信號:SCAnalyticsPlatform,微信公眾號:IBM大數據技術團隊】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論