專利名稱:一種車輛調度問題的粒子群優化方法
技術領域:
本發明涉及一種車輛調度問題的粒子群優化方法。
背景技術:
車輛調度是實施社會化物流的關鍵技術,優化車輛行駛路線,提升企業競爭力,降低企業成本,解決城市交通擁擠、能源短缺、大氣污染等問題,實現交通在效率、資源、環境和價值觀念各方面的內在統一,保證物流產業的可持續發展。但目前大多數企業所使用的車輛調度軟件更多意義上是一個管理軟件,缺少對資源的優化配置功能,還主要依靠具有豐富實踐經驗的管理人員和調度人員借助于會議、電話、報表等進行管理和調度的人工作業方式,顯然不能滿足快節奏的現代化生產和市場激烈競爭的需要。隨著計算機及計算機網絡引進企業,基于信息集成而發展起來的優化車輛調度正在興起。
VRP(Vehicle Routing Problem即車輛調度)問題一般定義為對一系列裝貨點和(或)卸貨點,組織適當的行車線路,使車輛有序地通過它們,在滿足一定的約束條件(如貨物需求量、發送量、交發貨時間、車輛容量限制、行駛里程限制、時間限制等)下,達到一定的目標(如路程最短、費用最少、時間盡量少、使用車輛數盡量少等)。
影響車輛調度問題的因素很多,正常情況下有道路的交通狀況,客戶的需求量,要求的到貨時間,車輛的載重,駕駛員的情況,行駛費用等,這些都是所謂的約束條件。有些約束條件是必須要滿足的,如客戶要求的到貨時間,車的載重等,而有些達到一定的滿意度即可,如行駛的費用等。這些約束在進行調度時可以作為確定性因素考慮。而對于道路的交通狀況,客戶需求的改變等非正常情況,都是事先不能預見的,在進行車輛調度時大都作為不確定性因素考慮。
車輛調度問題是非常復雜的問題。通常是多約束、多目標、隨機不確定優化問題。求解過程的計算量隨問題的規模呈指數增長,已被證明是NP完全問題。很多研究表明,尋找車輛調度問題的最優解是非常困難的,最有工程意義的求解算法是放棄尋找最優解的目標,轉而試圖在合理、有限的時間內尋找到一個近似的、有用的解。
現有的車輛調度方法中有人采用遺傳算法、粒子群算法、節約法以及掃描法等方法。其中,粒子群算法現有的編碼方式有實數編碼,二進制編碼,整數編碼。在求解車輛調度問題這類組合優化問題方面,使用整數編碼方式的優點是易于解碼,計算適應度方便,缺點是計算量比較大,計算結果比較差,粒子群易陷于局部極值點,早熟收斂的情況比較嚴重。使用整數編碼方式對粒子群算法本身的特點沒有發揮出來。當前使用實數編碼方案求解車輛調度問題,是使用一個2L維的向量表示有L個客戶的VRP問題。每個粒子的對應的2L維狀態分成2維,一維表示各客戶對應的車輛,令一維表示各客戶在對應車輛中的配送次序。此種表示方法表示的維數較高,且對每一維,在進行解碼時,都需要進行取整,排序,操作比較復雜,計算速度較慢,當出現非法解時,調整也比較困難。
發明內容為了克服已有的車輛調度方法的操作復雜、計算速度慢、調整困難的不足,本發明提供一種操作簡單、計算速度快、便于調整的車輛調度問題的粒子群優化方法。
本發明解決其技術問題所采用的技術方案是一種車輛調度問題的粒子群優化方法,所述的方法主要包括以下步驟(1)、從委托單中得到配送信息,所述的配送信息包括客戶名稱、客戶需求的貨物的總數量、總重量、總體積、卸貨地址、要求的到貨時間;(2)、從委運單得到的客戶名稱,從地址數據庫中查詢出客戶的地址信息,包括客戶的具體地址,客戶間的距離;
(3)、設定粒子群算法的參數,所述的參數包括種群規模、迭代次數,所述的種群規模表示初始配送方案的數量,迭代次數表示在眾多的配送方案空間中的搜索次數;(4)、將上述的配送信息、客戶的地址信息讀入粒子群算法中;(5)、根據客戶的數目,計算所需要的車輛數,對各個配送方案進行編碼,編碼方式采用基于實數向量的編碼方式對于有L個客戶的配送方案,使用L維的實數向量X表示粒子的狀態;對于向量的每一維,其整數部分表示所在的車輛,如整數部分相同的,表示在同一輛車中;小數部分表示在車輛中配送的次序,按照大小順序;(6)、使用解碼算法進行解碼(6.1)對于粒子的狀態的每一維,進行[X]操作;(6.2)根據[X]值進行分組,形成客戶分組;(6.3)在分組內,對粒子進行{X}操作;(6.4)根據{X}的大小進行排列,形成客戶的訪問順序;(7)、調整線路間和線路內的次序,及對生成的配送方案進行再優化;(8)、根據配送成本計算方案,計算訪問所有客戶的線路長度或者時間或訪問所有客戶的費用,粒子的適應度定義為成本的倒數;(9)、比較粒子的適應度,找出種群中適應度最高的粒子保存,同時每個粒子和自身以前計算的適應度比較,保存自身最好的適應度;(10)、對粒子所代表的配送方案進行調整,根據如下的公式(1)進行粒子狀態的更新Vit+1=c1Vit+c2(Pi,t-Xit)+c3(Pg,t-Xit)Xit+1=Xit+Vit+1---(1)]]>
上式中,Xi=(xi1,xi2,…xiD)表示第i個粒子的狀態,每個粒子表示D維空間的一個解,Vi=(vi1,vi2,…viD)表示每個粒子的速度向量,且Vi滿足Vi≤最大速度Vmax;Pi表示每個粒子經歷過的最優狀態,Pg表示群體經歷過的最優狀態,c1是慣性權重,c2,c3是加速度常數。粒子的狀態在具體的應用中代表不同的含義,在本發明的應用中,粒子的狀態表示車輛調度的配送方案,即客戶由那輛車配送,和客戶在配送中的順序。粒子的速度表示配送方案間的差異,即同一客戶所在車輛的不同,客戶在配送中的順序不同。
(11)、隨機的選擇一些粒子進行交叉操作,對各個粒子表示的配送方案進行調整;(12)、重復(6)~(11),對可能的配送方案進行搜索,達到預定的迭代次數后,輸出粒子群算法尋找到的配送方案。
進一步,所述的(7)中,使用節約法、最鄰近法或Or-Opt法調整線路間和線路內的次序。
本發明的工作原理是粒子群算法是由Kennedy和Eberhart等于1995年提出的一種演化計算技術。其核心思想是對生物社會性行為的模擬。其最初設想是模擬鳥群捕食的過程,在研究過程中,將其應用于各種問題的優化取得了良好效果。假設一群鳥在捕食,其中的一只發現了食物,則其他一些鳥會跟隨這只鳥飛向食物處,而令一些會去尋找更好的食物源。在捕食的整個過程中,鳥會利用自身的經驗和群體的信息來尋找食物。粒子群算法從鳥群的這種行為得到啟示,并將其用于優化問題的求解。在粒子群算法中,每個問題的解都被看作搜索空間中的一只鳥,我們稱為“粒子”。粒子的狀態好壞,用由被優化問題決定的適應值表示。每個粒子有一個速度表示粒子飛行的距離和方向。粒子追隨當前的最優粒子在解空間進行搜索。當求解一個問題的時候,將該問題采用一定的編碼方法編碼成粒子,然后按照粒子群算法的機理進行迭代運算。
求解車輛調度問題的可行性分析車輛調度問題是NP問題,采用傳統的方法求解,存在求解問題規模小,解的質量不高等問題。粒子群算法是一種新型的仿生智能優化算法。具有求解速度快,解的質量高等有點。粒子群在神經網絡優化,電氣參數設計優化等領域都取得了成功應用。在求解旅行商問題,任務分配問題等NP方面也取得了良好效果。
本發明提出一種基于實數向量的編碼方式,此方法區別于現有的編碼方法的關鍵在于在不增加維數的前提下,將車輛和車輛線路中的客戶排序在編碼表示出來。對于有L個客戶的VRP問題,使用L維的實數向量表示粒子的狀態。對于向量的每一維,其整數部分表示所在的車輛,整數部分相同的,表示在同一輛車中。小數部分表示在車輛中配送的次序。
本發明的有益效果主要表現在1、操作簡單;、2、便于調整;3、計算速度快。
圖1是車輛調度的粒子群優化方法的流程圖。
圖2是車輛調度的系統結構圖。
具體實施方式
下面結合附圖對本發明作進一步描述。
參照圖1,一種車輛調度問題的粒子群優化方法,包括以下步驟第一步從委運單得到配送信息。這些信息包括客戶名稱,客戶需求貨物的總數量,總重量,總體積,卸貨地址,要求的到貨時間,估計需要的卸貨時間。
第二步根據從委運單得到的客戶名稱,從數據庫中查詢出客戶的地址信息,包括客戶的具體地址,客戶間的距離(或者運行時間)。
第三步算法參數,粒子群算法的參數包括種群規模,此處代表有多少個初始配送方案。迭代次數,表示在眾多的配送方案空間中,不停的搜索,搜索的次數,根據客戶的數目,客戶越多,算法迭代的次數越多,種群規模越大。
第四步將上述所述的數據信息讀入算法中。
第五步根據客戶的數目,預估計的所需要的車輛數,按照本文設計的編碼方式進行編碼。所謂編碼,及將一個配送方案用粒子算法所能理解的方式表達出來。
基于實數向量的編碼方式,此方法區別于上述的方法的關鍵在于在不增加維數的前提下,將車輛和車輛線路中的客戶排序在編碼表示出來。對于有L個客戶的VRP問題,使用L維的實數向量表示粒子的狀態。對于向量的每一維,其整數部分表示所在的車輛,整數部分相同的,表示在同一輛車中。小數部分表示在車輛中配送的次序。
定義[X]表示對x取整數部分,{X}表示對X取小數部分,每個粒子整數部分相同的表示相應的客戶在一輛車上服務,小數部分的排列表示服務的順序。
解碼的過程(1)對于粒子的狀態的每一維,進行[X]操作。
(2)根據[X]值進行分組,形成客戶分組。
(3)在分組內,對粒子進行{X}操作。
(4)根據{X}的大小進行排列,形成客戶的訪問順序。
假設7個客戶的VRP問題,需要的車輛數為3,對于這個問題的,將配送方案采用此種編碼方式編碼,得到如下結果客戶編號 1 2 3 4 5 6 7X4.1 1.86 1.53 1.12 1.24 3.29 3.05這組編碼對應的解的路徑是第一條線路0-1-0第二條線路0-4-5-3-2-0第三條線路0-7-6-0這種表示方法,維數和客戶數目相當,進行粒子狀態更新操作簡單,能發揮粒子群算法的固有優點。
第六步根據上述解碼方法將粒子的狀態解碼為客戶的分組及排列,及車輛調度的方案。
第七步用Or-Opt,最鄰近法,節約法等方法調整線路間和線路內的次序,及對生成的配送方案進行再優化。
第八步然后根據配送成本計算方案,及可以是計算訪問所有客戶的線路長度或者時間,也可以是訪問所有客戶的費用等。粒子的適應度定義為成本的倒數。
第九步比較粒子的適應度,找出種群中適應度最高的粒子保存,同時每個粒子和自身以前計算的適應度比較,保存自身最好的適應度。此操作的目的是保存當前算法搜索到的最優配送方案及每個粒子搜索到的最優配送方案第十步根據上文提到的公式(10.1)進行粒子狀態的更新,此更新的過程,就是對粒子所代表的配送方案的調整過程。及讓所有粒子所代表的配送方案都向目前已知的最優的配送方案靠攏。
第十一步隨機的選擇一些粒子進行交叉操作,此操作表示,對各個粒子表示的配送方案進行調整。由此可以產生更優秀的配送方案。
第十二步重復第六步到十一步的過程,及對可能的配送方案進行搜索,達到預定的迭代次數,則從算法退出。
第十三步輸出粒子群算法尋找到的配送方案,以承運單的形式顯示。
參照圖2,應用本實施例的方法實現的車輛智能調度系統,主要包括基礎信息子系統、智能算法子系統。
所述的基礎子信息系統包括(1)、客戶的坐標信息此功能可以讓用戶添加、修改、查詢客戶的坐標,這些操作都是基于電子地圖,客戶可以通過鼠標點出客戶的位置,坐標數值可以自動修改,顯示。
(2)、客戶間的距離(時間)此功能提供客戶間距離(時間)的查詢、添加、修改。這些操作都是基于電子地圖的,方便用戶查看。
(3)、客戶配送的難易程度此功能提供客戶配送難易程度的查詢、添加、修改。難易程度用通俗的語言“難”、“易”等詞語表示,方便用戶使用。
(4)、算法的參數信息此功能提供各種算法參數的顯示,修改。
所述的智能算法子系統包括(1)、車輛最少調度優化的目標為此次派車任務需要得車輛最少,運行得線路最短(也可以是成本最少,油耗最少等目標,根據基礎信息中提供的信息的不同);該調度具有以下功能(1.1)、智能算法調度采用本發明的車輛調度方案進行車輛調度,顯示配送方案,為下一步生成委運單準備。調度的過程如圖1所示,方法的描述略。
(1.2)、生成承運單對滿意的調度結果生成承運單。承運單編號根據日期自動產生,承運單的信息可以查看,修改,刪除。
(1.3)、圖形化顯示采用圖形化方法顯示調度的結果。在地圖上會用不同顏色的線條表示不同的車配送的線路。地圖上會表示出配送客戶的位置和名稱。模擬小車會按照算法安排的線路訪問客戶。
(1.4)、收斂圖畫出算法此次計算的收斂圖,給用戶提供判斷此次運算結果是否優秀的一個準則。
(2)、準時到達調度準時到達排車的目標是首先是滿足客戶時間上的要求,及保證在客戶要求達到的時間內進行配送。其次是希望所用的車輛數最少,車輛行駛的距離最短(也可以是成本最少,油耗最少等目標,根據基礎信息中提供的信息的不同)。功能與上述(1)的車輛最少模型相同。
(3)、綜合智能算法排車此功能提供多種算法的綜合調度算法,每次調度結果給出四種排車方案,用戶可以根據需要選擇合適的方案。每種方案可以查看詳細,可以看圖形化演示結果。選中的方案可以生產承運單。功能與上述(1)的車輛最少模型相同。
權利要求
1.一種車輛調度問題的粒子群優化方法,所述的方法主要包括以下步驟(1)、從委托單中得到配送信息,所述的配送信息包括客戶名稱、客戶需求的貨物的總數量、總重量、總體積、卸貨地址、要求的到貨時間;(2)、從委運單得到的客戶名稱,從地址數據庫中查詢出客戶的地址信息,包括客戶的具體地址,客戶間的距離;(3)、設定粒子群算法的參數,所述的參數包括種群規模、迭代次數,所述的種群規模表示初始配送方案的數量,迭代次數表示在眾多的配送方案空間中的搜索次數;(4)、將上述的配送信息、客戶的地址信息讀入粒子群算法中;(5)、根據客戶的數目,計算所需要的車輛數,對各個配送方案進行編碼,編碼方式采用基于實數向量的編碼方式對于有L個客戶的配送方案,使用L維的實數向量X表示粒子的狀態;對于向量的每一維,其整數部分表示所在的車輛,如整數部分相同的,表示在同一輛車中;小數部分表示在車輛中配送的次序,按照大小順序;(6)、使用解碼算法進行解碼(6.1)對于粒子的狀態的每一維,進行[X]操作;(6.2)根據[X]值進行分組,形成客戶分組;(6.3)在分組內,對粒子進行{X}操作;(6.4)根據{X}的大小進行排列,形成客戶的訪問順序;(7)、調整線路間和線路內的次序,及對生成的配送方案進行再優化;(8)、根據配送成本計算方案,計算訪問所有客戶的線路長度或者時間或訪問所有客戶的費用,粒子的適應度定義為成本的倒數;(9)、比較粒子的適應度,找出種群中適應度最高的粒子保存,同時每個粒子和自身以前計算的適應度比較,保存自身最好的適應度;(10)、對粒子所代表的配送方案進行調整,根據如下的公式進行粒子狀態的更新,公式如下(1)Vit+1=c1Vit+c2(Pi,t-Xit)+c3(Pg,t-Xit)Xit+1=Xit+Vit+1---(1)]]>上式中,Xi=(xi1,xi2,…xiD)表示第i個粒子的狀態,每個粒子表示D維空間的一個解,Vi=(vi1,vi2,…viD)表示每個粒子的速度向量,且Vi滿足Vi≤最大速度Vmax;Pi表示每個粒子經歷過的最優狀態,Pg表示群體經歷過的最優狀態,c1是慣性權重,c2,c3是加速度常數;(11)、隨機的選擇一些粒子進行交叉操作,對各個粒子表示的配送方案進行調整;(12)、重復(6)~(11),對可能的配送方案進行搜索,達到預定的迭代次數后,輸出粒子群算法尋找到的配送方案。
2.如權利要求1所述的一種車輛調度問題的粒子群優化方法,其特征在于所述的(7)中,使用節約法調整線路間和線路內的次序。
3.如權利要求1所述的一種車輛調度問題的粒子群優化方法,其特征在于所述的(7)中,使用最鄰近法調整線路間和線路內的次序。
4.如權利要求1所述的一種車輛調度問題的粒子群優化方法,其特征在于所述的(7)中,使用Or-Opt法調整線路間和線路內的次序。
全文摘要
一種車輛調度問題的粒子群優化方法,通過對該車輛調度問題的一些預分析和預處理,簡化實際車輛路徑度問題求解。提出了實數編碼方式表示車輛調度問題的調度方案,用粒子群算法方法進行求解。對于有L個客戶的VRP問題,使用L維的實數向量表示粒子的狀態。對于向量的每一維,其整數部分表示所在的車輛,整數部分相同的,表示在同一輛車中。小數部分表示在車輛中配送的次序。本發明提供一種操作簡單、計算速度快、便于調整的車輛調度的智能優化方法。
文檔編號G06Q10/00GK1750028SQ20051006123
公開日2006年3月22日 申請日期2005年10月21日 優先權日2005年10月21日
發明者趙燕偉, 吳斌, 王萬良, 董紅召, 楊豐玉, 王景 申請人:浙江工業大學