李兆進, 劉 雅, 楊 臻
(西安交通大學(xué) 管理學(xué)院,陜西 西安 710049)
隨著電子商務(wù)的飛速發(fā)展,零擔(dān)物流企業(yè)每個時刻需要服務(wù)的訂單數(shù)量迅速增長[1]。除了訂單數(shù)量龐大以外,每個訂單都有不同的起訖點和不同的時間窗要求。面對大量分散且具有不同起終點和時間窗約束的客戶訂單,傳統(tǒng)的單一運輸方式不僅很難同時滿足多個客戶的需求,而且運輸成本居高不下。和單一運輸方式相比,多式聯(lián)運不僅可以同時服務(wù)多個運輸訂單和整合多種運輸資源,而且可以通過運輸?shù)囊?guī)模經(jīng)濟效應(yīng)降低運輸成本。多式聯(lián)運由于具有靈活、可靠和高效的優(yōu)點而越來越受到運輸行業(yè)和學(xué)術(shù)界的重視[2]。
早期關(guān)于多式聯(lián)運路徑優(yōu)化的研究大多是集中于單一訂單的路徑優(yōu)化研究。在給定的多式聯(lián)運網(wǎng)絡(luò)中,通過不同運輸工具的銜接運輸,尋找一條將貨物從起點運往終點的最短路徑。Xiong[3]在給定的多式聯(lián)運網(wǎng)絡(luò)中為單個運輸訂單規(guī)劃了路徑。Liu[4]和Kengpol[5]也對單個運輸訂單在多式聯(lián)運網(wǎng)絡(luò)中的路徑優(yōu)化進行了研究。
當(dāng)多式聯(lián)運網(wǎng)絡(luò)中的訂單增多時,路徑優(yōu)化的難度會急劇增加。Chang[6]開發(fā)了一種基于拉格朗日松弛技術(shù)的啟發(fā)式算法來求解多個訂單在多式聯(lián)運網(wǎng)絡(luò)中的路徑規(guī)劃問題。Carlsson[7]研究了以卡車和無人機所組成的多式聯(lián)運網(wǎng)絡(luò)的多個運輸訂單路徑優(yōu)化問題。Ayar[8]也為多訂單運輸問題構(gòu)建了混合整數(shù)規(guī)劃模型。以上關(guān)于多訂單在多式聯(lián)運網(wǎng)絡(luò)中運輸路徑優(yōu)化的研究都忽略了運輸工具的容量限制。Fazayeli[9]和Bevrani[10]在多式聯(lián)運網(wǎng)絡(luò)中對多個訂單進行路徑優(yōu)化時考慮了運輸工具的容量限制。但運輸工具可以提供的最大數(shù)量并沒有限制。目前考慮網(wǎng)絡(luò)中所提供的運輸工具最大數(shù)量的研究有Verma[11]和Wang[12]。在對多個運輸訂單進行運輸時,大多是對各個訂單分別運輸,Moccia[13]和Demir[14]對多個運輸訂單進行路徑優(yōu)化時,為了實現(xiàn)運輸?shù)囊?guī)模經(jīng)濟效應(yīng),允許多個運輸訂單進行合并運輸。
運輸訂單的時間窗也是多式聯(lián)運路徑優(yōu)化問題的研究特征。湯銀英[15]考慮了多節(jié)點時間窗差異的集裝箱多式聯(lián)運路徑選擇研究。陳釘均[16]研究了有收貨時間窗軟約束的綠色多式聯(lián)運路徑優(yōu)化。在劉松[17]和鄭紅星[18]的研究中,運輸訂單的時間窗要求也被考慮在內(nèi)。
在多式聯(lián)運網(wǎng)絡(luò)中,所規(guī)劃的運輸訂單路徑往往是由多種運輸方式銜接組成的,當(dāng)貨物的運輸從一種運輸工具轉(zhuǎn)換成為另一種運輸工具時會產(chǎn)生轉(zhuǎn)運成本。現(xiàn)有研究在多式聯(lián)運網(wǎng)絡(luò)中對單個訂單或者多個訂單進行路徑優(yōu)化時都沒有考慮運輸?shù)霓D(zhuǎn)運成本。
雖然目前關(guān)于多式聯(lián)運路徑優(yōu)化的研究既有針對單個訂單的,也有針對多個訂單的,并且在研究中會考慮運輸訂單的時間窗和運輸工具的容量,但很少研究將運輸工具的數(shù)量以及運輸訂單的合并運輸同時考慮在內(nèi),尤其是將運輸訂單在多式聯(lián)運網(wǎng)絡(luò)中發(fā)生轉(zhuǎn)運并將轉(zhuǎn)運成本也考慮在內(nèi)的研究還沒有。
由于各類運輸工具的運輸能力不同,多式聯(lián)運物流企業(yè)在組織運輸?shù)倪^程中需要考慮所運輸?shù)呢浳锶萘坎荒艹^所選擇運輸工具的最大容量。本文研究屬于多式聯(lián)運運作層研究,需要實時決策。在某時刻,多式聯(lián)運物流企業(yè)在網(wǎng)絡(luò)中可以組織的物流資源數(shù)量有限,因此需要將運輸資源可以提供的最大數(shù)量也考慮在內(nèi)。基于此,本文以零擔(dān)多式聯(lián)運網(wǎng)絡(luò)為背景,提出了一種考慮訂單合并和貨物轉(zhuǎn)運的多式聯(lián)運路徑優(yōu)化問題,給定一組運輸訂單的起點和終點,本文的研究是以總運輸成本最小化為目標(biāo),將貨物在滿足各訂單時間窗要求的情況下從各自起點運往各自的終點,給出各個運輸訂單的運輸路徑、運輸路徑上運輸工具的銜接方式以及路徑上運輸工具的使用數(shù)量。在研究中,網(wǎng)絡(luò)中運輸工具的容量限制、可以提供的運輸工具最大數(shù)量限制、運輸工具的最晚服務(wù)時間限制以及運輸?shù)霓D(zhuǎn)運成本都被考慮在內(nèi)。同時,在為運輸訂單進行路徑規(guī)劃時,為了實現(xiàn)運輸?shù)囊?guī)模經(jīng)濟效應(yīng),將多個運輸訂單進行合并運輸。
在1.1部分構(gòu)建了描述該問題的數(shù)學(xué)模型。為了簡化模型,在1.2部分對模型進行了轉(zhuǎn)化。
決策變量為:xijk:第i個運輸訂單選擇第j條邊上的第k種運輸方式,取1;否則取0;yjk:在第j條邊上,選擇第k種運輸方式使用的運輸工具的數(shù)量;ωiv:如果第i個訂單在第v個節(jié)點發(fā)生轉(zhuǎn)運,取1,否則取0。
模型目標(biāo)函數(shù)可表示為:
(1)
(15)
目標(biāo)函數(shù)是最小化總的運輸成本,其中包括三個部分:固定運輸成本、可變運輸成本和轉(zhuǎn)運成本。約束(2)為容量約束,表示所安排的運輸貨物數(shù)量不能超過在網(wǎng)絡(luò)中邊上所使用運輸工具的最大運載能力。約束(3)~(4)和(9)~(10)表示運輸訂單在運輸網(wǎng)絡(luò)中沒有運輸回路。約束(5)確保運輸網(wǎng)絡(luò)的連通性。約束(6)表示貨物到達(dá)時間必須早于所采用的運輸方式的服務(wù)關(guān)閉時間。約束(7)~(8)為訂單時間窗約束,運輸訂單必須在允許的最早出發(fā)時間之后從起點出發(fā),并且在允許的最晚到達(dá)時間之前到達(dá)終點。約束(11)表示對于每個運輸訂單來說,貨物最多只能到達(dá)網(wǎng)絡(luò)中的節(jié)點一次。約束(12)表示當(dāng)運輸訂單在運輸網(wǎng)絡(luò)中發(fā)生運輸工具的轉(zhuǎn)換時決策變量xijk與決策變量ωiv之間的關(guān)系。約束(13),(14)和(15)表示決策變量xijk、yjk和ωiv的取值范圍。
在多式聯(lián)運網(wǎng)絡(luò)中各種運輸方式的樞紐點分布在城市的不同位置。當(dāng)貨物在城市內(nèi)發(fā)生運輸方式轉(zhuǎn)變時,會產(chǎn)生一系列由貨物運輸、裝載和卸載操作帶來的轉(zhuǎn)運成本。貨物在城市內(nèi)的樞紐間轉(zhuǎn)運過程描述如圖1所示。
圖1 貨物在樞紐間的轉(zhuǎn)運過程
貨物從城市B的樞紐1運輸?shù)匠鞘蠦的樞紐2的每一種操作的成本都和貨物的運輸數(shù)量相關(guān),為了簡化所構(gòu)建的模型,可將樞紐1到樞紐2的裝卸成本折算為城市內(nèi)的運輸成本。那么在城市B內(nèi),運輸樞紐間的轉(zhuǎn)運成本就轉(zhuǎn)化為了樞紐間路徑上的運輸成本。
那么在1.1所構(gòu)建的模型目標(biāo)函數(shù)可以轉(zhuǎn)化為:
(16)
約束為(2)~(11)、(13)和(14)。
通過模型轉(zhuǎn)化,與運輸網(wǎng)絡(luò)中節(jié)點選擇相關(guān)的決策變量轉(zhuǎn)化成了僅和邊選擇相關(guān)的決策變量,降低了計算的難度。轉(zhuǎn)化后的模型仍然屬于NP難問題。當(dāng)問題的規(guī)模較小時,可以利用商業(yè)軟件CPLEX精確求解。當(dāng)問題規(guī)模較大時,精確算法無法求出最優(yōu)解,此時啟發(fā)式算法往往能夠得出滿意的近似解。基于此,本文開發(fā)了一種可以快速求出該問題近似最優(yōu)解的列生成啟發(fā)式算法。
基于列生成的啟發(fā)式算法框架如圖2所示,在2.1為每個運輸訂單規(guī)劃一條可行路徑,構(gòu)建初可行列(解);在2.2利用Dantzig-Wolfe分解方法對原混合整數(shù)規(guī)劃問題進行重新建模并生成限制性主問題;子問題的構(gòu)建和求解在2.3進行分析;在2.4通過變量轉(zhuǎn)換構(gòu)建原混合整數(shù)規(guī)劃問題的近似最優(yōu)解。
為了給每個運輸訂單規(guī)劃初始可行路徑,開發(fā)了一個啟發(fā)式算法,其詳細(xì)步驟如下:
Step1松弛原混合整數(shù)規(guī)劃模型的決策變量xijk和yjk為連續(xù)變量并求解松弛后的原混合整數(shù)規(guī)劃模型。將所有xijk取值為正的定義為1,剩余xijk取值為非正的都定義為0。
圖2 基于列生成的啟發(fā)式算法框架
Step2在Step1中被定義為0的決策變量xijk集合中,為每一個運輸訂單規(guī)劃可行路徑。規(guī)劃可行路徑的方法有兩種,第一種:在被定義為0的決策變量xijk集合中,為每個運輸訂單規(guī)劃一條從起點到終點只經(jīng)過一個中間節(jié)點并且滿足容量及時間窗約束的可行路徑;第二種:在被定義為0的決策變量xijk集合中,為每個運輸訂單規(guī)劃一條從起點到終點只經(jīng)過兩個中間節(jié)點并且滿足容量及時間窗約束的可行路徑。通過以上兩種方法,為每個運輸訂單規(guī)劃了一條經(jīng)過一個或兩個中間節(jié)點的可行路徑。然后,將規(guī)劃出的可行路徑對應(yīng)的決策變量xijk定義為1。
Step3調(diào)用CPLEX軟件求解小規(guī)模的原混合整數(shù)規(guī)劃問題,小規(guī)模的原混合整數(shù)規(guī)劃問題與原混合整數(shù)規(guī)劃問題的模型一樣,不同之處在于小規(guī)模原混合整數(shù)規(guī)劃問題中,將被定義為1以外的決策變量xijk都限制為0。這樣,在CPLEX求解的過程中,只需要在決策變量xijk被定義為1的解空間中尋找可行路徑。和原混合整數(shù)規(guī)劃問題相比,小規(guī)模原混合整數(shù)規(guī)劃問題的求解難度極大降低,CPLEX軟件可以快速求出最優(yōu)解解。
Step4由于小規(guī)模原混合整數(shù)規(guī)劃問題的最優(yōu)解可以為每個運輸訂單提供可行路徑,而每個運輸訂單的可行路徑對應(yīng)列生成算法主問題的列。為此,輸出小規(guī)模原混合整數(shù)規(guī)劃問題的最優(yōu)解并將最優(yōu)解設(shè)置為列生成算法主問題的初始列。
在給定的多式聯(lián)運網(wǎng)絡(luò)中,假設(shè)對于每個運輸訂單i,可以枚舉出所有的可行路徑,定義以下參數(shù)和決策變量:
1)參數(shù)
令air:表示第i的運輸訂單被第r條路徑服務(wù)時等于1,否則等于0,其中i∈R。同樣令bjkr:表示第r條可行路徑經(jīng)過了第j條邊并使用了第k種運輸方式時等于1,否則等于0。那么通過air和bjkr可以定義每一條可行路徑(列)。對于一條給定的可行路徑,air和bjkr是確定的。令Cr表示第r條可行路徑的路徑成本。
2)決策變量:
ξr:表示第r條可行路徑被使用時為1,否則為0;yjk和原混合整數(shù)規(guī)劃模型含義相同。那么原混合整數(shù)規(guī)劃模型重新定義為:
(17)
式(17)為目標(biāo)函數(shù),要求總的運輸成本之和最小,包括兩個部分:路徑成本和固定運輸成本;式(18)表示每個運輸訂單都有一個可行的路徑;式(19)為容量約束,表示所安排的運輸貨物數(shù)量不能超過在網(wǎng)絡(luò)中邊上所使用運輸工具的最大運載能力。式(20)表示決策變量ξr為0-1變量,式(21)表示決策變量yjk為整數(shù)變量。把式(20)和(21)表示的約束松弛為(22)和(23),那么得到松弛的線性規(guī)劃主問題。
0≤ξr≤1,?r
(22)
0≤yjk≤ncjk,?j∈E,?k=1,…,mj
(23)
由于松弛后的主問題的變量數(shù)目巨大,選擇其中部分變量(至少包含一個可行解)構(gòu)建一個限制主問題(Restricted Master problem,RMP),即作為列生成算法的限制主問題。
在2.1通過開發(fā)的啟發(fā)式算法為每個運輸訂單規(guī)劃了一條可行路徑,所有運輸訂單的可行路徑構(gòu)成了限制主問題的初始列。在初始解的基礎(chǔ)上調(diào)用CPLEX軟件求解該限制主問題。獲取相應(yīng)約束條件的對偶變量值并傳遞給子問題。
令πi和μjk表示為約束(18)和(19)對應(yīng)的對偶變量。令ωr表示為路徑r所對應(yīng)的檢驗數(shù)。那么ωr可表示為:
(24)
由于每個運輸訂單只能選擇一條可行路徑,那么如果第i個需求選擇了第r條路徑,則air=1,ap,r=0,其中i≠p。那么式(24)可以表示為:
(25)
對于每條可行路徑r,其路徑成本Cr又可表示為:
(26)
那么對于路徑r的檢驗數(shù)ωr可表示為:
(27)
在列生成算法中,子問題的設(shè)計是為了尋找滿足每個運輸訂單運輸需求且具有負(fù)檢驗數(shù)的“列”(可行路徑),那么子問題(SP)可以構(gòu)建為:
(28)
(38)
式(28)為目標(biāo)函數(shù),表示最小化檢驗數(shù)。約束(29)~(37)和約束(3)-(11)具有相同的含義。約束(38)表示決策變量bjkr為0-1變量。對于每個運輸訂單i,子問題以最小化檢驗數(shù)為目標(biāo)函數(shù),在給定的多式聯(lián)運網(wǎng)絡(luò)中為運輸訂單尋找一條運輸成本最小并符合運輸訂單時間窗要求的可行路徑r。子問題是一個最短路徑問題,可以利用動態(tài)規(guī)劃算法求解。
在限制主問題和子問題之間不斷地迭代的過程中,當(dāng)子問題無法生成具有負(fù)檢驗數(shù)的“列”時,原問題達(dá)到最優(yōu)。通過求解受限制的松弛主問題,得到原混合整數(shù)規(guī)劃問題的下界。此時決策變量ξr和yjk都是連續(xù)變量,將決策變量都轉(zhuǎn)換為整數(shù)變量并求解此時的限制主問題,可以得到原混合整數(shù)規(guī)劃問題的近似最優(yōu)解。
3.1部分對算例的生成方法和參數(shù)的設(shè)置進行描述。算例的測試結(jié)果在3.2部分進行分析。
根據(jù)多式聯(lián)運網(wǎng)絡(luò)中節(jié)點數(shù)量和運輸訂單數(shù)量的不同生成大量不同規(guī)模的隨機算例。和Fazayeli[9]的研究類似,網(wǎng)絡(luò)中的節(jié)點數(shù)量設(shè)置為10個和20個,運輸訂單的數(shù)量從10到200個之間變化。根據(jù)運輸訂單數(shù)量分為小規(guī)模和中等或大規(guī)模算例。小規(guī)模算例為10或20個節(jié)點,訂單數(shù)量分別為10、20個,每種規(guī)模的訂單生成20個算例;中等或大規(guī)模算例為10或20個節(jié)點,訂單數(shù)量分別為50,、100和200個,每種訂單規(guī)模生成20個算例,共計200個算例。
在多式聯(lián)運網(wǎng)絡(luò)中,存在3種運輸方式:公路運輸、鐵路運輸和航空運輸。和這三種運輸方式對應(yīng)的運輸工具分別是:全貨機、卡車和火車。三種運輸工具的運輸容量分別是15噸,22.4噸和44.8噸,其中火車的運輸容量是指一個車皮的容量。三種運輸工具的固定運輸成本分別是966元、483元和322元,可變成本分別是2.9元/噸·公里、2.1元/噸·公里和1.4元/噸·公里。
由于客戶運輸訂單信息的隱私性,隨機生成客戶運輸訂單,運輸訂單的起點和終點在多式聯(lián)運網(wǎng)絡(luò)中隨機分布。由于多式聯(lián)運網(wǎng)絡(luò)中運輸工具的最大容量為44.8,運輸訂單的運輸量在區(qū)間[1,44.8]內(nèi)隨機生成。運輸訂單的最早出發(fā)時間在區(qū)間[1,24]隨機分布。為了每個運輸訂單的需求都被滿足,在多式聯(lián)運網(wǎng)絡(luò)中,為每個運輸訂單都規(guī)劃一條可行路徑。運輸訂單所要求的最晚到達(dá)時間根據(jù)所規(guī)劃的可行路徑計算得出。對于在所規(guī)劃運輸訂單可行路徑上邊的運輸工具服務(wù)關(guān)閉時間,設(shè)置為運輸訂單到達(dá)該邊起點的最晚時間。剩余未在運輸訂單可行路徑上的運輸工具服務(wù)關(guān)閉時間在區(qū)間[24,1000]隨機生成。對于小規(guī)模算例來說,每個邊上可提供的某種運輸工具的最大數(shù)量在區(qū)間[5,15]隨機生成;對于中等或大規(guī)模算例來說,每個邊上可提供的某種運輸工具的最大數(shù)量在區(qū)間[10,20]隨機生成。
對于小規(guī)模的算例,CPLEX軟件可以直接求出精確解,可以利用精確解來評估所開發(fā)的列生成啟發(fā)式算法。小規(guī)模算例的求解結(jié)果如表1所示。在表1中,“Opt”表示通過CPLEX求解得出的最優(yōu)解目標(biāo)函數(shù)值,“T1”表示得到最優(yōu)解所花費的計算時間(單位/秒)。“LB”表示通過列生成啟發(fā)式算法計算出的原混合整數(shù)規(guī)劃問題的下界,“T2”表示得到下界所花費的計算時間(單位/秒)?!癠B” 表示通過列生成啟發(fā)式算法計算得出的原混合整數(shù)規(guī)劃問題的近似最優(yōu)解目標(biāo)函數(shù)值,“T3”表示得到近似最優(yōu)解所花費的計算時間(單位/秒)。“GAP1”表示精確解與列生成啟發(fā)式算法求解的原混合整數(shù)規(guī)劃問題下界之間的差異。“GAP2”表示列生成啟發(fā)式算法求解的原混合整數(shù)規(guī)劃問題近似最優(yōu)解與精確解之間的差異。
在表1中,GAP1的平均值為2.80%,GAP2的平均值為0.28%,通過列生成啟發(fā)式算法求解得出的原混合整數(shù)規(guī)劃問題下界和近似最優(yōu)解目標(biāo)函數(shù)值十分接近精確解。這說明對于小規(guī)模算例來說,列生成啟發(fā)式算法可以為原混合整數(shù)規(guī)劃問題提供高質(zhì)量的下界和近似最優(yōu)解。T1的平均值為19.25秒,T2的平均值為7.98秒,T3的平均值為8.37。對于小規(guī)模算例來說,精確求解需要花費平均19.25秒,而通過列生成啟發(fā)式算法可以在10秒內(nèi)為原混合整數(shù)規(guī)劃問題計算出高質(zhì)量的下界與近似最優(yōu)解。小規(guī)模算例的測試結(jié)果表明,所開發(fā)的列生成啟發(fā)式算法性能優(yōu)越。
表1 小規(guī)模算例的求解結(jié)果
精確求解隨著算例規(guī)模的增大,求解時間呈指數(shù)形式增長。對于中等或大規(guī)模算例來說,大多數(shù)算例在短時間內(nèi)無法求出精確解。那么可以通過列生成啟發(fā)式算法求解得出的下界來評估啟發(fā)式算法得出的近似最優(yōu)解。為此,本文設(shè)置7200秒為求解時間閾值,超過設(shè)定時間閾值的結(jié)算結(jié)果不在統(tǒng)計范圍之內(nèi)。表2為中等或大規(guī)模算例的計算結(jié)果?!癎AP3”表示列生成啟發(fā)式算法求解的原混合整數(shù)規(guī)劃問題近似最優(yōu)解目標(biāo)函數(shù)值與下界之間的差異。
在表2中,可以看出,在設(shè)定的求解時間閾值范圍內(nèi),中等或大規(guī)模算例利用CPLEX精確求解只能求出部分算例。當(dāng)精確解無法求出時,可以利用所開發(fā)的列生成啟發(fā)式算法求解問題近似最優(yōu)解。GAP3的平均值為0.64%,表明所開發(fā)的列生成啟發(fā)式算法求出的近似最優(yōu)解與下界之間差異很小。T2的平均值為211.32秒,T3的平均值為501.87秒。相對于用CPLEX精確求解來說,所開發(fā)的列生成啟發(fā)式算法求解效率較高。
表2 中等或大規(guī)模算例計算結(jié)果
文章提出一種考慮訂單合并和貨物轉(zhuǎn)運的多式聯(lián)運路徑優(yōu)化問題,在給定的多式聯(lián)運網(wǎng)絡(luò)中,運輸工具容量和可提供運輸工具的最大數(shù)量有限,以總的運輸成本(固定運輸成本、可變運輸成本和轉(zhuǎn)運成本)最小化為目標(biāo),將一組具有不同起終點的運輸訂單,在滿足訂單時間窗要求的情況下,將貨物從各自的起點運往終點。為了獲得運輸?shù)囊?guī)模經(jīng)濟效應(yīng),將訂單進行合并運輸。針對該問題,構(gòu)建了混合整數(shù)規(guī)劃模型并根據(jù)問題性質(zhì)轉(zhuǎn)化模型。為了快速求解模型,開發(fā)了一種基于列生成的啟發(fā)式算法。通過大量算例測試,結(jié)果表明所開發(fā)的列生成啟發(fā)式算法在很短的時間內(nèi)為原混合整數(shù)規(guī)劃模型提供了高質(zhì)量的近似最優(yōu)解。對于在某個時刻面對大量運輸訂單的零擔(dān)物流企業(yè),該啟發(fā)式算法能夠在較短的時間內(nèi)為企業(yè)提供高質(zhì)量的近似最優(yōu)解、提高企業(yè)決策效率和節(jié)省運輸成本。
本文研究仍然有不足之處,研究問題僅以總運輸成本為最小化目標(biāo)。在物流運輸過程中,時間也是重要的因素。在未來的研究中,可以考慮以運輸成本最小化和運輸時間最小化的雙目標(biāo)優(yōu)化問題。