阿里妹導讀:車輛路徑規劃問題(Vehicle Routing Problem, VRP)是物流領域最經典的優化問題之一,具有極大的學術研究意義和實際應用價值。菜鳥網路高階演算法專家胡浩源帶領倉配智慧化演算法團隊經過兩年的研發,逐步沉澱出了一套完善、強大的車輛路徑規劃求解引擎,為菜鳥內外部多項業務提供了技術支援。通過不斷地對演算法進行探索打磨,我們終於在車輛路徑規劃問題最權威的評測平臺上打破了多項世界紀錄,標誌著菜鳥網路在此領域的技術研究已經進入世界前列。
問題介紹
車輛路徑規劃問題是運籌優化領域最經典的優化問題之一。在此問題中,有若干個客戶對某種貨物有一定量的需求,車輛可以從倉庫取貨之後配送到客戶手中。客戶點與倉庫點組成了一個配送網路,車輛可以在此網路中移動從而完成配送任務。在求解此問題過程中,需要優化的決策變數為每個客戶的配送任務應該分配到哪一輛車上,以及每輛車完成客戶配送任務的先後順序,優化目標為最小化使用的車輛數和車輛總行駛距離(通常情況下最小化車輛數為第一優化目標)。
以i,j表示配送網路中的節點(i,j∈{0,1,2,…,N}), 其中0表示倉庫點,其它表示客戶點),以k表示車輛(k∈{1,2,…,K}),以為決策變數,表示車輛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表示:
圖1 VRP各類變型問題
經典求解演算法
車輛路徑規劃問題是典型的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演算法的主要步驟為:
使用一定的規則構造一個初始解(即Initial過程);
基於運算元的權重,選擇此次迭代過程中使用的Ruin運算元和Insert運算元;
對此次迭代的初始解執行Ruin操作,即將部分已經被車輛服務的客戶點刪除,使初始解成為一個不可行解;
對步驟(3)獲得的解執行Insert操作,即對於還沒有被車輛服務的客戶點,將其插入到解中,儘量獲得一個可行解;
基於優化目標函式評估步驟(4)獲得的新的解,並根據一定的策略決定是否接受新解;
判斷是否達到終止條件。如果是,則終止計算,返回當前找到的最好解;否則,基於此輪計算中運算元的表現,更新運算元的權重,並返回到步驟(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引擎打造成為更強大、穩定、易用的優化產品,為菜鳥和集團的各項業務發展提供技術支援,並有計劃地向外輸出,為中國的物流行業賦能提效。