0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一個(gè)簡(jiǎn)單的線性規(guī)劃問題

Dtzl_SCAnalytic ? 來源:未知 ? 作者:李倩 ? 2018-05-29 10:25 ? 次閱讀

Linear Programming線性規(guī)劃,就是目標(biāo)函數(shù)和約束條件都是線性的優(yōu)化問題,是運(yùn)籌學(xué)中研究較早、發(fā)展較快、應(yīng)用廣泛、方法較成熟的一個(gè)重要分支,它是輔助人們進(jìn)行科學(xué)管理的一種數(shù)學(xué)方法,英文縮寫LP。

一、業(yè)務(wù)問題描述:這是一個(gè)簡(jiǎn)單的線性規(guī)劃問題,具體要求如下:

公司生產(chǎn)氨氣(NH3)和氯化銨(NH4CI), 公司的日處理能力為50單位的氮(N), 180單位的氨(H), 40單位氯(CI). 氨氣的利潤(rùn)為30$/每單位、氯化銨的利潤(rùn)為40$/每單位,如何確定氨氣和氯化銨的產(chǎn)量,使利潤(rùn)最大?

二、從數(shù)學(xué)的角度理解和定義該問題:

將上述生產(chǎn)問題轉(zhuǎn)為為數(shù)學(xué)問題,建立數(shù)學(xué)模型一般有以下三個(gè)步驟:

1.根據(jù)影響所要達(dá)到目的的因素找到?jīng)Q策變量;

2.由決策變量和所在達(dá)到目的之間的函數(shù)關(guān)系確定目標(biāo)函數(shù);

3.由決策變量所受的限制條件確定決策變量所要滿足的約束條件。

三、OPL模型建立的步驟

下面用OPL語言來理解和定義該問題,OPL模型就是尋找決策變量,使得決策變量滿足約束條件并取得目標(biāo)函數(shù)最值的過程。下面是求解該問題的幾個(gè)步驟:

1.定義該問題的數(shù)據(jù)變量,

