文/郭蓉 趙海峰
本文從考慮不同節(jié)點(diǎn)城市的貨物資源分配的角度對(duì)中歐班列智能化運(yùn)輸問題進(jìn)行模型的建立,結(jié)合各節(jié)點(diǎn)城市主要貨源和中歐班列運(yùn)輸資源進(jìn)行調(diào)度優(yōu)化,利用優(yōu)化算法選擇出在時(shí)間窗和班列車載量共同約束下的最優(yōu)調(diào)度決策。通過對(duì)現(xiàn)有貨物資源分配的驅(qū)動(dòng)策略,生成運(yùn)輸訂單貨源供求響應(yīng)的資源調(diào)度方案。
針對(duì)中歐鐵路的運(yùn)輸特點(diǎn)和貨源地商品種類的多樣性,當(dāng)前的中歐跨境鐵路運(yùn)輸多為大宗的貨物,如機(jī)械設(shè)備、電子產(chǎn)品、批量的食品和藥物等,到達(dá)目的國后統(tǒng)一進(jìn)行貨物裝卸。除此之外,跨境鐵路還需商檢、通關(guān)等過境手續(xù)才能保證貨物的運(yùn)輸通暢快速。再者,由于軌距差異,使得中歐班列途中需要1-3次換軌增加了整個(gè)運(yùn)輸過程的成本[1]。本文針對(duì)以上問題,結(jié)合各節(jié)點(diǎn)城市主要貨源和中歐班列運(yùn)輸資源進(jìn)行調(diào)度優(yōu)化,對(duì)中歐班列智能化運(yùn)輸調(diào)度問題進(jìn)行研究。
1.1 調(diào)度模型約束
本文建立模型用有向路線G(V,A)表示中歐鐵路運(yùn)輸物理網(wǎng)絡(luò),其中V表示所有城市節(jié)點(diǎn)的集合,A表示弧的集合。此外,△+(i)表示從節(jié)點(diǎn)i出發(fā)的弧的集合,△_(i)表示回到節(jié)點(diǎn)j的弧的集合,N=V{0,n+1}表示途經(jīng)節(jié)點(diǎn)集合,K表示中歐班列車輛集合。
(1)運(yùn)輸距離計(jì)算
目標(biāo)函數(shù)1-1表示最小化班列行駛總距離,故有:
(2)關(guān)于節(jié)點(diǎn)路徑約束
約束1-2—1-4表示班列車輛k在運(yùn)輸路徑上的流量限制
(3)關(guān)于時(shí)間連續(xù)性約束
約束1-5表示當(dāng)前班列k行駛時(shí)間的連續(xù)性。
(4)列車裝載量計(jì)算
公式1-6為當(dāng)前班列k在對(duì)所在路線的第一個(gè)節(jié)點(diǎn)服務(wù)結(jié)束后的列車裝載量的計(jì)算公式。
公式1-7為當(dāng)前班列k在對(duì)所在路線的任意一個(gè)節(jié)點(diǎn)(不包含第一個(gè)節(jié)點(diǎn))服務(wù)結(jié)束后的列車裝載量的計(jì)算公式。
(5)貨流運(yùn)輸路徑唯一性約束
根據(jù)模型假設(shè)貨流不可拆分的原則,限制每個(gè)運(yùn)輸節(jié)點(diǎn)只被分配到一條運(yùn)輸路徑,xijk定義為輔助0-1變量,表示區(qū)段r和貨流(o,d)的實(shí)際運(yùn)輸路徑的關(guān)系,可得以下約束:
本文模型算法求解主要包含編碼與解碼、目標(biāo)函數(shù)、種群初始化、聚類、替換、更新、局部搜索和合并這幾個(gè)操作步驟,求解重點(diǎn)步驟如下:
(1)編碼與解碼
本文采用的編碼方式是將樞紐節(jié)點(diǎn)與區(qū)域節(jié)點(diǎn)同時(shí)在編碼個(gè)體中進(jìn)行體現(xiàn)。若沿途節(jié)點(diǎn)城市數(shù)目為N,樞紐節(jié)點(diǎn)最多允許K列車進(jìn)行運(yùn)輸,那么問題中的個(gè)體就表示為1~(N+K-1)的隨機(jī)排列。
(2)目標(biāo)函數(shù)
本節(jié)采用給違反約束的運(yùn)輸路線施加懲罰的辦法來使解碼出的各條運(yùn)輸路線都滿足裝載量約束和時(shí)間窗約束。因此,運(yùn)輸方案總成本的計(jì)算公式如下:
式中,s為個(gè)體轉(zhuǎn)換成的運(yùn)輸方案;f(s)為當(dāng)前運(yùn)輸方案的總成本;c(s)為班列總行駛距離;q(s)為各條運(yùn)輸路線違反的裝載量約束之和;w(s)為所有節(jié)點(diǎn)違反的時(shí)間窗約束之和;α為違反裝載量約束的懲罰因子;β為違反時(shí)間窗約束的懲罰因子;K為班列車輛集合;V={0,1,2,n,n+1}為所有節(jié)點(diǎn)的集合;N=V(n+1)為節(jié)點(diǎn)城市集合;l0k為班列k離開樞紐節(jié)點(diǎn)的裝載量;Lj為班列對(duì)節(jié)點(diǎn)i服務(wù)結(jié)束后的剩余裝載量;xijk為班列k是否從節(jié)點(diǎn)i出發(fā)前往節(jié)點(diǎn)j;c為班列最大裝載量;M為足夠大的正數(shù);n為節(jié)點(diǎn)城市數(shù)目;li為班列到達(dá)節(jié)點(diǎn)i的時(shí)間;bi為顧客i的右時(shí)間窗??筛鶕?jù)目標(biāo)函數(shù)公式進(jìn)一步計(jì)算出當(dāng)前個(gè)體的目標(biāo)函數(shù)值。
(3)更新操作
對(duì)于本文問題而言,需要結(jié)合問題特點(diǎn),同時(shí)引入遺傳算法的交叉操作,從而完成個(gè)體位置的更新。假設(shè)種群數(shù)目為NIND,聚類數(shù)目為k(k≤2),則更新操作種群中第i個(gè)個(gè)體的偽代碼如下。
如果rang<p_one
1.隨機(jī)選擇1個(gè)聚類:
如果rang<p_one_center
a.Xselect1=這個(gè)聚類中的聚類中心
否則
b.Xselect1=從這個(gè)聚類中隨機(jī)選出一個(gè)個(gè)體
對(duì)個(gè)體Xselect1=進(jìn)行交換操作后得到新個(gè)體Xnew。
否則
2.隨機(jī)選擇2個(gè)聚類:
如果rang<p_two_center
a.Xselect1=聚類1中的聚類中心,Xselect2=聚類2中的聚類中心
否則
b.Xselect1=聚類1中隨機(jī)選出個(gè)體1,Xselect2=聚類2中隨機(jī)選出個(gè)體2
對(duì)個(gè)體Xselect1和Xselect2進(jìn)行交叉操作后得到新個(gè)體Xnew1和Xnew2,選擇目標(biāo)函數(shù)值更小的新個(gè)體作為此次更新得到的新個(gè)體Xnew。
如果新個(gè)體Xnew的目標(biāo)函數(shù)值小于第i個(gè)個(gè)體的目標(biāo)函數(shù)值,則更新個(gè)體i=Xnew;否則,不更新個(gè)體i。
上述偽代碼中涉及了交換操作和交叉操作,交換操作的對(duì)象是一個(gè)個(gè)體,交叉操作的對(duì)象是兩個(gè)個(gè)體。
(4)局部搜索操作
局部搜索操作使用破壞算子從當(dāng)前解中移除若干個(gè)節(jié)點(diǎn)城市,然后使用修復(fù)算子將被移除的節(jié)點(diǎn)城市重新插回到破壞的解中。
1.破壞算子
假設(shè)節(jié)點(diǎn)城市數(shù)目為N,要移除的城市數(shù)目為L(zhǎng),隨機(jī)元素為D,則破壞算子的步驟如下。
①從這N個(gè)節(jié)點(diǎn)城市中隨機(jī)選擇1個(gè)城市,如隨機(jī)選擇的城市為,此時(shí)被移除的城市集合R=[i],未被移除的城市集合U=[剩余N-1個(gè)城市]。
②判斷R中城市數(shù)目L是否小于等于要移除的城市數(shù)目L,如果是,則轉(zhuǎn)至步驟③;如果不是,轉(zhuǎn)至步驟⑤。
③首先,從R中隨機(jī)選擇一個(gè)城市r,根據(jù)相關(guān)性計(jì)算公式計(jì)算U中所有城市與城市r的相關(guān)性;其次按照相關(guān)性從大到小的順序?qū)中的城市進(jìn)行排序,排序結(jié)果為S;然后根據(jù)公式(其中rand∈{0,1},是集合U中節(jié)點(diǎn)城市數(shù)目,[]表示向上取整)計(jì)算下一個(gè)被選擇移除的城市next。
④將城市next添加到R中,將顧客next從U中刪除,轉(zhuǎn)至步驟②。
⑤將R中所有的城市從當(dāng)前解中全部移除;輸出被移除的城市集合R,以及被破壞的解Sdestroy。
2.修復(fù)算子
在得到被移除的城市集合R和破壞解Sdestroy的基礎(chǔ)上,進(jìn)行修復(fù)算子。假設(shè)被移除的城市集合為R,破壞解為Sdestroy,則修復(fù)算子的步驟如下。
①初始化修復(fù)后的解Srepair,即Srepair=Sdestroy。
②如果R非空,轉(zhuǎn)至步驟③,否則轉(zhuǎn)至步驟⑥。
③計(jì)算當(dāng)前R中的城市數(shù)目nr,計(jì)算將R中各個(gè)城市插回到Srepair的“遺憾值”regret,即regret是nr行1列的矩陣。
④首先找出regret中最大“遺憾值”對(duì)應(yīng)的序號(hào)max_index,其次確定出即將被插回的城市rc=R(max_index),最后將rc插回到中Srepair的“插入成本”最小的位置。
⑤更新R(max_index)=[],轉(zhuǎn)至步驟②。
⑥修復(fù)結(jié)束,輸出修復(fù)后的解Srepair。
(8)合并操作
合并操作的目的是將Population與offspring進(jìn)行合并以形成新的Population,但種群數(shù)目是一定的,所以需要在Population和offspring中刪除部分個(gè)體,以保證種群數(shù)目依然為NIND。
將貨流數(shù)據(jù)及相關(guān)參數(shù)進(jìn)行計(jì)算得到優(yōu)化前的班列運(yùn)輸總成本,結(jié)果整理如下表3-1:
表3-1 優(yōu)化前班列運(yùn)輸總成本(單位:周)
對(duì)西通道中線運(yùn)輸線路利用本文BSO算法優(yōu)化后的線路運(yùn)輸時(shí)間T'和班列開行成本Z'進(jìn)行計(jì)算得到優(yōu)化后的計(jì)算結(jié)果表3-2。
表3-2 優(yōu)化后班列運(yùn)輸總成本(單位:周)
與西通道中線當(dāng)前運(yùn)行班列的18條線路對(duì)比,優(yōu)化后的調(diào)度方案為8條運(yùn)輸線路,班列運(yùn)輸時(shí)間優(yōu)化后減少了76.46%,開行成本優(yōu)化后減少了47.83%,對(duì)中歐班列西通道中線運(yùn)輸系統(tǒng)的效率實(shí)現(xiàn)了顯著的優(yōu)化。綜合以上分析,根據(jù)2020年貨流數(shù)據(jù)及參數(shù)指標(biāo)進(jìn)行計(jì)算,本文設(shè)計(jì)的調(diào)度方案,能夠在保證中歐班列在穩(wěn)定運(yùn)行的基礎(chǔ)上,實(shí)現(xiàn)開行成本的降低和運(yùn)輸效率的提高。
引用出處
[1]王春越.基于需求分類的“義烏——漢堡”中歐班列路徑優(yōu)化研究[J].物流商論,2021,05(a):37-39.