世界冠軍之路:菜鳥車輛路徑規劃求解引擎研發歷程

阿里妹導讀:車輛路徑規劃問題(Vehicle Routing Problem, VRP)是物流領域最經典的優化問題之一,具備極大的學術研究意義和實際應用價值。菜鳥網絡高級算法專家胡浩源帶領倉配智能化算法團隊通過兩年的研發,逐步沉澱出了一套完善、強大的車輛路徑規劃求解引擎,爲菜鳥內外部多項業務提供了技術支持。經過不斷地對算法進行探索打磨,咱們終於在車輛路徑規劃問題最權威的評測平臺上打破了多項世界紀錄,標誌着菜鳥網絡在此領域的技術研究已經進入世界前列。算法

問題介紹

車輛路徑規劃問題是運籌優化領域最經典的優化問題之一。在此問題中,有若干個客戶對某種貨物有必定量的需求,車輛能夠從倉庫取貨以後配送到客戶手中。客戶點與倉庫點組成了一個配送網絡,車輛能夠在此網絡中移動從而完成配送任務。在求解此問題過程當中,須要優化的決策變量爲每一個客戶的配送任務應該分配到哪一輛車上,以及每輛車完成客戶配送任務的前後順序,優化目標爲最小化使用的車輛數和車輛總行駛距離(一般狀況下最小化車輛數爲第一優化目標)。網絡

以i,j表示配送網絡中的節點(i,j∈{0,1,2,…,N}), 其中0表示倉庫點,其它表示客戶點),以k表示車輛(k∈{1,2,…,K}),以image爲決策變量,表示車輛k是否從i點行駛到j點。則標準的車輛路徑規劃問題可使用如下數據規劃的形式描述:架構

其中,表達式(1)表示優化目標爲最小化使用車輛數;表達式(2)表示每一個點有且僅有一輛車負責配送其所須要的貨物;表達式(3)表示每輛車最多負責一條配送線路;表達式(4)表示網絡中的流量平衡條件;表達式(5)表示每輛車負責配送的貨物不超過其承載能力限制;表達式(6)爲防止孤立子環出現的約束條件。併發

車輛路徑規劃問題在物流領域和生產領域的應用很是普遍。因此在實際應用中也出現了一些在標準問題的基礎上增長了某些變化以後的變型問題。其中較爲常見的包括:框架

  • CVRP:Capacitated VRP, 限制配送車輛的承載體積、重量等。
  • VRPTW:VRP with Time Windows, 客戶對貨物的送達時間有時間窗要求。
  • VRPPD:VRP with Pickup and Delivery, 車輛在配送過程當中能夠一邊攬收一邊配送,在外賣O2O場景中比較常見。
  • MDVRP: Multi-Depot VRP, 配送網絡中有多個倉庫,一樣的貨物能夠在多個倉庫取貨。
  • OVRP:Open VRP, 車輛完成配送任務以後不須要返回倉庫。
  • VRPB: VRP with backhauls, 車輛完成配送任務以後回程取貨。

以上各種問題之間的關係能夠經過圖1表示:jsp

圖1 VRP各種變型問題ide

經典求解算法

車輛路徑規劃問題是典型的NP-hard問題,很是具備挑戰性。同時由於其在實際應用的巨大價值,學術界和工業界對此類問題的優化算法的探索已經持續了幾十年的時間。已有的經典求解算法能夠分爲精確解算法和啓發式算法兩大類。函數

在精確解算法方面,最基本的方法爲分支定界算法,雖然其可以從理論上保證在有限時間內得到最優解,可是在實際計算中存在計算耗時巨大的狀況。爲了提升求解效率,研究者們前後提出了多種Branch-and-Cut以及Branch-Cut-and-Price方法,大幅下降了算法的求解時間。可是對於實際應用中較大規模的問題而言(例如超過200個點的問題),精確解算法依然沒法可以在合理的時間內完成計算。因此還有一大部分研究集中於啓發式算法領域。測試

啓發式算法的思想爲經過一系列啓發式的規則來構造和改變解,從而逐步提高解的質量。對於VRP而言,較爲經典的啓發式算法爲Clarke-Wright算法等。此外,通過不斷的探索研究,元啓發式算法被證實在求解VRP方面具備很好的效果和效率。一些通過精心設計的元啓發式算法,例如模擬退火、禁忌搜索、遺傳算法、蟻羣算法、變鄰域搜索、自適應大規模鄰域搜索算法等在求解VRP上有着很是好的表現。優化

菜鳥車輛路徑規劃引擎研發歷程

階段一:核心基礎算法研發