為了方便起見,以下定義的數(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é)模型來說的,這個(gè)問題所需做的決策即每種氣體的產(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)潔的寫法實(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來求解該問題

IBM ILOG CPLEX Optimization Studio 12.8來求解該問題的具體操作過程如下:

打開軟件界面,有四個(gè)常用的窗口,分別是OPL項(xiàng)目導(dǎo)航窗口、編輯窗口、問題瀏覽器窗口、輸出窗口;

新建一個(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)日每種成分的處理能力限制。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • IBM
    IBM
    +關(guān)注

    關(guān)注

    3

    文章

    1736

    瀏覽量

    74560
  • 線性
    +關(guān)注

    關(guān)注

    0

    文章

    196

    瀏覽量

    25114

原文標(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)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    matlab 數(shù)學(xué)建模

    取得最大經(jīng)濟(jì)效益的問題。此類問題構(gòu)成了運(yùn)籌學(xué)的個(gè)重要分支—數(shù)學(xué)規(guī)劃,而線性規(guī)劃(Linear Programming 簡(jiǎn)記LP)則是數(shù)學(xué)規(guī)劃
    發(fā)表于 06-18 13:59

    線性規(guī)劃.pdf

    線性規(guī)劃.pdf
    發(fā)表于 09-15 12:49

    用MATLAB優(yōu)化工具箱解線性規(guī)劃

    用最低? 解 設(shè)在甲車床上加工工件1、2、3的數(shù)量分別為x1、x2、x3,在乙車床上加工工件1、2、3的數(shù)量分別為x4、x5、x6??山⒁韵?b class='flag-5'>線性規(guī)劃模型: 編寫M文件xxgh3.m如下:f
    發(fā)表于 03-07 09:21

    matlab數(shù)學(xué)建模算法全收錄 799*** 4.7M 超清書簽版

    效益的問題。此類問題構(gòu)成了運(yùn)籌學(xué)的個(gè)重要分支—數(shù)學(xué)規(guī)劃,而線性規(guī)劃(Linear 求解線性規(guī)劃的單純形方法以來,
    發(fā)表于 11-25 14:17

    基于整數(shù)線性規(guī)劃的TTA代碼優(yōu)化

    針對(duì)傳輸觸發(fā)結(jié)構(gòu)代碼生成中的指令調(diào)度、多寄存器堆分配、全局寄存器分配和軟件旁路等優(yōu)化問題,給出個(gè)整數(shù)線性規(guī)劃形式化模型,并實(shí)現(xiàn)了個(gè)軟件架
    發(fā)表于 04-11 09:57 ?7次下載

    線性規(guī)劃在緩沖區(qū)溢出檢測(cè)中的應(yīng)用研究

    文中建立了個(gè)緩沖區(qū)溢出檢測(cè)模型,用整型區(qū)間約束系統(tǒng)來表示字符串和關(guān)鍵性函數(shù),將C 字符串操作抽象成線性規(guī)劃問題來解決。設(shè)計(jì)了線性求解器對(duì)所產(chǎn)生的約束集合進(jìn)行求解
    發(fā)表于 01-27 15:10 ?16次下載

    算法大全_線性規(guī)劃

    算法大全第01章__線性規(guī)劃,有需要的下來看看。
    發(fā)表于 01-14 17:04 ?0次下載

    算法大全_非線性規(guī)劃

    下面通過實(shí)例歸納出非線性規(guī)劃數(shù)學(xué)模型的般形式,介紹有關(guān)非線性規(guī)劃的基本概念。有需要的下來看看。
    發(fā)表于 01-14 17:26 ?0次下載

    種基于改進(jìn)線性規(guī)劃的LDPC碼混合譯碼算法

    種基于改進(jìn)線性規(guī)劃的LDPC碼混合譯碼算法_陳紫強(qiáng)
    發(fā)表于 01-07 16:52 ?0次下載

    種關(guān)聯(lián)博弈的軟件調(diào)度線性規(guī)劃控制算法

    種關(guān)聯(lián)博弈的軟件調(diào)度線性規(guī)劃控制算法_劉海姣
    發(fā)表于 01-07 19:08 ?0次下載

    數(shù)學(xué)建模教程之線性規(guī)劃的詳細(xì)說明

    在人們的生產(chǎn)實(shí)踐中,經(jīng)常會(huì)遇到如何利用現(xiàn)有資源來安排生產(chǎn),以取得最大經(jīng)濟(jì)效益的問題。此類問題構(gòu)成了運(yùn)籌學(xué)的個(gè)重要分支—數(shù)學(xué)規(guī)劃,而線性規(guī)劃(Linear Programming 簡(jiǎn)記
    發(fā)表于 12-10 08:00 ?1次下載

    復(fù)雜施工調(diào)度問題的混合整數(shù)線性規(guī)劃模型

    為解決復(fù)雜施工項(xiàng)目中存在的模型表述和計(jì)算問題,研究互斥、共存、依賴3種邏輯關(guān)系在調(diào)度計(jì)劃表述模型中的應(yīng)用,建立復(fù)雜施工調(diào)度問題的混合整數(shù)線性規(guī)劃模型,并設(shè)計(jì)種改進(jìn)的遺傳算法以快速求解模型?;诓紶?/div>
    發(fā)表于 05-12 10:51 ?15次下載

    如何在MATLAB中使用線性規(guī)劃求解不同的問題

    MATLAB是種廣泛使用的數(shù)學(xué)軟件,它提供了各種工具箱和函數(shù)來解決多種問題,包括線性規(guī)劃。下面介紹幾個(gè)線性規(guī)劃的示例,演示在MATLAB中如何使用線性規(guī)劃求解這些問題: 1.
    的頭像 發(fā)表于 06-14 10:25 ?764次閱讀

    在約束條件下優(yōu)化非線性目標(biāo)函數(shù)的問題

    線性規(guī)劃類在約束條件下優(yōu)化非線性目標(biāo)函數(shù)的問題。以下是幾個(gè)常見的非線性規(guī)劃算法。
    的頭像 發(fā)表于 06-15 09:33 ?830次閱讀
    在約束條件下優(yōu)化非<b class='flag-5'>線性</b>目標(biāo)函數(shù)的問題

    使用內(nèi)點(diǎn)法求解線性規(guī)劃問題

    在 MATLAB 中,可以使用 fmincon 函數(shù)來求解線性規(guī)劃問題,其中包括內(nèi)點(diǎn)法。fmincon 函數(shù)的使用方法非常靈活,可以通過修改參數(shù)來指定不同的算法、約束條件等。
    的頭像 發(fā)表于 06-15 09:35 ?876次閱讀
    使用內(nèi)點(diǎn)法求解<b class='flag-5'>線性規(guī)劃</b>問題