文/郭蓉 趙海峰
本文從考慮不同節點城市的貨物資源分配的角度對中歐班列智能化運輸問題進行模型的建立,結合各節點城市主要貨源和中歐班列運輸資源進行調度優化,利用優化算法選擇出在時間窗和班列車載量共同約束下的最優調度決策。通過對現有貨物資源分配的驅動策略,生成運輸訂單貨源供求響應的資源調度方案。
針對中歐鐵路的運輸特點和貨源地商品種類的多樣性,當前的中歐跨境鐵路運輸多為大宗的貨物,如機械設備、電子產品、批量的食品和藥物等,到達目的國后統一進行貨物裝卸。除此之外,跨境鐵路還需商檢、通關等過境手續才能保證貨物的運輸通暢快速。再者,由于軌距差異,使得中歐班列途中需要1-3次換軌增加了整個運輸過程的成本[1]。本文針對以上問題,結合各節點城市主要貨源和中歐班列運輸資源進行調度優化,對中歐班列智能化運輸調度問題進行研究。
1.1 調度模型約束
本文建立模型用有向路線G(V,A)表示中歐鐵路運輸物理網絡,其中V表示所有城市節點的集合,A表示弧的集合。此外,△+(i)表示從節點i出發的弧的集合,△_(i)表示回到節點j的弧的集合,N=V{0,n+1}表示途經節點集合,K表示中歐班列車輛集合。
(1)運輸距離計算
目標函數1-1表示最小化班列行駛總距離,故有:

(2)關于節點路徑約束
約束1-2—1-4表示班列車輛k在運輸路徑上的流量限制


(3)關于時間連續性約束
約束1-5表示當前班列k行駛時間的連續性。

(4)列車裝載量計算
公式1-6為當前班列k在對所在路線的第一個節點服務結束后的列車裝載量的計算公式。

公式1-7為當前班列k在對所在路線的任意一個節點(不包含第一個節點)服務結束后的列車裝載量的計算公式。

(5)貨流運輸路徑唯一性約束
根據模型假設貨流不可拆分的原則,限制每個運輸節點只被分配到一條運輸路徑,xijk定義為輔助0-1變量,表示區段r和貨流(o,d)的實際運輸路徑的關系,可得以下約束:

本文模型算法求解主要包含編碼與解碼、目標函數、種群初始化、聚類、替換、更新、局部搜索和合并這幾個操作步驟,求解重點步驟如下:
(1)編碼與解碼
本文采用的編碼方式是將樞紐節點與區域節點同時在編碼個體中進行體現。若沿途節點城市數目為N,樞紐節點最多允許K列車進行運輸,那么問題中的個體就表示為1~(N+K-1)的隨機排列。
(2)目標函數
本節采用給違反約束的運輸路線施加懲罰的辦法來使解碼出的各條運輸路線都滿足裝載量約束和時間窗約束。因此,運輸方案總成本的計算公式如下:


