【算法】Pulp-優(yōu)化的過程(一)

一、簡介

解決一個(gè)優(yōu)化問題不是一個(gè)線性過程,但是這個(gè)過程可以分解成五個(gè)一般步驟:
1、問題描述
2、制定的數(shù)學(xué)程序
3、解決數(shù)學(xué)程序
4、執(zhí)行一些post-optimal分析
5、提供解決方案和分析

然而,在這個(gè)過程中經(jīng)常會(huì)出現(xiàn)“反饋循環(huán)”。例如,在制定和解決優(yōu)化問題之后,您通常會(huì)想要考慮您的解決方案的有效性(經(jīng)常與提供問題描述的人員進(jìn)行協(xié)商)。如果你的解決方案是無效的,你可能需要修改或更新你的方法,以結(jié)合你對實(shí)際問題的新理解。這個(gè)過程在操作研究方法圖中顯示。
建模過程從一個(gè)定義良好的模型描述開始,然后使用數(shù)學(xué)來制定一個(gè)數(shù)學(xué)程序。接下來,建模師將數(shù)學(xué)程序輸入到一些解決程序軟件中如Excel并解出模型。最后,這個(gè)解決方案被轉(zhuǎn)換成一個(gè)關(guān)于原始模型描述的決策。
通過使用Python,您可以通過建模過程獲得“快捷方式”。通過在Python中編寫數(shù)學(xué)程序,你已經(jīng)把它變成了一種形式,它可以很容易地使用建模者來調(diào)用許多解決者,例如,CPLEX,COIN,gurobi,這樣你就不需要將數(shù)學(xué)程序輸入到求解程序軟件中。但是,您通常不會(huì)將任何“硬”數(shù)字放入您的公式中,而是使用數(shù)據(jù)文件“填充”您的模型,因此在創(chuàng)建適當(dāng)?shù)臄?shù)據(jù)文件時(shí)需要做一些工作。使用數(shù)據(jù)文件的優(yōu)點(diǎn)是,相同的模型可能多次使用不同的數(shù)據(jù)集。

二、模過程

建模過程是對優(yōu)化過程的“簡潔而整潔”的簡化。讓我們更詳細(xì)地考慮優(yōu)化過程的五個(gè)步驟:

2.1 問題描述

這一步驟的目的是提出一個(gè)正式的、成熟的模型描述。通常,您會(huì)啟動(dòng)一個(gè)優(yōu)化項(xiàng)目,對問題和一些數(shù)據(jù)進(jìn)行抽象描述。通常你需要花些時(shí)間與提供問題的人交談(通常被稱為客戶)。通過與客戶交談并考慮可用的數(shù)據(jù),您可以得出您習(xí)慣使用的更加成熟的模型描述。有時(shí)不是所有的數(shù)據(jù)都是相關(guān)的,或者你需要詢問客戶是否可以提供其他的數(shù)據(jù)。有時(shí),可用數(shù)據(jù)的局限性可能會(huì)顯著地改變您的模型描述和隨后的公式。

2.2 制定的數(shù)學(xué)程序

在這一步中,我們確定了關(guān)鍵的可量化的決策、限制和目標(biāo),并在一個(gè)數(shù)學(xué)模型中捕獲它們的相互依賴關(guān)系。我們可以將制定過程分解成4個(gè)關(guān)鍵步驟:
1、確定那些特別關(guān)注單元的決策變量(例如:我們需要決定每個(gè)進(jìn)程將運(yùn)行多少個(gè)小時(shí))。
2、利用決策變量來確定目標(biāo)函數(shù),我們可以構(gòu)造一個(gè)最小化或最大化目標(biāo)函數(shù)。目標(biāo)函數(shù)通常反映決策變量給定值的總成本或總利潤。
3、用邏輯(例如,我們不能在幾個(gè)小時(shí)內(nèi)工作),或者明確的問題描述來制定約束。同樣,約束條件是用決策變量表示的。
4、確定目標(biāo)函數(shù)和約束所需的數(shù)據(jù)。為了解決你的數(shù)學(xué)問題,你需要在你的目標(biāo)函數(shù)和/或約束條件下有一些“硬數(shù)值”作為變量和/或變量系數(shù)。

2.3 解決數(shù)學(xué)程序

對于相對簡單或易于理解的問題,數(shù)學(xué)模型通??梢员挥糜谧顑?yōu)性(即:最好的解決方案是確定的)。這是通過諸如修改的單純形法或內(nèi)部點(diǎn)方法等算法完成的。然而,許多工業(yè)問題用這些技術(shù)解決最優(yōu)性問題需要很長時(shí)間,因此而用啟發(fā)式方法解決問題,但啟發(fā)式方法并不能保證最優(yōu)性。

2.4 執(zhí)行一些post-optimal分析

通常在問題描述中存在不確定性(要么是提供了數(shù)據(jù)的準(zhǔn)確性,要么是未來數(shù)據(jù)的值(s)。在這種情況下,我們的解決方案的健壯性可以通過執(zhí)行后優(yōu)化分析來檢驗(yàn)。這涉及到確定最佳解決方案是如何在各種變化的情況下發(fā)生變化的(例如,一個(gè)給定的成本增加,或者一個(gè)特定的機(jī)器失敗的結(jié)果是什么?)。這種分析也可以用于制定戰(zhàn)術(shù)或戰(zhàn)略決策(例如,如果我們投資于開設(shè)另一家工廠,這會(huì)對我們的收入產(chǎn)生什么影響?)。
這個(gè)步驟(以及下一個(gè))的另一個(gè)重要的考慮是驗(yàn)證數(shù)學(xué)程序的解決方案。您應(yīng)該仔細(xì)考慮解決方案的變量值在原始問題描述中的意義。確保它們對你有意義,更重要的是,你的客戶(這就是為什么下一步,提出解決方案和分析是重要的)。

2.5 提供解決方案和分析

優(yōu)化過程中的一個(gè)關(guān)鍵步驟是表示解決方案和任何后優(yōu)化分析。將數(shù)學(xué)程序的解譯為簡明易懂的摘要和從問題描述轉(zhuǎn)化為數(shù)學(xué)程序一樣重要。通過優(yōu)化生成的關(guān)鍵觀察和決策必須以一種易于理解的方式呈現(xiàn)給客戶或項(xiàng)目涉眾。
您的演示是實(shí)現(xiàn)由您的數(shù)學(xué)程序生成的決策的關(guān)鍵的第一步。如果決策及其結(jié)果(通常由數(shù)學(xué)程序約束決定)不清楚且智能地呈現(xiàn),那么您的最佳決策將永遠(yuǎn)不會(huì)被使用。
這一步也是你在未來建議其他工作的機(jī)會(huì)。這可能包括:
1、定期監(jiān)測你的數(shù)學(xué)程序的有效性;
2、進(jìn)一步分析您的解決方案,為您的客戶尋找其他的好處;
3、識(shí)別未來的優(yōu)化機(jī)會(huì)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容