今天為大家介紹需求可拆分的帶時(shí)間窗車輛路徑問(wèn)題(Split Delivery Vehicle Routing Problem with Time Window,簡(jiǎn)稱SDVRPTW )。而求解技術(shù)是精確算法之王中王——分支定價(jià)割平面法(Branch-Price-Cut,簡(jiǎn)稱BPC),因?yàn)閲?guó)內(nèi)少有這類型算法的介紹,今天小編就給大家分享一下咯。
背景介紹和問(wèn)題性質(zhì)
模型建立
BPC技術(shù)簡(jiǎn)介
相關(guān)研究及問(wèn)題變式
參考文獻(xiàn)
傳統(tǒng)的VRPTW一般假設(shè)每個(gè)客戶的需求量小于車輛的最大載重,所以一輛車可以一次性滿足客戶的需求。VRPTW的介紹見(jiàn)下面推文:
干貨|十分鐘快速掌握CPLEX求解VRPTW數(shù)學(xué)模型(附JAVA代碼及CPLEX安裝流程)
在實(shí)際生活中,客戶需求也可能會(huì)大于車輛的最大載重,在要求一輛車至多訪問(wèn)客戶一次的條件下,就需要多輛車服務(wù)同一個(gè)客戶,于是誕生了SDVRPTW。
當(dāng)然,如果客戶需量求小于車的容量,因?yàn)榭蛻舻男枨罂刹鸱郑╯plit,即一次送貨量小于客戶需求),物流公司也可能獲得經(jīng)濟(jì)上的收益。舉個(gè)例子。
假設(shè)客戶1、2、3的需求分別為3,4,3;每個(gè)客戶離depot 0的距離都是20,客戶之間的距離都是2;每輛車的最大載重為5;則VRP的最優(yōu)解(左圖)為3輛車,總距離為120;SDVRP的最優(yōu)解(右圖)為2輛車,總距離為84。
雖然SDVRPTW是VRPTW對(duì)約束的松弛,但是前者模型的建立和算法的設(shè)計(jì)卻更加復(fù)雜。因?yàn)橐坏┛蛻粼试S被訪問(wèn)多次,那我們很難在頂點(diǎn)用唯一的變量分別表示該客戶每次接受服務(wù)的配送量和服務(wù)時(shí)間,這無(wú)疑為模型定義和算法帶來(lái)極大的挑戰(zhàn)。
所以有必要剖析SDVRPTW的性質(zhì),為復(fù)雜的問(wèn)題求解提供幫助。對(duì)于任意行駛成本和行駛時(shí)間均滿足三角不等式關(guān)系的SDVRPTW實(shí)例,存在一個(gè)最優(yōu)解具備以下幾個(gè)性質(zhì):
性質(zhì)1:對(duì)解中任意兩條路線,它們共同訪問(wèn)的客戶數(shù)目不超過(guò)1個(gè)。
性質(zhì)2:每一條連接兩個(gè)客戶點(diǎn)的邊最多被正向或反向經(jīng)過(guò)一次。
性質(zhì)3:每條路線中的客戶都至多被訪問(wèn)一次。
例如當(dāng)0表示depot,送貨給拆分需求的客戶1和2時(shí),則允許存在兩條0-1-0的路線,但不允許0-1-2-0和0-2-1-0同時(shí)存在,因?yàn)榇藭r(shí)違反了性質(zhì)1和性質(zhì)2。
模型建立引用Desaulniers(2010)提出的arc-flow模型,符號(hào)定義決定直接使用原文展示,不然總覺(jué)得詞不達(dá)意。
因?yàn)槟P驮谇蠼獾臅r(shí)候會(huì)先進(jìn)行松弛,為了使模型下界更好,通常會(huì)引進(jìn)有效不等式,所以需要以下符號(hào)定義,假設(shè)U是客戶集合N的一個(gè)子集。
額外的符號(hào)說(shuō)明如下:
綜上建立如下arc flow模型:
目標(biāo)函數(shù)(1)表示最小化車輛行駛成本;
約束(2)確保每個(gè)客戶的需求得到滿足;
約束(3)-(6)雖然是多余的約束,但是可以加強(qiáng)模型松弛的效果,其中(3)表示訪問(wèn)客戶需要的最小車輛數(shù);(4)表示共調(diào)度的車輛數(shù);(5)表示共調(diào)度的車輛數(shù)的上下界;(6)表示k-path不等式;
約束(7)由性質(zhì)2每條邊至多經(jīng)過(guò)一次得到,關(guān)于arc的有效不等式,也是為了加強(qiáng)模型松弛效果;
約束(8)-(10)定義了路徑的結(jié)構(gòu),從depot 0出發(fā),最后回到depot n+1;
約束(11)-(12)確保不違反每個(gè)客戶的時(shí)間窗;
約束(13)確保不違反車輛的最大載重約束;
約束(14)表示如果車輛訪問(wèn)了客戶,則有相應(yīng)的配送量,且不得超過(guò)該客戶的總需求;
約束(15)為決策變量的取值約束。
首先我們對(duì)上文提到的arc-flow模型進(jìn)行轉(zhuǎn)換。因?yàn)閍rc-flow模型雖然可以非常恰當(dāng)?shù)孛枋鯯DVRPTW模型,但是松弛后的下界比較差,不利于算法的收斂,而將模型轉(zhuǎn)化為set partitioning模型后再松弛,可以得到更好的下界。轉(zhuǎn)化后的模型稱為master problem(MP),需要下列的符號(hào)定義:
注:Corollary 1為前文提到的性質(zhì)2
綜上建立如下set partitioning模型(MP):
目標(biāo)函數(shù)(16)表示最小化車輛行駛成本;
約束(17)-(22)等價(jià)于約束(2)-(7);
約束(23)確保MP的決策變量θ_rw非負(fù);
約束(24)和(27)分別表示路徑θ_r和弧y_ij與決策變量的關(guān)系;
剩余約束為變量的取值約束。
但MP的不足在于包含大量的變量(路徑),為了解決這個(gè)問(wèn)題,可以利用分支定價(jià)割平面算法(BPC)進(jìn)行處理,下面介紹的技術(shù)框架也是由Desaulniers(2010)提出的。BPC是分支定界法的一種延伸,其外部調(diào)用分支定界法的框架,在分支定界樹(shù)(Branch)的每個(gè)結(jié)點(diǎn)上通過(guò)列生成(Price)求解set partitioning模型的線性松弛來(lái)得到該節(jié)點(diǎn)的下界,并通過(guò)引入有效不等式(Cut)改善下界。下圖引用自舒勝男的碩士論文(見(jiàn)文獻(xiàn)6),流程圖詳細(xì)解釋了算法的框架細(xì)節(jié)。
接下來(lái)我們基于上圖,代入到SDVRPTW模型的求解進(jìn)行闡述。從圖片右上方開(kāi)始,我們首先構(gòu)造一個(gè)初始的分支定界樹(shù)的結(jié)點(diǎn),并將該結(jié)點(diǎn)加入到搜索隊(duì)列。當(dāng)搜索隊(duì)列不為空時(shí),對(duì)隊(duì)列頭結(jié)點(diǎn)開(kāi)始迭代求解。
對(duì)MP進(jìn)行松弛,構(gòu)造一個(gè)求解表達(dá)式(16)-(20)和(23)的約束線性主問(wèn)題(Restricted linear master problem,RLMP),RLMP雖然與松弛后的MP(稱為L(zhǎng)MP)有相同的約束,但是只包含了部分有限的決策變量。然后開(kāi)始列生成迭代。通過(guò)前面推文的復(fù)習(xí),我們知道在列生成過(guò)程中,核心就是通過(guò)定義求解Subproblem(也有叫pricing problem),尋找除了RLMP包含的變量外,LMP是否還存在負(fù)檢驗(yàn)數(shù)的變量θ_rw。Subproblem的符號(hào)定義如下:
綜上建立如下Subproblem模型:
其中,
本文的Subproblem是一個(gè)有界背包問(wèn)題,這里Desaulniers(2010)采用labeling algorithm進(jìn)行精確求解。當(dāng)找不到檢驗(yàn)數(shù)為負(fù)的列(路徑),則停止列生成得到當(dāng)前RLMP的最優(yōu)解,對(duì)應(yīng)算法流程圖的LP solution,否則添加找到的負(fù)列到RLMP中,繼續(xù)調(diào)用列生成迭代。
將上述過(guò)程最終得到的LP solution作為當(dāng)前分支定界樹(shù)節(jié)點(diǎn)的下界,并通過(guò)引進(jìn)違反的有效不等式作為Cuts,加入到當(dāng)前RLMP的約束中,再調(diào)用列生成過(guò)程改進(jìn)下界,直到找不到違反的Cuts時(shí)停止列生成迭代,得到改進(jìn)后的下界,則算法需要判斷以下三種情況:
如果改進(jìn)后的下界大于等于當(dāng)前最優(yōu)上界,則節(jié)點(diǎn)被剪枝;
如果改進(jìn)后的下界小于當(dāng)前最優(yōu)上界,且為整數(shù)解,則更新為當(dāng)前最優(yōu)上界;
如果改進(jìn)后的下界小于當(dāng)前最優(yōu)上界,但不是整數(shù)解,則通過(guò)一系列branching decision對(duì)節(jié)點(diǎn)進(jìn)行分支,得到的結(jié)點(diǎn)加入到搜索隊(duì)列等待后續(xù)搜索。
當(dāng)搜索隊(duì)列為空,即所有搜索節(jié)點(diǎn)都被搜索完畢后時(shí),算法停止,框架下界值即為最優(yōu)解。
小聲吐槽:以上步驟希望讀者結(jié)合前言的推文回顧,仔細(xì)閱讀,定可以對(duì)其他涉及BPC的論文進(jìn)行舉一反三。小編也是學(xué)了很久才搞明白。
Archetti et al. (2011)在Dsaulniers(2010)模型的基礎(chǔ)上改進(jìn)了BPC算法。因?yàn)槭褂镁_算法求解Subproblem比較慢,所以作者先用Tabu Search尋找負(fù)檢驗(yàn)數(shù)的列,如果找不到再調(diào)用labeling algorithm,同時(shí)引進(jìn)了更多類型的Cuts改善下界,使用啟發(fā)式separation algorithm尋找違反的有效不等式。以上技術(shù)都加快了BPC對(duì)SDVRPTW的求解速度。
Salani and Vacca(2011)研究了discrete SDVRPTW,在這個(gè)問(wèn)題中,客戶的需求為一系列可以分別配送的離散物品,且在客戶點(diǎn)的服務(wù)時(shí)間正比于配送量。因?yàn)檫@個(gè)特征,前文提到的性質(zhì)不再有效,比如實(shí)例的解允許兩條路徑有超過(guò)一個(gè)相同客戶是分批交貨的。
Luo et al.(2017)研究了SDVRPTW with linear weight-related cost,在這個(gè)問(wèn)題中,每單位距離的行駛成本是車輛載重的線性函數(shù)。本文的labeling algorithm更加高效,雖然每個(gè)標(biāo)簽的定義都包含了檢驗(yàn)數(shù)與車輛載重之間的函數(shù)關(guān)系,因此每個(gè)頂點(diǎn)可能生成的標(biāo)簽數(shù)量將會(huì)是Desaulniers(2010)的三倍,但因?yàn)槭褂昧艘粚?duì)多的dominance rule,所以最后保留下來(lái)的標(biāo)簽數(shù)量將會(huì)變少,且性質(zhì)更優(yōu),這也得益于作者提出了一個(gè)dominance graph。
Archett et al.(2011)首次用BPC解決SDVRP,即問(wèn)題去掉了對(duì)客戶時(shí)間窗的約束。模型和算法都與Desaulniers(2010)相似,主要區(qū)別是在求解Subproblem時(shí),將每個(gè)客戶點(diǎn)轉(zhuǎn)化為一系列該客戶可能配送量的點(diǎn),再利用labeling algorithm求解時(shí)將變得簡(jiǎn)單,但因此算法的效率也極大的取決于客戶需求的規(guī)模。
[1] Desaulniers G (2010) Branch-and-price-and-cut for the split delivery vehicle routing problem with time windows. Oper.
Res. 58(1):179–192.
[2] Archetti C, Bouchard M, Desaulniers G (2011) Enhanced branch and price and cut for vehicle routing with split deliveries and time windows. Transportation Sci. 45(3):285–298.
[3] Salani M, Vacca I (2011) Branch and price for the vehicle routing problem with discrete split deliveries and time windows. Eur. J. Oper. Res. 213(3):470–477.
[4] Luo Z, Qin H, Zhu W, Lim A (2017) Branch and price and cut for the split-delivery vehicle routing problem with time windows and linear weight-related cost. Transportation Sci. 51(2):668–687.
[5] Archetti C, Bianchessi N, Speranza MG (2011) A column generation approach for the split delivery vehicle routing problem. Networks. 58(4):241–254.
[6] 舒勝男. 求解多周期質(zhì)檢員排期問(wèn)題的精確算法設(shè)計(jì)[D]. 武漢:華中科技大學(xué). 2017
瑪氏中國(guó) | 2025年度國(guó)內(nèi)運(yùn)輸物流服務(wù)【冰淇淋業(yè)務(wù)】
3468 閱讀2025年京東物流貴州大件宅配、京東幫資源招商
1619 閱讀2025年京東物流-河北大件宅配、京東幫資源招商
1182 閱讀快運(yùn)網(wǎng)點(diǎn)的“跨境突破”:利潤(rùn)更高、增長(zhǎng)潛力大、協(xié)同增效
938 閱讀物流企業(yè),沒(méi)有效率的增長(zhǎng)就是在加速衰亡
888 閱讀【權(quán)威發(fā)布】2025年貨車司機(jī)從業(yè)狀況調(diào)查報(bào)告(第一部分)
842 閱讀什么樣的物流人,會(huì)越來(lái)越厲害?
821 閱讀支持99%歐洲國(guó)家互發(fā)快遞!菜鳥(niǎo)升級(jí)G2G泛歐3日達(dá)服務(wù)
838 閱讀為何有些物流人越混越差?
823 閱讀順豐獲任大圩葡萄官方指定物流服務(wù)商
806 閱讀