基于改進(jìn)粒子群算法的多路徑規(guī)劃方法
【專利摘要】本發(fā)明公開一種基于改進(jìn)粒子群算法的多路徑規(guī)劃方法,在解決單路徑規(guī)劃中對粒子群算法做的改進(jìn)的基礎(chǔ)上,融合貪心算法、遺傳算法和模擬退火算法的思想,使用貪心算法初始化粒子群算法,并且加入一種良好的變異算子與模擬退火思想。將算出來的路徑看成首尾相連的環(huán)狀,對于出發(fā)城市相同的多路徑問題,要計(jì)算N條路徑,就增加N個與出發(fā)城市位置相同的虛擬城市,路徑中只要遇到虛擬城市就代表回到出發(fā)城市,這樣將環(huán)分割成N條路徑;對于出發(fā)城市不相同的多路徑問題,則不用增加虛擬城市,所有的出發(fā)城市就起到了虛擬城市的作用。此多路徑計(jì)算方法比原來的更簡單且更具有通用性。
【專利說明】基于改進(jìn)粒子群算法的多路徑規(guī)劃方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種基于改進(jìn)粒子群算法的多路徑規(guī)劃方法。
【背景技術(shù)】
[0002] 多路徑規(guī)劃問題,即多旅行商問題是經(jīng)典旅行商問題的一種泛化,加上某些特定 的附加條件,則能夠演化成一些較現(xiàn)實(shí)的問題,因而具有較高的理論研究和應(yīng)用價(jià)值。在多 旅行商問題中,一個任務(wù)由多位旅行商共同完成,其問題的求解難度較經(jīng)典旅行商問題更 大,用于經(jīng)典旅行商問題求解的方法或策略不能簡單地應(yīng)用于多旅行商問題的求解,有關(guān) 該問題的研究成果遠(yuǎn)比經(jīng)典旅行商問題少,現(xiàn)有計(jì)算多路徑的方法是通過增加虛擬城市, 將所有城市隔開,轉(zhuǎn)化為單路徑來計(jì)算。轉(zhuǎn)化之后的單路徑問題有許多限制條件,算法復(fù)雜 并且效率低下,而且不能解決有多個出發(fā)城市的多旅行商問題,而實(shí)際中的路徑規(guī)劃通常 出發(fā)點(diǎn)都不只一個。
[0003] 粒子群算法,也稱粒子群優(yōu)化算法(Particle Swarm Optimization, PS0),是近年 來發(fā)展起來的一種新的進(jìn)化算法(Evolutionary Algorithm-EA),是解決多路徑規(guī)劃問題 的有效方法之一。PS0算法屬于進(jìn)化算法的一種,從隨機(jī)解出發(fā),通過迭代尋找最優(yōu)解,它是 通過適應(yīng)度來評價(jià)解的品質(zhì),通過追隨當(dāng)前搜索到的最優(yōu)值來尋找全局最優(yōu)。這種算法具 有實(shí)現(xiàn)容易、精度高、收斂快等優(yōu)點(diǎn),但也仍有容易陷入局部最優(yōu)解導(dǎo)致"早熟"的缺點(diǎn)。
【發(fā)明內(nèi)容】
[0004] 發(fā)明目的:針對現(xiàn)有的多路徑規(guī)劃問題計(jì)算方法的不足,本發(fā)明提供一種基于改 進(jìn)粒子群算法的多路徑規(guī)劃方法,在前人對粒子群算法做出的改進(jìn)的基礎(chǔ)上做了進(jìn)一步的 改進(jìn),有效的跳出局部最優(yōu)解,避免"早熟",克服了粒子群算法本身的缺點(diǎn),用于解決路徑 規(guī)劃問題取得了良好的效果。
[0005] 技術(shù)方案:一種基于改進(jìn)粒子群算法的多路徑規(guī)劃方法,首先根據(jù)實(shí)際需求,對城 市數(shù)據(jù)進(jìn)行預(yù)處理。分如下兩種情況:
[0006] a對于只有一個出發(fā)城市的多路徑問題,如果要計(jì)算出首發(fā)相連的N條路徑,這N 條路徑除了出發(fā)城市相同外其余經(jīng)過的城市各不相同,但覆蓋所有城市,則需增加 N個與 出發(fā)城市位置相同的虛擬城市。
[0007] b對于出發(fā)城市互不相同的多路徑問題,則不需要進(jìn)行預(yù)處理。
[0008] 然后使用上述求解旅行商問題的算法計(jì)算出一條城市序列X=(Xl,x2,···
【權(quán)利要求】
1. 一種基于改進(jìn)粒子群算法的多路徑規(guī)劃方法,其特征在于,包括如下步驟: (1) 利用貪心算法初始化粒子群,利用貪心算法,從每一個城市出發(fā),選擇與當(dāng)前城市 距離最近的城市作為下一個城市,遍歷所有城市,得到N個初始的城市序列; (2) 如果達(dá)到最大迭代次數(shù)轉(zhuǎn)到步驟(5),如不滿足則對種群進(jìn)行更新,找到個體最好 位置Pibest,以及全局最好位置Gbe;st ; (3) 更新所有粒子的位置;
慣性分量 個體極值 更新粒子位置 全局極值 更新粒子位置 Xi (K+l)=c3variation(Xtemp)位置變異,解開路徑中有交叉部分 Vi(K+l)=Xi(K+l)-Xi(k); 計(jì)算粒子速度 (4) 采用模擬退火降溫方法選擇接受的粒子位置,以避免陷入局部最優(yōu)解;初始溫度設(shè) 為最大迭代次數(shù)的三分之一,退火接受變壞解的概率設(shè)為溫度與最大迭代次數(shù)的比值,退 火系數(shù)取0. 99 ;迭代次數(shù)加一,轉(zhuǎn)到步驟(2); (5) 輸出最優(yōu)城市序列,并輸出最短距離; (6) 根據(jù)實(shí)際需求,對城市數(shù)據(jù)進(jìn)行預(yù)處理;分如下兩種情況: a對于只有一個出發(fā)城市的多路徑問題,如果要計(jì)算出首發(fā)相連的N條路徑,這N條路 徑除了出發(fā)城市相同外其余經(jīng)過的城市各不相同,但覆蓋所有城市,則需增加 N個與出發(fā) 城市位置相同的虛擬城市; b對于出發(fā)城市互不相同的多路徑問題,則不需要進(jìn)行預(yù)處理; (7) 使用上述求解旅行商問題的算法計(jì)算出一條城市序列乂=(11,12,一,11,1#1』,? ,x k,xv2, Xl,…,xn);假設(shè)需要計(jì)算兩條路徑,其中xvl和xv2代表兩個虛擬城市或者出發(fā)城市; (8) 將算出來的城市序列看成首尾相連的環(huán)狀;城市序列中只要遇到虛擬城市或者 出發(fā)城市就代表回到上一個出發(fā)城市,這樣將環(huán)分割成多條路徑,&=0^, Xj,…,xk,χν1), Xl=(Xv2, Χ1,…,Χη,Χ1,X2,…,X" Xv2),得到最終需要的多條路徑。
【文檔編號】G06Q10/04GK104063745SQ201410162014
【公開日】2014年9月24日 申請日期:2014年4月21日 優(yōu)先權(quán)日:2014年4月21日
【發(fā)明者】張雪潔, 嚴(yán)祥光, 周文歡, 蔣悅達(dá) 申請人:河海大學(xué)