圖神經(jīng)網(wǎng)絡(luò)+強(qiáng)化學(xué)習(xí)
訪問(wèn)【W(wǎng)RITE-BUG數(shù)字空間】_[內(nèi)附完整源碼和文檔]
車(chē)輛路徑規(guī)劃問(wèn)題(VRP)是運(yùn)籌優(yōu)化領(lǐng)域最經(jīng)典的優(yōu)化問(wèn)題之一。在此問(wèn)題中,有若干個(gè)客戶對(duì)某種貨物有一定量的需求,車(chē)輛可以從倉(cāng)庫(kù)取貨之后配送到客戶手中??蛻酎c(diǎn)與倉(cāng)庫(kù)點(diǎn)組成了一個(gè)配送網(wǎng)絡(luò),車(chē)輛可以在此網(wǎng)絡(luò)中移動(dòng)從而完成配送任務(wù)。在求解此問(wèn)題過(guò)程中,需要優(yōu)化的決策變量為每個(gè)客戶的配送任務(wù)應(yīng)該分配到哪一輛車(chē)上,以及每輛車(chē)完成客戶配送任務(wù)的先后順序,優(yōu)化目標(biāo)為最小化車(chē)輛總行駛距離和使用的車(chē)輛數(shù)。
一、實(shí)驗(yàn)要求
復(fù)現(xiàn)以下論文的方法和結(jié)果:
Duan,L., Zhan,Y., Hu,H., Gong,Y., Wei,J., Zhang,X., Xu,Y.: Efficiently solving the practical vehicle routing problem: A novel joint learning approach. In: KDD. pp.3054–3063 (2020)
1.為了節(jié)省時(shí)間,訓(xùn)練用 10 個(gè)(或以上)的城市規(guī)模的算例。測(cè)試算例用 20 個(gè)(或者以上)規(guī)模。
2.顯示出算法訓(xùn)練收斂過(guò)程,可視化最后的解。可能的情況下,對(duì)比 OR-Tools 的求解效果(后面詳細(xì)描述)。
二、導(dǎo)言
車(chē)輛路徑規(guī)劃問(wèn)題(VRP)是運(yùn)籌優(yōu)化領(lǐng)域最經(jīng)典的優(yōu)化問(wèn)題之一。在此問(wèn)題中,有若干個(gè)客戶對(duì)某種貨物有一定量的需求,車(chē)輛可以從倉(cāng)庫(kù)取貨之后配送到客戶手中??蛻酎c(diǎn)與倉(cāng)庫(kù)點(diǎn)組成了一個(gè)配送網(wǎng)絡(luò),車(chē)輛可以在此網(wǎng)絡(luò)中移動(dòng)從而完成配送任務(wù)。在求解此問(wèn)題過(guò)程中,需要優(yōu)化的決策變量為每個(gè)客戶的配送任務(wù)應(yīng)該分配到哪一輛車(chē)上,以及每輛車(chē)完成客戶配送任務(wù)的先后順序,優(yōu)化目標(biāo)為最小化車(chē)輛總行駛距離和使用的車(chē)輛數(shù)。
故核心優(yōu)化的目標(biāo)為車(chē)輛總的固定成本 + 運(yùn)輸成本,VRP 問(wèn)題最簡(jiǎn)單的形式就是使車(chē)輛具有容量的約束(裝載量有限)。每輛車(chē)從給定的節(jié)點(diǎn)出發(fā)和返回,優(yōu)化的目標(biāo)就是車(chē)輛相關(guān)費(fèi)用和配送距離的函數(shù)。目前的研究工作分為兩個(gè)流派:一種是通過(guò)運(yùn)籌學(xué),另一種是深度學(xué)習(xí)。運(yùn)籌學(xué)的方法是把 VRP 定義為數(shù)學(xué)優(yōu)化問(wèn)題,通過(guò)精確或啟發(fā)式算法達(dá)到最優(yōu)或者近似最優(yōu)解,但是真實(shí)場(chǎng)景的數(shù)據(jù)量下需要花費(fèi)的時(shí)間很多。而對(duì)于深度學(xué)習(xí),之前的研究是在人工生成的數(shù)據(jù)集上,忽略了真實(shí)世界的運(yùn)輸網(wǎng)絡(luò)。在真實(shí) VRP 問(wèn)題數(shù)據(jù)集上,沒(méi)有一個(gè)方法能比得上 OR-tools,于是便想著提出一種新的方法。
三、算法流程
這里主要是將論文中的算法結(jié)合我自己的理解再描述一遍
Problem Setup: Graph Optimization Perspective
首先從圖優(yōu)化的視角來(lái)形式化的描述以下 VRP 問(wèn)題。 一個(gè) VRP 實(shí)例,可以看做一張圖 $G=(V, E)$ ,其中頂點(diǎn)集合: $V={0, \ldots, n}$, 其中 $i=0$ 表示 depot, $i=1, \ldots, n$ 表示客戶,邊集合: $\quad E=\left{e_{i j}\right}, i, j \in V$。
depot 節(jié)點(diǎn)只有坐標(biāo)特征 $x_{0}^{c}$ ,而其他客戶節(jié)點(diǎn)有坐標(biāo)特征和需求量特征,因此是一個(gè)二維特征向量 $x_{i}=\left{x_{i}^{c}, x_{i}^s0sssss00s\right}$,其中$ x_{i}^{c}, x_{i}^s0sssss00s$ 分別是坐標(biāo)特征和需求量特征。每條邊關(guān)聯(lián)兩個(gè)節(jié)點(diǎn)之間的距離為 $m_{i j}$ 。
假設(shè)有: VRP 是生成一個(gè) tour 集合,每個(gè) tour 代表了一個(gè)車(chē)輛的路徑,從節(jié)點(diǎn) 0 出發(fā),在節(jié)點(diǎn) 0 結(jié)束,每個(gè)客戶被服務(wù)一次且僅一次,每輛車(chē)的負(fù)載不超過(guò)它本身的容量,目標(biāo)是最小化總體花費(fèi)。
那么,模型的目標(biāo)是生成一個(gè)客戶的序列: $\pi=\left(\pi_{1}, \pi_{2}, \pi_{3}, \ldots, \pi_{T}\right)$ 其中, $\pi_{t} \in{0,1, \ldots, n}$, 并且 $\pi_{0}$ 可以出現(xiàn)多次,其他節(jié)點(diǎn)只能出現(xiàn)一次。因此,每?jī)蓚€(gè) $\pi_{0}$ 之間的序列就是一輛車(chē)的路線。



