相信各位小伙伴在看到運籌學時,第一反應肯定是:
前面我們聊過,如何學習啟發式算法。那么今天就聊聊如何學習精確式算法吧。
和啟發式算法不同的是,精確式算法不僅需要數學基礎,還需要運籌基礎,代碼基礎等。
所以相對來說精確式算法相對會難一些。但是當你學完整個知識體系,會發現,其實精確式算法也差不多是那些套路。而且比啟發式算法更加固定。學習順序可參照以下:
運籌學基礎
首先需要學習的是運籌學基礎,包括整數規划、單純型法、混合整數規划、建模思想、常見的運籌學問題以及算法等。
推薦書籍:Operations Research Applications and Algorithms, Wayne L. Winston(書籍下載請在后台留言【運籌學書籍】不包括【】即可下載)。可參考的公眾號文章(可按順序學習)。
基礎部分:
進階部分:
求解器Solver
有了基礎知識以后,就可以做更深入的學習。首先要熟悉至少一款商業求解器的使用以便能方便快速地對數學模型進行檢驗,包括后面學習更高級的精確算法,也要用到求解器。可參考的文章如下:
精確式算法-基礎
有了運籌學的基礎+求解器的熟悉使用,就可以開始精確式算法的學習了。這部分的算法包括最基礎的branch and bound,column generation,branch and price,branch and cut,branch price and cut等等。可參考的文章如下:
精確式算法-進階
學習了各種算法的原理和部分實現代碼后,可以進一步學習這些算法如何應用到具體問題中的,以及一些更高級的技術,參考的文章如下:
Additional
此部分當作掃盲和了解:
目前該提綱是基於公眾號已有文章進行整理的,可能還會有很多關於這方面知識沒有涉及。也隨時歡迎大家指正。畢竟小編也只是做了一個暑假這方面的研究而已。
最后的最后,祝大家學有所成。