在研發之初,菜鳥倉配智能化算法團隊充分調研了VRP領域的相關學術論文和軟件產品等,最終肯定了以自適應大規模鄰域搜索(Adaptive Large Neighborhood Search, ALNS)爲核心算法進行算法引擎的建設。相對於其它算法,ALNS算法的優點包括:

  • 算法框架易於拓展,除了求解標準的VRP以外,還可以求解VRPPD,MDVRP等變型問題;
  • 相對於普通的Local Search類型的算法,ALNS在每一步搜索過程當中可以探索更大的解空間;
  • ALNS算法在搜索過程當中可以自適應地選擇合適的算子,從而對於不一樣類型的問題數據可以有比較穩定的良好求解結果;
  • 經過設計實現不一樣類型的算子,ALNS能夠實現不一樣的搜索策略,從而便於算法的升級拓展。

經典的ALNS算法的主流程如圖2所示:

圖2 ALNS算法主流程

如圖2所示的ALNS算法的主要步驟爲:

  1. 使用必定的規則構造一個初始解(即Initial過程);
  2. 基於算子的權重,選擇這次迭代過程當中使用的Ruin算子和Insert算子;
  3. 對這次迭代的初始解執行Ruin操做,即將部分已經被車輛服務的客戶點刪除,使初始解成爲一個不可行解;
  4. 對步驟(3)得到的解執行Insert操做,即對於尚未被車輛服務的客戶點,將其插入到解中,儘可能得到一個可行解;
  5. 基於優化目標函數評估步驟(4)得到的新的解,並根據必定的策略決定是否接受新解;
  6. 判斷是否達到終止條件。若是是,則終止計算,返回當前找到的最好解;不然,基於此輪計算中算子的表現,更新算子的權重,並返回到步驟(2)。

以ALNS算法爲核心,菜鳥倉配智能化算法團隊完成了初版VRP優化引擎的研發。對比測試結果代表其求解效果和效率顯著優於jsprit等國際上流行的開源VRP Solver。在此基礎上,菜鳥倉配智能化算法團隊還對引擎進行了服務化,從而更方便地服務於公司內外部用戶。

階段二:算法體系豐富與升級

爲了更好地服務於公司內外部用戶,菜鳥倉配智能化算法團隊不斷對VRP優化引擎的核心算法組件進行了豐富與升級。主要體如今如下幾個方面:

1.完善功能:在原算法核心框架的基礎上,增長了對Pickup and Delivery(車輛一邊攬收一邊派送)、Multi Trip(車輛多趟派送)等類型問題的支持;並且經過對實際業務問題的抽象,總結出了不一樣類型的優化目標方程(例如最小化階梯訂價的總成本、最小化配送時間等)以及約束條件(例如車輛行駛距離限制、車輛配送訂單數限制、車輛跨區數限制等)。從而使求解引擎可以求解的問題更加全面普遍。

2.豐富算子:爲了提高引擎的求解效果和穩定性,菜鳥倉配智能化算法團隊還在VRP求解引擎中增長了更加豐富的優化算子,例如不一樣類型的局部搜索算子(例如Two-Opt, Three-Opt, Cross-Exchange等)、不一樣類型的中間結果接受策略(例如Greedy, Simulated Annealing等)。

3.提高效果:菜鳥倉配智能化算法團隊還嘗試了多種算法來提高引擎的求解效果,主要包括:

  • Guided ejection search (GES):此算法經過不斷嘗試刪減一輛車,並將此輛車服務的客戶添加到其它車輛上,從而實現下降車輛的使用數。此算法在下降車輛數方面具備很是好的效果;
  • Fast local search (FLS): 在搜索過程當中,只搜索那些有但願改善當前解的的鄰域空間,從而大幅下降搜索計算量,提高算法求解速度;
  • Guided local serach (GLS): 在搜索過程當中對局部最優解的某些特徵施加懲罰項,從而改變搜索方向,避免陷入局部最優;
  • Edge assembly crossover (EAX): 一種基於兩個解生成一個新的解的方法,新生成的解可以很好的繼承父代個體的空間結構;
  • Branch-and-Price-Based Large Neighborhood Search:此算法將VRPTW問題分解爲了Restricted Master Problem和Subproblem。其中在Restricted Master Problem中,基於一系列可行的路徑,經過求解Set Partition問題來得到原問題的解;在Subproblem中,經過Tabu Search來搜索新的可行的路徑;
  • Path-Relink:此算法的核心思想爲經過從initial solution到guiding solution的逐步移動,探索兩個解之間的廣闊的鄰域,從而有可能發現更好的解;
  • Hybrid Cluster and Heuristics:此算法是針對超大規模的問題而設計,首先經過合適的聚類算法對客戶點進行聚類,從而將原問題分解爲多個小規模的子問題,而後並行求解,最終將子問題的解組裝成爲原問題的解。

