本文根據pulp文件翻譯而來,原文請參考
解決優化問題不是乙個線性過程,但過程可分為五個一般步驟:
但是,在此過程中通常存在「反饋迴圈」。例如,在制定和解決優化問題之後,您通常需要考慮解決方案的有效性(通常諮詢提供問題描述的人員)。如果您的解決方案無效,您可能需要更改或更新您的配方,以包含您對實際問題的新理解。此過程顯示在運籌學方法圖中。
建模過程從明確定義的模型描述開始,然後使用數學方法來確定數學公式。接下來,建模者將數學公式輸入到一些求解器軟體中,例如excel並求解該模型。最後,根據原始模型描述將解決方案轉化為決策。
使用python為您提供了建模過程的「快捷方式」。通過在python中制定數學程式,您已經將它放入pulp可以輕鬆使用的形式中,建模者可以呼叫許多求解器,例如cplex,coin,gurobi,因此您無需將數學公式輸入到求解器軟體中。但是,您通常不會在配方中新增任何「硬」數字,而是使用資料檔案「填充」模型,因此會涉及一些建立相應資料檔案的工作。使用資料檔案的優點是相同的模型可能會被不同的資料集使用多次。
建模過程是優化過程的「整潔」簡化。讓我們更詳細地考慮優化過程的五個步驟:
此步驟的目的是提出正式,嚴謹的模型描述。通常,您會啟動乙個優化專案,其中包含問題和一些資料的抽象描述。通常,您需要花一些時間與提供問題的人(通常稱為客戶)交談。通過與客戶交談並考慮可用的資料,您可以獲得您習慣的更嚴格的模型描述。有時並非所有資料都相關,或者您需要詢問客戶是否可以提供其他資料。有時,可用資料的限制可能會顯著改變您的模型描述和後續配方。
在此步驟中,我們從問題描述中確定關鍵的可量化決策,限制和目標,並在數學模型中捕獲它們的依賴。我們可以將制定過程分為4個關鍵步驟:
對於相對簡單或易於理解的問題,通常可以將數學模型解決為最優性(即,識別出最佳可能的解決方案)。這是使用諸如修訂的單純形法或內點法之類的演算法來完成的。然而,使用這些技術解決最優性需要很長時間的許多任務業問題,因此使用不保證最優性的啟發式方法來解決這些問題。
通常問題描述存在不確定性(無論是提供的資料的準確性,還是將來的資料值)。在這種情況下,我們的解決方案的穩健性可以通過執行後優化分析來檢查。這涉及確定最佳解決方案在公式的各種變化下如何變化(例如,給定成本增加或特定機器失效會產生什麼影響?)。這種分析對於制定戰術或戰略決策也很有用(例如,如果我們投資開設另一家工廠,這會對我們的收入產生什麼影響?)。
此步驟(以及下一步)中的另乙個重要考慮因素是數學程式解決方案的驗證。您應該仔細考慮解決方案的變數值在原始問題描述方面的含義。確保它們對您,更重要的是您的客戶有意義(這就是為什麼下一步,提出解決方案和分析很重要)。
優化過程中的關鍵步驟是解決方案的呈現和任何後優化分析。從數學程式的解決方案轉換回簡明易懂的摘要與從問題描述到數學公式的轉換同樣重要。通過優化生成的關鍵觀察和決策必須以易於理解的方式呈現給客戶或專案利益相關者。
您的演示文稿是實施數學計畫所產生決策的關鍵第一步。如果決策及其後果(通常由數學計畫約束決定)沒有明確而明智地呈現,那麼您的最佳決策將永遠不會被使用。
這一步也是您未來建議其他工作的機會。這可能包括:
演算法 Pulp 優化的過程(一)
解決乙個優化問題不是乙個線性過程,但是這個過程可以分解成五個一般步驟 1 問題描述 2 制定的數學程式 3 解決數學程式 4 執行一些post optimal分析 5 提供解決方案和分析 然而,在這個過程中經常會出現 反饋迴圈 例如,在制定和解決優化問題之後,您通常會想要考慮您的解決方案的有效性 經...
演算法 Pulp 優化的概念(二)
最簡單的數學程式是乙個線性程式。為了讓你的數學程式成為乙個線性程式,你需要以下條件 1 決策變數必須是實數變數 2 目標必須是乙個線性表示式 3 約束必須是線性表示式。線性表示式是以下形式的表示式 i ai和 b b 是已知的常數,xi role presentation style positio...
線性篩優化
如果我們要找出乙個範圍內的所有質數 素數 該如何處理 1.最簡單的就是乙個n 2的演算法 for int i 2 i n i for int j 2 j i j 2.因為當j j之後是重複的所以優化 for int i 2 i n i for int j 2 j j i j 3.因為我們知道2以後的...