vrp演算法有哪些?

時間 2021-06-06 09:14:44

1樓:Airaymand

VRP的演算法可以分為兩大類:精確演算法和啟發式演算法,精確演算法就是採用數學的方法處理模型,然後得到問題的最優解;啟發式方法,則針對問題的特性,設計不同的全域性或區域性搜尋規則,實現演算法對解空間的有效搜尋,從而得到問題的還不錯的解。

兩者服務於不同的目的

研究精確演算法需要深厚的離散數學、圖論、運籌學、最優化理論的功底;主要的解VRP的精確演算法有:branch and bound, branch and cut, branch and price and cut, column generation, Bender decomposition等,這類演算法一般需要你對模型進行處理,從乙個簡單的模型,也稱限制主問題,不斷通過新增cut或者column的方式,得到最優模型,從而實現精確解的求解。學習這類方法你還需要深入的了解和學習對偶理論,總之門檻較高,不過學會了能夠融會貫通你就是大佬了。

啟發式演算法的本質是搜尋,主要有禁忌搜尋演算法、蟻群演算法、遺傳演算法、螢火蟲演算法、大鄰域、變鄰域、自適應鄰域等,這是個龐大的家族,也是實際應用較為廣泛的方法。

前者更傾向於做學術研究,發所謂的高水平文章;對於推動學科發展有很大的作用,但不是一般人的菜,得有乙個好的學習環境和學習路徑,沒有行家指導,登堂入室很難。自學曲線很陡。啟發式演算法則相對門檻低一些,套路是小規模與精確演算法比,中大規模與其他啟發式演算法比,有乙個缺點是你無法給出精確的gap

學術界目前應該是存在精確演算法研究者鄙視啟發式研究者的鄙視鏈,但是針對你的需求而言,除非逼不得已,在你可接受的範圍內解決問題就是好的。

2樓:jerry chen

VRP是一類問題,包含了很多變種,CVRP,VRPTW, PDP等,不同的問題處理細節上有很多差異,但是要說演算法,基本的有兩種,啟發示的方法和數學規劃方法的。

啟發示演算法中以 neighborhood search為主要吧,由其延申出的tabu search, large neighborhood search, variable neighborhood search等等;

數學規劃方法中,由於VRP也是從研究TSP問題過來的,所以早期主要是CVRP問題的研究,且以branch-and-cut為主;到後來基本都要有price了(branch-cut-price),也是目前解決這一問題的主要數學規劃方法。

演算法的求解效率還取決於 VRP網路的特點(隨機分布或具有集聚特點)。

現狀:好像去年有篇文獻說CVRP問題的可求解規模已經達到1000+,之前公開的算例大部分已經解決完了,然後又生成了一些更大規模的算例(好像是巴西天主教大學的一波人發的);

VRPTW方面,大概幾年前就已經把solomon的算例求解完了,solomon的資料集最多只有100個客戶,但分為三類:隨機,集聚,二者混合;

有哪些 硬算 的演算法?

Owen 用手數,乙個乙個數,如果數量太大就換一種方法,可以用磚塊代替,用石頭代替,用沙子代替,你可以去工地,那裡的實驗材料比較多,即使一不小心數亂了,不怕,這是硬算最基本的方法,當你的硬算成績無差錯,你可以提高一下硬算速率!總有一天你會成為一名優秀的搬磚工人!或許還會被老闆接見,迎娶老闆女兒,蓋大...

遺傳演算法有哪些有趣應用?

李是Lyapunov的李 可以繪製生成你心儀的影象,比如我的知乎頭像。李是Lyapunov的李 科學與藝術的融合 遺傳演算法繪製蒙娜麗莎 Agent002 Evolution,利用遺傳演算法和神經網路進化出可以跑 跳 爬的骨骼和肌肉。Evolved Virtual Creatures,很老的專案了,...

ACM 中常用的演算法有哪些?

JamesZhao USACO裡面有這麼乙個介紹,這是針對IOI的,供樓主參考。Hal Burch conducted an analysis over spring break of 1999 and made an amazing discovery there are only 16 type...