• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      解決需求可拆分車輛路徑問題的先聚類后路徑方法

      2018-11-26 01:59:10閔嘉寧陸俐君
      制造業(yè)自動化 2018年11期
      關(guān)鍵詞:載重量實例聚類

      閔嘉寧,金 成,陸俐君

      (1.無錫太湖學院,無錫 214064;2.南京大學 管理學院,南京 210093)

      0 引言

      需求可拆分車輛路徑問題SDVRP(Split Delivery Vehicle Routing Problem)松弛了經(jīng)典VRP中對每個客戶只能訪問一次的約束[2]。這種松弛使得一個客戶的需求可以由多輛車送貨,或由一輛車多次送貨;也就是說,當車輛的剩余容量不足以為某個客戶提供完整的送貨需求時,車輛仍然可以向該客戶提供與車輛剩余容量相等的送貨,而客戶的剩余需求可以由其他車輛(或此輛車的下一次)提供送貨。這樣可以充分利用車輛的容量,降低使用的車輛數(shù)、減少碳排放和行駛距離,進一步優(yōu)化車輛路徑問題。因此,SDVRP一經(jīng)提出,迅速成為VRP的一個重要分支,受到越來越多的關(guān)注[2]。

      國外關(guān)于算法的研究正式開始于1989年,Dror和Trudeau[1]提出了一種局部搜索算法,并驗證了當客戶點的送貨需求較大時,SDVRP的解決方案明顯優(yōu)于VRP。Belenguer等[3]為SDVRP構(gòu)建了多面體模型,基于切平面法設(shè)計了一種混合算法;他們解決了規(guī)模相對較小的問題,取得了良好的效果。Archetti等[4,5]提出了一種TSA算法和基于這個TSA的改進的三階段算法。Chen等[6]首先通過節(jié)約算法得到初始解,然后通過拆分客戶點的需求改進路徑。Jin等[7]提出了帶有效不等式的兩階段算法。Jin等[8]提出了基于列生成算法的SDVRP混合啟發(fā)式算法。Tan[9]設(shè)計了蟻群算法,實例驗證表明,隨著點需求/車輛容量的比例增加,需求分解的優(yōu)勢也隨之增大。Gulczynski等[10]提出限制最小拆分需求量,開發(fā)了一個端點混合整數(shù)算法、通過一種增強的記錄到記錄的旅行算法進行求解。Aleman等[11,12]提出了自適應(yīng)記憶算法和變量鄰域TSA算法,并驗證了后者優(yōu)于前者。Archetti等[13]提出了列生成的精確算法,先把問題域分割成較小的子域,然后在子域中優(yōu)化路徑,試圖縮小精確算法和啟發(fā)式算法獲得的最優(yōu)解的差距。Wilck IV等[14]開發(fā)了一種SDVRP求解的構(gòu)造啟發(fā)式算法,計算結(jié)果表明,在行駛距離和計算速度方面性能優(yōu)于列生成方法和兩階段法。

      國內(nèi)研究開始的比較晚,但是近年來關(guān)注度逐年提高。2006年謝毅[15]設(shè)計了一個用于求解SDVRP問題的禁忌搜索算法(TSA)和一個遺傳算法(GA),案例分析表明,TSA在最優(yōu)解和時間消耗方面優(yōu)于GA。侯立文[16]采用了具有改進轉(zhuǎn)移概率的最大-最小螞蟻系統(tǒng),設(shè)計了求解過程和分割點選取規(guī)則。孟凡超等[17]研究了TSA來解決這個問題。謝秉磊等[18]提出了蟻群算法。劉旺盛等[19,20]提出了k-means聚類算法,并設(shè)計了兩種不同的算法:一種是先分組后路徑;另一種方法是先路徑后分組,比較表明,先分組后路徑的方法有更好的性能。馬華偉[21]建立了多時間窗的SDVRP數(shù)學模型,設(shè)計了一種改進的蟻群算法求解問題。汪婷婷[22]提出了基于反應(yīng)閾值和求解刺激值的SDVRP問題的蜜蜂群體優(yōu)化模型。向婷等[23]提出了一種“分組而后路徑”的聚類算法:根據(jù)最近原則分組,通過設(shè)定分割閾值來限制車輛的負載達到一定的范圍,并且使用蟻群優(yōu)化算法來安排路線。

      本研究領(lǐng)域中使用的大多數(shù)算法是啟發(fā)式和元啟發(fā)式方法,為了找到最優(yōu)解,需要多次迭代和結(jié)果比較而后取優(yōu),雖然可以獲得較優(yōu)的行駛距離,但是計算過程非常耗費時間。為了解決這個問題,本文提出了一個 “先聚類后路徑”算法:首先,根據(jù)最近原則對客戶點按距離進行聚類;然后,采用“推出”和“拉入”操作,通過對客戶的需求拆分,調(diào)整每個聚類的負載需求,在沒有迭代的情況下獲得最佳的重量平衡的聚類組;最后,采用禁忌搜索方法對聚類組中的路徑進行優(yōu)化。這樣,可以在較短的時間內(nèi)獲得近優(yōu)解。該算法將在減少計算時間和獲得較優(yōu)的行駛距離方面更具實用價值。

      1 數(shù)學模型

      式(2)描述了每個客戶點至少被訪問一次;式(3)是流守恒約束;式(4)是子路徑消除約束;式(5)描述了只有當車輛v訪問客戶i時,車輛v才服務(wù)客戶i;式(6)保證了滿足所有客戶需求;式(7)保證每輛車不超載;式(8)描述了當車輛v從i直接到j(luò)時,=1;否則,=0;式(9)描述了yiv是車輛v為點i 送貨的重量。

      2 CRTS算法描述

      該算法是一種基于先聚類后路徑策略的三階段算法CRTS(The Clustering first Routing later based Three Stage Algorithm)。第一階段——對客戶進行分組:根據(jù)其地理位置,采用最大最小距離聚類方法對客戶點進行分組。第二階段——調(diào)整每組的重量:采用“推出”和“拉入”操作,根據(jù)每個點的負載需求調(diào)整各組的重量,確定每個組的客戶點。“推出”是將一個組的額外重量推給那些重量小于Q的鄰組;“拉入”是從重量超過Q的鄰組中提取重量到重量小于Q的組中。第三階段——優(yōu)化組內(nèi)路徑:采用搜索算法優(yōu)化組內(nèi)路徑。該算法的具體過程如下。

      2.1 前期處理

      對負載需求di>Q(i=1,2,…,n) 的客戶點單獨處理。di=Q的負載需求由一輛車進行送貨,該點剩余的重量(di=di-Q)(i=1,2,…,n)以及其他的點di<Q進入CRTS算法。

      2.2 對客戶分組

      1)最大最小距離聚類算法的基本思想

      最大最小距離聚類方法是一種模式識別方法。首先,按照最遠距離原則,選擇相距最遠的點作為聚類中心,以提高初始數(shù)據(jù)集的分割效率[24]。然后,根據(jù)最近距離原則,將所有距離最近的點就近歸入聚類組。

      2)最大最小距離聚類的執(zhí)行過程

      Step1:令車場為x1作為第1聚類中心z1;

      Step2:計算各點i(i =1,2,…,n) 到z1的距離Di1;

      Step3:當Dk1=max{Di1},選取xk作為第2聚類中心z2;

      Step4:計算各點i(i=1,2,…,n)到z1和z2的距離Di1和Di2;

      Step6:假如z3存在,計算Dl=max{min(Di1, Di2, Di3)}(i=1,2,…,n),以及Dj>θ*D12,選取xj作為第4聚類中心z4;以此類推,直至Dj≤θ*D12;

      Step7:按照最小距離原則,劃分所有的點構(gòu)成組;終止運行。

      2.3 調(diào)整各組的負載重量

      客戶點聚類分組后,計算并調(diào)整各組的負載重量。

      1)“推出” 操作的執(zhí)行過程

      Step1:假如一個組的負載重量wg在 [α*Q, Q]之間,而且只有兩個點,那么這兩個點就形成一條路徑,其中α大于負載率小于1;假如有μ1個這樣的組,那么就有μ1條路徑;

      Step2:假如一個組的負載重量wg在[Q, 2*Q]之間,而且只有兩個點,那么基于Q、這兩個點就形成一條路徑,剩余的負載wg-Q轉(zhuǎn)入步驟4;假如有μ2個這樣的組,就形成了μ2條路徑;

      2)“拉入” 操作的執(zhí)行過程

      Step1:按順序訪問負載重量wg<Q的組(例如,組A);

      Step2:尋找距離A組中心點i最近的鄰組點t(例如,組B中的點t);

      Step3:如果點t的負載重量dt>(Q-wgA)且B組的負載重量wgB>Q,拆分點t成為t1和t2,移動dt2=Q-wgA到組A,保留dt1=dt-(Q-wgA);

      Step4:如果點t的負載重量dt=(Q-wgA)且B組的負載重量wgB>Q,移動(合并)點t(dt)進入組A;

      Step5:如果點t的負載重量dt<(Q-wgA),首先,移動(合并)點t(dt)進入組A;如果B組的負載重量wgB>Q,則在B組中搜索最近的點t',讓t<-t';如果wgB<Q,則在另一個相鄰的B'組中搜索最近的點t'',讓t<-t'';最后,進入步驟4;

      Step6:如果A組的負載重量wgA為[α*Q, Q],則結(jié)束對組A的處理;如果wgA< α*Q,則轉(zhuǎn)到步驟2;

      Step7:所有組訪問完畢,則終止 “拉入”過程;否則,重復“拉入”過程。

      2.4 優(yōu)化組內(nèi)路徑

      執(zhí)行完“調(diào)整各組的負載重量”后,問題域被劃分為幾個較小的子問題域——聚類組,因此可以采用許多成熟的搜索算法來進行組內(nèi)路徑優(yōu)化,獲得最優(yōu)解。本文采用禁忌搜索算法。限于篇幅,本文不討論這個問題。

      3 案例研究

      為了驗證CRTS算法的可行性和有效性,采用來自文獻[7,19,23]的案例,并與采用先聚類后路徑策略相應(yīng)的算法TSVI[7]、k-means聚類方法[19]、拆分閾值的聚類方法[23]以及掃描算法[25]進行比較。實驗是在Intel (R)核心處理器、8GB內(nèi)存的Windows 7 64位機器上實現(xiàn)的。

      3.1 案例組1

      案例組1來自文獻[7]。案例組1包含有三個實例(N7L1-N7L3),各實例的客戶數(shù)都是N=7,車輛最大載重量為1,車場坐標(0,0);實例中客戶點的位置以及各實例中22次執(zhí)行 (Q1-Q22) 的送貨需求分別見文獻。

      表1 CRTS與TSVI計算結(jié)果比較

      續(xù)(表1)

      表1比較了TSVI和CRTS算法的總行駛距離(Distance),計算所消耗的CPU時間s(T),以及CRTS與TSVI總行駛距離相比較的相對偏差百分率RDP (Relative Deviation Percentage):RDP=((DistanceCRTS-DistanceTSVI)/ DistanceTSVI)*100%。由于計算所消耗的CPU時間s很小,為節(jié)省顯示空間,表1中計算時間(T)一欄表示的數(shù)字是CPU時間s的100倍。加粗字體表示其RDP≤0.0%,粗斜體表示其0.0%<RDP<1.0%,涂灰的數(shù)字表示其RDP>5.0%。RDP≤0.0%和0.0%<RDP<1.0%的次數(shù)占總66次執(zhí)行的46.97%;涂灰的數(shù)字占總66次執(zhí)行的12.12%。

      案例組1三個實例執(zhí)行的總行駛距離結(jié)果如圖1所示,兩種不同算法曲線的吻合度很好,表明CRTS算法是可行的、有效的,尤其是計算所消耗的CPU時間s遠低于TSVI。

      圖1 案例組1三個實例的計算結(jié)果

      3.2 案例組2

      案例組2中四個實例來自文獻[19,23]。各實例的客戶數(shù),客戶總需求量,車輛最大裝載量,所需車輛數(shù)如表2所示。各實例的客戶位置、需求以及車場位置等基本信息見文獻。

      表2 案例組2各實例的基本信息

      表3 CRTS與K-means聚類算法、拆分閾值聚類算法和掃描算法計算結(jié)果比較

      圖2 案例組2四個實例的執(zhí)行結(jié)果

      表3比較了K-means聚類算法、拆分閾值聚類算法、掃描算法以及CRTS的總行駛距離(Distance),計算所消耗的CPU時間(T),以及CRTS分別與這些算法在總行駛距離和計算所消耗的CPU時間s比較的相對偏差百分率為RDP(Dis.)(RelativeDeviationPercentageforDistan ce)和RDP(T),RDP(Dis.)=((DistanceCRTS–Distance某算法)/Distance某算法)*100%,RDP(Dis.)=((TimeCRTS–Time某算法)/Time某算法)*100%。表3中CRTS的計算結(jié)果采用了加粗字體。CRTS分別與前3種算法比較的RDP(Dis.)和RDP(T)的值都是百分率;正值表示CRTS的值大,負值表示CRTS的值小,凡負值涂有灰色。

      表3顯示:1)從總行駛距離來看,N=15、N=20和N=50三個實例中拆分閾值聚類算法最低,分別比CRTS低0.815%、4.067%和4.39%;N=36實例的CRTS最低,比拆分閾值聚類算法低0.805%;2)從計算所消耗的CPU時間s來看,CRTS最低,N=15、N=20、N=36和N=50實例分別比拆分閾值聚類算法低27.82%、30.37%、20.40%和58.51%。圖2清晰表明:CRTS算法是可行的、有效的;圖2(a)的曲線顯示了N=20、N=36和N=50三個算例的總行駛距離的差別范圍比較小,可以取得較好的總行駛距離;圖2(b)顯示CRTS的計算所消耗的CPU時間s遠低于其他3種算法。

      4 結(jié)論

      本文介紹了SDVRP的數(shù)學模型,其目標函數(shù)是使用最低數(shù)量的車輛、通過安排合適的路線盡量減少總行駛距離。為了實現(xiàn)該目標,本文基于“先聚類后路徑”方法提出了三階段算法CRTS:第一階段,采用最大最小距離聚類的方法對客戶點域進行聚類,按照使用最小車輛數(shù)的原則將所有客戶點分成子域,形成聚類組;第二階段,采用“推出”和“拉入”操作,根據(jù)車輛最大負載重量Q值調(diào)整各組的負荷需求,獲得重量平衡的聚類組;第三階段,優(yōu)化各組的路徑,最小化總行程距離。兩個案例組7個實例70次運行結(jié)果表明,CRTS算法為SDVRP提供了可行、有效的解決方案。該算法在總行駛距離的路徑安排中可以取得較好的結(jié)果,尤其在計算時間方面,性能優(yōu)于本文選用的TSVI算法、k-means聚類方法、拆分閾值聚類方法以及掃描算法等。

      猜你喜歡
      載重量實例聚類
      帶貨物權(quán)重車輛路徑問題的研究現(xiàn)狀
      排隊論在減載移泊系統(tǒng)中的應(yīng)用
      基于DBSACN聚類算法的XML文檔聚類
      電子測試(2017年15期)2017-12-18 07:19:27
      乘客載重量對柴油公交車尾氣排放影響分析
      對新人教版初中物理教材的六點
      基于改進的遺傳算法的模糊聚類算法
      一種層次初始的聚類個數(shù)自適應(yīng)的聚類方法研究
      完形填空Ⅱ
      完形填空Ⅰ
      自適應(yīng)確定K-means算法的聚類數(shù):以遙感圖像聚類為例
      淳安县| 长治市| 白山市| 花莲县| 玉树县| 灵宝市| 奉节县| 宝丰县| 岳普湖县| 茂名市| 裕民县| 兴仁县| 宁波市| 临邑县| 兴化市| 驻马店市| 南川市| 兰坪| 兰考县| 东乌珠穆沁旗| 曲麻莱县| 平武县| 天气| 永德县| 遂宁市| 苏州市| 平和县| 伊春市| 界首市| 四会市| 安阳市| 彰武县| 延边| 万年县| 新余市| 小金县| 雅江县| 格尔木市| 色达县| 平遥县| 赤壁市|