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