階段三:算法並行化升級

對於大部分啓發式算法而言,能夠自然地經過並行化計算來提高搜索效率和效果,例如並行地計算評估多個相鄰解的質量、向多個鄰域方向進行搜索或者使用多種策略進行搜索等,甚至並行地使用多種算法進行搜索等。因此爲了進一步提高VRP引擎的求解質量,菜鳥倉配智能化算法團隊對VRP引擎進行了並行化升級。在此過程當中,前後研發實現了三套並行化算法架構。

Population Island

Population Island的算法架構如圖3所示。在算法執行過程當中,有若干個Island並行執行計算,每一個Island獨立地進行演化,其中各有一個Master和若干Worker,其中Worker負責具體的搜索任務的計算執行,Master負責任務的分配協調以及與其它Island之間的通訊等。每隔必定的計算步數,各個Island的Master之間會相同通訊,分享搜索過程當中得到的知識,從而提高總體的搜索效率。

圖3 Population Island並行化架構

Parallel Memetic

Parallel Memetic的算法架構如圖4所示。整個算法能夠分爲兩個階段,第一個階段的計算重點在於減小使用的車輛數(Delete Route),在此階段中,若干個Worker並行計算,並每隔必定的步數相互通訊分享信息。第一階段結束以後,會得到若干中間結果,將這些結果做爲第二階段中每一個Worker上的初始演化種羣進行計算。第二階段的計算重點在於下降車輛行駛距離(Reduce Distance),第二階段的Worker之間一樣有相互通訊分享知識的機制,並且能夠經過控制演化過程當中父代個體的選擇機制來進行動態地調節Exploration與Exploitation。

圖4 Parallel Memetic並行化架構

Central Pool

Central Pool的算法架構如圖5所示。在算法中有若干個Worker負責具體的搜索任務,並將搜索獲得的解返回到Central Pool中,由Central Manager對解進行排序、篩選、聚類等處理,而後Central Manager會依據當前Central Pool中的解集狀況生成新的計算任務併發送給Worker執行。Central Manager能夠對解空間進行合理的刻畫,並經過計算任務的管控分配在Exploration與Exploitation之間進行平衡,從而提高求解效率。

圖5 Central Pool並行化架構

已得到成果

經過對優化算法的不斷迭代升級,以及在工程架構上的更新完善,菜鳥網絡的車輛路徑規劃引擎在服務內外部客戶的同時也在技術沉澱上得到了重大成果。

在VRP算法領域,最權威的評測對比平臺爲歐洲獨立研究機構SINTEF發起並管理的世界最好解榜單(Best Known Solution),其中包括了對Solomon數據集(1987年提出)和Gehring & Homberger數據集(1999年提出)共356份測試數據的世界紀錄。全世界最頂尖的優化算法學者(例如Jakub Nalepa, D. Pisinger, Yuichi Nagata等)以及優化技術公司(例如Quintiq等)都不斷地在此平臺上刷新世界紀錄,將車輛路徑規劃領域的技術逐漸地推向極致。

菜鳥網絡倉配智能化算法團隊在算法研發過程當中也一直以此數據集爲主要算法評估指標。隨着算法的不斷升級優化,在愈來愈多的數據上接近甚至持平世界紀錄。

最終,在2018年9月,倉配智能化算法團隊的算法終於得到了比世界紀錄更好的結果,並通過了平臺的驗證,向全世界的研究者進行了公開。截止到2019年4月初,菜鳥網絡在此評測數據集上共持有48項世界紀錄,持有數量在衆多研究團隊中位居前列,這標誌着菜鳥在這項領域的技術進入了世界頂尖水平,爲菜鳥和集團贏得了巨大的技術影響力。

總結及展望

在歷時兩年的研發過程當中,菜鳥倉配智能化算法團隊的同窗們付出了巨大的努力和心血。同時在這個過程當中,集團多個事業部的兄弟團隊在算法研究、工程技術等方面也提供了不少很好的專業建議,在此表示衷心的感謝!

在以後的工做中,菜鳥倉配智能化算法團隊將會把VRP引擎打形成爲更強大、穩定、易用的優化產品,爲菜鳥和集團的各項業務發展提供技術支持,並有計劃地向外輸出,爲中國的物流行業賦能提效。


原文連接 本文爲雲棲社區原創內容,未經容許不得轉載。

相關文章
相關標籤/搜索