式中,s為個體轉換成的運輸方案;f(s)為當前運輸方案的總成本;c(s)為班列總行駛距離;q(s)為各條運輸路線違反的裝載量約束之和;w(s)為所有節點違反的時間窗約束之和;α為違反裝載量約束的懲罰因子;β為違反時間窗約束的懲罰因子;K為班列車輛集合;V={0,1,2,n,n+1}為所有節點的集合;N=V(n+1)為節點城市集合;l0k為班列k離開樞紐節點的裝載量;Lj為班列對節點i服務結束后的剩余裝載量;xijk為班列k是否從節點i出發前往節點j;c為班列最大裝載量;M為足夠大的正數;n為節點城市數目;li為班列到達節點i的時間;bi為顧客i的右時間窗。可根據目標函數公式進一步計算出當前個體的目標函數值。
(3)更新操作
對于本文問題而言,需要結合問題特點,同時引入遺傳算法的交叉操作,從而完成個體位置的更新。假設種群數目為NIND,聚類數目為k(k≤2),則更新操作種群中第i個個體的偽代碼如下。
如果rang<p_one
1.隨機選擇1個聚類:
如果rang<p_one_center
a.Xselect1=這個聚類中的聚類中心
否則
b.Xselect1=從這個聚類中隨機選出一個個體
對個體Xselect1=進行交換操作后得到新個體Xnew。
否則
2.隨機選擇2個聚類:
如果rang<p_two_center
a.Xselect1=聚類1中的聚類中心,Xselect2=聚類2中的聚類中心
否則
b.Xselect1=聚類1中隨機選出個體1,Xselect2=聚類2中隨機選出個體2
對個體Xselect1和Xselect2進行交叉操作后得到新個體Xnew1和Xnew2,選擇目標函數值更小的新個體作為此次更新得到的新個體Xnew。
如果新個體Xnew的目標函數值小于第i個個體的目標函數值,則更新個體i=Xnew;否則,不更新個體i。
上述偽代碼中涉及了交換操作和交叉操作,交換操作的對象是一個個體,交叉操作的對象是兩個個體。
(4)局部搜索操作
局部搜索操作使用破壞算子從當前解中移除若干個節點城市,然后使用修復算子將被移除的節點城市重新插回到破壞的解中。
1.破壞算子
假設節點城市數目為N,要移除的城市數目為L,隨機元素為D,則破壞算子的步驟如下。
①從這N個節點城市中隨機選擇1個城市,如隨機選擇的城市為,此時被移除的城市集合R=[i],未被移除的城市集合U=[剩余N-1個城市]。
②判斷R中城市數目L是否小于等于要移除的城市數目L,如果是,則轉至步驟③;如果不是,轉至步驟⑤。
③首先,從R中隨機選擇一個城市r,根據相關性計算公式計算U中所有城市與城市r的相關性;其次按照相關性從大到小的順序對U中的城市進行排序,排序結果為S;然后根據公式(其中rand∈{0,1},是集合U中節點城市數目,[]表示向上取整)計算下一個被選擇移除的城市next。
④將城市next添加到R中,將顧客next從U中刪除,轉至步驟②。
⑤將R中所有的城市從當前解中全部移除;輸出被移除的城市集合R,以及被破壞的解Sdestroy。
2.修復算子
在得到被移除的城市集合R和破壞解Sdestroy的基礎上,進行修復算子。假設被移除的城市集合為R,破壞解為Sdestroy,則修復算子的步驟如下。
①初始化修復后的解Srepair,即Srepair=Sdestroy。
②如果R非空,轉至步驟③,否則轉至步驟⑥。
③計算當前R中的城市數目nr,計算將R中各個城市插回到Srepair的“遺憾值”regret,即regret是nr行1列的矩陣。
④首先找出regret中最大“遺憾值”對應的序號max_index,其次確定出即將被插回的城市rc=R(max_index),最后將rc插回到中Srepair的“插入成本”最小的位置。
⑤更新R(max_index)=[],轉至步驟②。
⑥修復結束,輸出修復后的解Srepair。
(8)合并操作
合并操作的目的是將Population與offspring進行合并以形成新的Population,但種群數目是一定的,所以需要在Population和offspring中刪除部分個體,以保證種群數目依然為NIND。
將貨流數據及相關參數進行計算得到優化前的班列運輸總成本,結果整理如下表3-1:

表3-1 優化前班列運輸總成本(單位:周)
對西通道中線運輸線路利用本文BSO算法優化后的線路運輸時間T'和班列開行成本Z'進行計算得到優化后的計算結果表3-2。

表3-2 優化后班列運輸總成本(單位:周)
與西通道中線當前運行班列的18條線路對比,優化后的調度方案為8條運輸線路,班列運輸時間優化后減少了76.46%,開行成本優化后減少了47.83%,對中歐班列西通道中線運輸系統的效率實現了顯著的優化。綜合以上分析,根據2020年貨流數據及參數指標進行計算,本文設計的調度方案,能夠在保證中歐班列在穩定運行的基礎上,實現開行成本的降低和運輸效率的提高。
引用出處
[1]王春越.基于需求分類的“義烏——漢堡”中歐班列路徑優化研究[J].物流商論,2021,05(a):37-39.