運籌學從何學起?如何快速入門精確式算法?


相信各位小伙伴在看到運籌學時,第一反應肯定是:

前面我們聊過,如何學習啟發式算法。那么今天就聊聊如何學習精確式算法吧。

和啟發式算法不同的是,精確式算法不僅需要數學基礎,還需要運籌基礎,代碼基礎等。

所以相對來說精確式算法相對會難一些。但是當你學完整個知識體系,會發現,其實精確式算法也差不多是那些套路。而且比啟發式算法更加固定。學習順序可參照以下:

運籌學基礎

首先需要學習的是運籌學基礎,包括整數規划、單純型法、混合整數規划、建模思想、常見的運籌學問題以及算法等。

推薦書籍:Operations Research Applications and Algorithms, Wayne L. Winston(書籍下載請在后台留言【運籌學書籍】不包括【】即可下載)。可參考的公眾號文章(可按順序學習)。

基礎部分:

  1. 運籌學教學|十分鍾快速掌握單純形法(附C++代碼及算例)

  2. 運籌學教學|修正單純形法(revised simplex algorithm)代碼分享及詳細注釋

  3. 運籌學教學|運輸問題代碼分享(C++代碼及詳細注釋)

  4. 運籌學教學 | 十分鍾教你求解分配問題(assignment problem)

  5. 運籌學教學 | 十分鍾快速掌握最短路算法(附C++代碼及算例)

  6. 運籌學教學 | 十分鍾快速掌握最大流算法(附C++代碼及算例)

  7. 基礎算法 | 關於圖論中最小生成樹(Minimum Spanning Tree)那些不可告人的秘密

進階部分:

  1. 運籌學教學|動態規划例題分析(一)

  2. 干貨|十分鍾教你用動態規划算法解Travelling Salesman Problem(TSP)問題,附代碼……

求解器Solver

有了基礎知識以后,就可以做更深入的學習。首先要熟悉至少一款商業求解器的使用以便能方便快速地對數學模型進行檢驗,包括后面學習更高級的精確算法,也要用到求解器。可參考的文章如下:

  1. 干貨 | 運籌學、數學規划、離散優化求解器大PK,總有一款適合你

  2. MOSEK,一個專注而卓越的優化求解器(一)

  3. 干貨 | 關於數學規划求解器lp_solve 這里有份超全面超詳細的教程,你離lpsolve高手只有一步之遙!

  4. 干貨 | 嘿,雙11快遞,這里有份數學規划求解器SCIP超詳細的使用教程,請你收下

  5. 干貨 | cplex介紹、下載和安裝以及java環境配置和API簡單說明

  6. 干貨 | JAVA調用cplex求解一個TSP模型詳解

  7. 干貨|十分鍾快速掌握CPLEX求解VRPTW數學模型(附JAVA代碼及CPLEX安裝流程)

精確式算法-基礎

有了運籌學的基礎+求解器的熟悉使用,就可以開始精確式算法的學習了。這部分的算法包括最基礎的branch and bound,column generation,branch and price,branch and cut,branch price and cut等等。可參考的文章如下:

  1. 干貨 | 10分鍾帶你全面掌握branch and bound(分支定界)算法-概念篇

  2. 干貨 | 10分鍾搞懂branch and bound算法的代碼實現附帶java代碼

  3. 干貨 | 10分鍾教你用branch and bound(分支定界)算法求解TSP旅行商問題

  4. 運籌學教學|分枝定界求解旅行商問題

  5. 干貨 | 10分鍾帶你徹底了解Column Generation(列生成)算法的原理附java代碼

  6. 運籌學教學|列生成(Column Generation)算法(附代碼及詳細注釋)

  7. 干貨 | 從下料問題看整數規划中的列生成方法(Python2.7調用gurobi進行求解,附代碼)

  8. 干貨 | 10分鍾帶你掌握branch and price(分支定價)算法超詳細原理解析

  9. 干貨 | 10分鍾掌握branch and cut算法原理附帶C++求解TSP問題代碼

  10. 運籌學教學|快醒醒,你的熟人拉格朗日又來了!!

精確式算法-進階

學習了各種算法的原理和部分實現代碼后,可以進一步學習這些算法如何應用到具體問題中的,以及一些更高級的技術,參考的文章如下:

  1. 運籌學教學|分支定界法解帶時間窗的車輛路徑規划問題(附代碼及詳細注釋)

  2. 干貨 | 10分鍾教你使用Column Generation求解VRPTW的線性松弛模型

  3. 干貨 | VRPTW子問題ESPPRC的介紹及其求解算法的C++代碼

  4. 干貨 | 求解VRPTW松弛模型的Column Generation算法的JAVA代碼分享

  5. 運籌學教學|Benders decomposition(一)技術介紹篇

  6. 運籌學教學|Benders decomposition (二)應用實例及算法實現(附源代碼及詳細的代碼注釋)

Additional

此部分當作掃盲和了解:

  1. 用單純形法求解線性規划(linear programming)問題,速度到底有多快呢?

  2. 線性規划&整數規划求解速度PK

  3. 利用動態規划求解旅行商問題(Travelling Salesman Problem)時空復雜度分析以及相關實驗驗證

目前該提綱是基於公眾號已有文章進行整理的,可能還會有很多關於這方面知識沒有涉及。也隨時歡迎大家指正。畢竟小編也只是做了一個暑假這方面的研究而已。

最后的最后,祝大家學有所成。


免責聲明!

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



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