運籌優化問題


經典運籌優化問題

先考慮容易理解的0/1背包問題、TSP問題、VRP問題等。

1.TSP問題

1.1數學建模

旅行商問題(TSP)的兩種模型

主要是針對避免獨立環的出現,給出了數學模型,可以讓gurobi/cplex等精確求解器求解

代碼可參考我的git

1.2 基礎算法

TSP的幾種求解方法及其優缺點

在分類上,根據我個人理解可以分類為:

還是看這個吧遺傳算法,模擬退火算法,粒子群算法,神經網絡等智能算法的作用? - 大洪的家園的回答 - 知乎 

(1)基礎搜索算法(遍歷解空間)

  • 深度優先搜索(加上剪枝策略就是回溯法)
  • 廣度優先搜索(加上剪枝策略就是分支限界法,上下界的確定可以參考 
  • 動態規划

可以參考這個作者的系列文章

旅行商(TSP)問題專題——多種方法對比

回溯算法——對解空間(搜索樹)的一種策略搜索(深度優先搜索)

分支限界法——對解空間的一種策略搜索(廣度優先搜索)

0/1背包問題——動態規划、回溯、分支限界法對比

(2)啟發式搜索算法(在遍歷解空間樹時有比較地選擇)

  • 貪心策略
  • 最近插入策略
  • A星算法

(3)啟發式探索算法

這里說明一下這個探索跟上面的搜索,上面的搜索更像是對解空間根據策略進行遍歷,但此處說的探索則是根據某種策略直接對可行解進行修改(這種修改結果得到的不一定是可行解但盡可能地設計可以產生可行解結果的算法),其實也有點像強化學習中的exploration,比較隨機。

對於SA、GA這些從基礎可行解出發的算法,可以使用一些較快的啟發式算法得到的近似解作為初始解,以此加快收斂。

后面幾個目前還沒看,之后會逐漸更新,同時git上的代碼也會更新

以下為進階TSP解決方案

1.3 混合策略for大規模TSP(Large Scale TSP)

對於大規模的TSP問題(一般城市個數超過100個),上述方法往往由於規模的增大而需要很長的求解時間(SA單次應該不會太長,跟它的探索算法有關),並且這些啟發式算法的結果更難收斂到全局最優,因此考慮使用混合策略。

常見的思路是首先是將城市划分為多個城市群(可使用聚類算法)形成子問題,在城市群內部求回路(足夠小可以用啟發式搜索甚至基礎搜索算法,中等規模可以用啟發式探索算法),各子問題求解完畢用臨近原則確定問題的整體解,再利用局部改進算法對其作進一步加工以得到問題的最終解。

參考文獻<聚類分層+蟻群算法>

大規模旅行商問題解決方案

K_Means for TSP

1.4 多目標優化

多目標優化問題的算法及其求解 這個暫時還沒有經驗。

Python遺傳算法框架使用實例

遺傳算法關於多目標優化python

NSG-II詳解與實現

gurobi求解介紹(含多目標優化問題)

1.5 多旅行商問題 mTSP

分為4類 參考 多旅行商問題研究綜述 

GA算法for tsp & mtsp

知網文獻:

多旅行商問題研究綜述 

模糊聚類分析應用於炮兵精確打擊效能評估

1.6 其他

matplotlib.animation動態展示效果

 

 2.VRP問題

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM