本發明屬于計算機技術領域,尤其涉及一種車輛路徑問題的優化方法及裝置。
背景技術:
車輛路徑問題是np-hard組合優化問題,目前用于求解該類問題的算法主要有精確算法、傳統啟發式算法以及現代啟發式算法。其中,精確算法可以找到最優解,但只適用于規模較小的問題,隨著問題規模的增大以及計算機能力的限制,精確算法的求解效率降低,傳統啟發算法(例如掃描法、節約法和兩階段算法等)可以求解較大規模問題,提高問題的求解效率,但容易陷入局部最優,現代啟發式算法(例如粒子群算法、模擬退火算法、禁忌搜索算法和遺傳算法等)是現在使用最多的,可以求解大規模問題,通過規則提高了搜索效率,解的質量也優于傳統啟發式算法,但這些算法或多或存在收斂速度慢、容易陷入局部最優以及參數難調整的問題。
人工蜂群算法因為其結果簡單易實現、參數少以及性能好的特點,一經提出便受到了各界學者的關注,但現有的人工蜂群算法存在大部分進化算法都存在的缺點——收斂速度慢,通過現有的人工蜂群算法解決車輛路徑問題效率較低。
技術實現要素:
本發明的目的在于提供一種車輛路徑問題的優化方法及裝置,旨在解決由于現有技術無法提供一種車輛路徑問題優化的有效方法,導致車輛路徑問題優化效率較低的問題。
一方面,本發明提供了一種車輛路徑問題的優化方法,所述方法包括下述步驟:
根據車輛路徑問題的優化目標,生成所述優化目標的初始種群,計算所述初始種群中每個個體的適應度值;
確定所述初始種群中個體的鄰居范圍并搜索每個鄰居范圍內的最優個體,通過所述每個鄰居范圍內的最優個體引導雇傭蜂進行鄰域搜索,生成第一種群;
在所述第一種群中選取部分優秀個體,同歸根據預設的搜索公式以及公式使用概率,通過觀察蜂對所述部分優秀個體進行鄰域搜索,生成第二種群;
當所述第二種群中存在連續更新失敗次數達到預設更新閾值的失敗個體時,通過偵察蜂隨機生成用來替代所述失敗個體的新個體;
當個體評價次數超過預設最大評價次數時,將所述第二種群中的最優個體輸出為所述車輛路徑問題的最優路徑,否則將所述第二種群設置為所述初始種群,重新執行確定所述初始種群中個體的鄰居范圍的操作。
另一方面,本發明提供了一種車輛路徑問題的優化裝置,所述裝置包括:
初始化模塊,用于根據車輛路徑問題的優化目標,生成所述優化目標的初始種群,計算所述初始種群中每個個體的適應度值;
第一種群生成模塊,用于確定所述初始種群中個體的鄰居范圍并搜索每個鄰居范圍內的最優個體,通過每個鄰居范圍內的最優個體引導雇傭蜂進行鄰域搜索,生成第一種群;
第二種群生成模塊,用于在所述第一種群中選取部分優秀個體,通過根所述部分優秀個體和所述第一種群中的最優個體引導觀察蜂進行鄰域搜索,生成第二種群;
個體替換模塊,用于當所述第二種群中存在連續更新失敗次數達到預設更新閾值的失敗個體時,通過偵察蜂隨機生成用來替代所述失敗個體的新個體;以及
循環輸出模塊,用于當個體評價次數超過預設最大評價次數時,將所述第二種群中的最優個體輸出為所述車輛路徑問題的最優路徑,否則將所述第二種群設置為所述初始種群,重新執行確定所述初始種群中個體的鄰居范圍的操作。
本發明在生成車輛優化目標的初始種群后,建立初始種群中每個個體的鄰居范圍,通過每個鄰居范圍內的最優個體引導雇傭蜂對初始種群中的個體進行鄰域搜索,生成第一種群,從第一種群中選取部分優秀個體,通過部分優秀個體和第一種群中的最優個體引導觀察蜂進行鄰域搜索,生成第二種群,當第二種群中存在連續更新失敗次數達到預設更新閾值的失敗個體時,通過偵察蜂隨機生成用來替代失敗個體的新個體,當個體評價次數超過預設最大次數時,將第二種群中的最優個體輸出為車輛路徑問題的最優路徑,否則將第二種群設置為下一次迭代的初始種群,并重新執行確定初始種群中個體的鄰居范圍的操作,從而通過加強蜜蜂間的信息交流,使得雇傭蜂和觀察蜂的搜索不是盲目獨立的,有效地提高了人工蜂群算法的收斂速度和優化性能,進而有效地提高了車輛路徑問題的優化效率和優化效果。
附圖說明
圖1是本發明實施例一提供的車輛路徑問題的優化方法的實現流程圖;
圖2是本發明實施例一提供的通過雇傭蜂進行鄰域搜索的示例圖;
圖3是本發明實施例二提供的車輛路徑問題的優化裝置的結構示意圖;以及
圖4是本發明實施例二提供的車輛路徑問題的優化裝置的優化結構示意圖。
具體實施方式
為了使本發明的目的、技術方案及優點更加清楚明白,以下結合附圖及實施例,對本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發明,并不用于限定本發明。
以下結合具體實施例對本發明的具體實現進行詳細描述:
實施例一:
圖1示出了本發明實施例一提供的車輛路徑問題的優化方法的實現流程,為了便于說明,僅示出了與本發明實施例相關的部分,詳述如下:
在步驟s101中,根據車輛路徑問題的優化目標,生成優化目標的初始種群,計算初始種群中個體的適應度值。
本發明實施例適用于求解車輛路徑問題(vrp)的系統或平臺。根據車輛路徑問題的優化目標,例如路程最短、費用最少或者時間最短等優化目標,建立相應的數學模型,即優化模型。在建立好優化模型后,初始化相關參數和初始種群,其中,相關參數可包括種群個體數量、最大評價次數、個體連續更新失敗的最大次數(更新閾值)、個體評價次數以及記錄所有個體連續更新失敗次數的集合等。
在本發明實施例中,可根據人工蜂群算法中的種群初始化公式,生成一組多維隨機值,第i個多維隨機值表示為xi=(xi,1,xi,2,…),i=1,2,...,sn,sn為種群個體數量,由于人工蜂群初始化得到的每個多維隨機值是一組連續的實數,而車輛行走的一條路徑為一列整數序列,因此需要對每個多維隨機值進行離散化,離散化后的多維隨機值為不同的整數序列。將離散化后的多維隨機值設置為初始種群中的個體,并根據構建的優化模型計算每個個體的適應度值(或目標函數值)。
具體地,人工蜂群中的種群初始化公式可表示為:
具體地,在對每個多維隨機值進行離散化時,可分別將每個多維隨機值中的分量進行排序,得到每個多維隨機值中每個分量的序列號,因此每個多維隨機值可對應一組序列號。例如,當一個多維隨機值為(0.3,0.5,0.8,0.1)時,離散化后該多維隨機值為(2,3,4,1),這些分量可依次表示路徑節點2、3、4、1。
在步驟s102中,確定初始種群中個體的鄰居范圍并搜索每個鄰居范圍內的最優個體,通過每個鄰居范圍內的最優個體引導雇傭蜂進行鄰域搜索,生成第一種群。
在本發明實施例中,為初始種群中每個個體建立一個鄰居范圍,一個鄰居范圍可認為是每只雇傭蜂的局部視野,根據每個鄰居范圍中個體的適應度值搜索出該鄰居范圍內的最優個體,再通過這些最優個體對雇傭蜂的鄰域搜索進行引導,使得雇傭蜂具有良好的方向性。鄰域搜索后得到初始種群中每個個體對應的新個體,為了便于區分,將這些新個體稱為第一新個體。將初始種群中每個個體與自身對應的第一新個體進行適應度值的比較,以對每個個體與對應的第一新個體間的優劣性進行評價,從而將每個個體與對應的第一新個體間的優秀個體保留下來,構成第一種群。其中,在雇傭蜂對一個個體進行一次鄰域搜索后,可對個體評價次數進行加一操作。
具體地,可根據初始種群中當前的個體與初始種群中其它個體間的距離平均值,建立該個體的鄰居范圍,具體地,當個體xi與個體xj的距離dij<r·mdi時,可認為個體xj是個體xi的鄰居,其中,r為預設參數,mdi為個體xi與初始種群中其它個體的距離平均值。
具體地,通過每個鄰居范圍內的最優個體引導雇傭蜂進行鄰域搜索的公式為:
vi,j=xi,j+rand0,1·(xnbest-xi,j),其中,vi,j為初始種群中第i個個體在鄰域搜索后得到第一新個體vi的第j維,xi,j為初始種群中第i個個體xi的第j維,xnbest為第i個個體的鄰居范圍內的最優個體。在鄰域搜索時,先確定當前個體變異的維度j,再通過鄰域搜索公式對當前個體維度j的分量(例如圖2中個體x的分量3)進行變異,得到變異后的分量(例如圖2中第一新個體xnew的分量6),查找變異后的分量在當前個體中的維度(例如圖2中個體x的分量6所在維度),將該維度的分量設置為當前個體維度j的分量。
在步驟s103中,在第一種群中選取部分優秀個體,通過部分優秀個體和第一種群中的最優個體引導觀察蜂進行鄰域搜索,生成第二種群。
在本發明實施例中,根據第一種群種個體的適應度值,在第一種群種按照預設的選取比例q選擇b=q·sn個優秀個體,為便于區分,將這些優秀個體統稱為部分優秀個體。將部分優秀個體的順序打亂,并根據預設公式使用概率pstr在部分優秀個體中選擇前floor(pstr·b)個個體作為第一部分個體,剩余的b-floor(pstr·b)個個體作為第二部分個體,并通過該部分優秀個體以及第一種群中的最優個體,引導雇傭蜂采用預設第一公式對第一部分個體進行鄰域搜索、預設第二公式對第二部分個體進行鄰域搜索,生成部分優秀個體中每個個體對應的新個體,為了便于區分,將這些新個體稱為第二新個體。根據部分優秀個體每個個體的適應度值和對應第二新個體的適應度值,保留部分優秀個體和對應的第二新個體之間的優秀個體,構成第二種群。從而通過在第一種群種選取部分優秀個體進行觀察蜂的鄰域搜索,有效地降低了通過觀察蜂的搜索、選擇壓力,提高了觀察蜂鄰域搜索的效率。其中,觀察蜂每對一個個體進行鄰域搜索后,可對個體評價次數進行加一操作。
具體地,第一公式為vi,j'=xpbest,j+φ·(xi,j-xk,j),第二公式為vi,j'=xbest,j+φ·(xpbest,j-xi,j),其中,xpbest為從部分優秀個體中隨機選取的一個個體,xk為從第二種群中隨機選取的不同于個體xi和個體xpbest的個體,xbest為第二種群中的最優個體,xi為部分優秀個體中的第i個個體,vi'為部分優秀個體中的第i個個體xi鄰域搜索后得到的第二新個體,φ為[-1,1]中的一個隨機實數。
優選地,當部分優秀個體中的個體比對應的第二新個體差時,計算該個體與對應的第二新個體間的適應度值差值(適應度值間的差值),當該個體的鄰域搜索是采用第一公式完成時,將該適應度值差值累加到第一公式的提升度上,否則將該適應度值差值累加到第二公式的提升度上,繼而根據第一公式的提升度和第二公式的提升度更新公式使用概率,從而有效提高通過觀察蜂進行的鄰域搜索的效果。具體地,根據第一公式的提升度和第二公式的提升度更新公式使用概率時,先計算第一公式和第二公式的平均提升度,當公式的平均提升度之和為0時,公式使用概率為0.5,否則,公式使用概率的公式為:
pstr=0.1+0.8·aid1/(aid1+aid2),
其中,aid1為第一公式的平均提升度,aid1=id1/floor(pstr·b),aid2為第二公式的平均提升度,aid2=id2/(b-floor(pstr·b)),id1為第一公式的提升度,id2為第二公式的提升度。
在本發明實施例中,可將選取比例的倒數值設置為在第一種群中選取部分優秀個體的次數閾值,每完成一次上述的部分優秀個體選取、觀察蜂鄰域搜索和公式使用概率更新,就對當前的選取次數進行加一操作,并判斷當前的選取次數是否超過次數閾值,當未超過時,將第二種群設置為第一種群,并跳轉至在第一種群中選取部分優秀個體的操作。
在步驟s104中,第二種群中是否存在連續更新失敗次數達到預設更新閾值的失敗個體。
在本發明實施例中,雇傭蜂的鄰域搜索和觀察蜂的鄰域搜索即分別對初始種群中個體進行更新和對第一種群中個體進行更新,當更新前的個體優于更新后的個體,可認為該個體此次更新失敗。當第二種群中存在連續更新失敗次數達到預設更新閾值的失敗個體時執行步驟s105,否則執行步驟s106。
在步驟s105中,通過偵察蜂隨機生成用來替代失敗個體的新個體。
在本發明實施例中,在偵察蜂階段,通過人工蜂群中的種群初始化公式生成一個多維隨機值,并對該多維隨機值進行離散化,得到一個新個體,用該新個體代替連續更新失敗次數達到預設更新閾值的失敗個體。其中,偵察蜂每更新一個個體后,可對個體評價次數進行加一操作。
在步驟s106中,個體評價次數是否超過預設最大評價次數。
在本發明實施例中,在初始化時,個體評價次數為0,每完成一次雇傭蜂階段、觀察蜂階段的鄰域搜索以及偵察蜂的個體更新,可對個體評價次數進行更新。當個體評價次數超過預設的最大評價次數時,認為車輛路徑問題的優化完成,執行步驟s108,否則執行步驟s107。
在步驟s107中,將第二種群設置為初始種群,重新執行確定初始種群中個體的鄰居范圍的操作。
在本發明實施例中,當個體評價次數未超過最大評價次數時,將第二種群設置為下次迭代過程的初始種群,循環執行雇傭蜂、觀察蜂的鄰域搜索以及偵察蜂的個體更新等操作。
在步驟s108中,將第二種群中的最優個體輸出為車輛路徑問題的最優路徑。
在本發明實施例中,當個體評價次數超過最大評價次數時,將第二種群中的最優個體作為車輛路徑問題的最優路徑輸出,完成對車輛路徑問題的優化。
在本發明實施例中,在雇傭蜂階段通過鄰居范圍內的最優個體引導雇傭蜂的鄰域搜索,加強了蜂群局部信息的交流,在觀察蜂階段通過部分優秀個體、整個種群中的最優個體引導觀察蜂的鄰域搜索,降低觀察蜂搜索負擔的同時加強了蜂群全局信息的交流,從而有效地提高了人工蜂群算法的收斂速度和優化性能,進一步有效地提高了車輛路徑問題的優化效率。
本領域普通技術人員可以理解實現上述實施例方法中的全部或部分步驟是可以通過程序來指令相關的硬件來完成,所述的程序可以存儲于一計算機可讀取存儲介質中,所述的存儲介質,如rom/ram、磁盤、光盤等。
實施例二:
圖3示出了本發明實施例二提供的車輛路徑問題的優化裝置的結構,為了便于說明,僅示出了與本發明實施例相關的部分,其中包括:
初始化模塊31,用于根據車輛路徑問題的優化目標,生成優化目標的初始種群,計算初始種群中個體的適應度值;
第一種群生成模塊32,用于確定初始種群中個體的鄰居范圍并搜索每個鄰居范圍內的最優個體,通過每個鄰居范圍內的最優個體引導雇傭蜂進行鄰域搜索,生成第一種群;
第二種群生成模塊33,用于在第一種群中選取部分優秀個體,通過部分優秀個體和第一種群中的最優個體引導觀察蜂進行鄰域搜索,生成第二種群;
個體替換模塊34,用于當第二種群中存在連續更新失敗次數達到預設更新閾值的失敗個體時,通過偵察蜂隨機生成用來替代失敗個體的新個體;
循環輸出模塊35,用于當個體評價次數超過預設最大評價次數時,將第二種群中的最優個體輸出為車輛路徑問題的最優路徑,否則將第二種群設置為初始種群,重新執行確定初始種群中個體的鄰居范圍的操作。
優選地,如圖4所示,初始化模塊31包括模型建立模塊411和種群生成模塊412,其中:
模型建立模塊411,用于根據車輛路徑問題的優化目標,建立相應的優化模型,初始化優化模型的相關參數;以及
種群初始化模塊412,用于種群生成模塊,用于根據人工蜂群的種群初始化公式生成一組多維的隨機值,離散化所有隨機值并將離散化后的隨機值設置為初始種群中的個體,根據優化模型計算初始種群中每個個體的適應度值。
優選地,第一種群生成模塊32包括鄰居確定模塊421鄰居搜索模塊422第一鄰域搜索模塊423和第一更新模塊424,其中:
鄰居確定模塊421,用于根據初始種群中每個個體間的距離,確定初始種群中每個個體的鄰居范圍;
鄰居搜索模塊422,用于根據每個鄰居范圍中所有個體的適應度值,搜索每個鄰居范圍的最優個體;
第一鄰域搜索模塊423,用于根據每個鄰居范圍內的最優個體引導雇傭蜂對初始種群中對應的個體進行鄰域搜索,生成初始種群中每個個體對應的第一新個體;以及
第一更新模塊424,用于根據初始種群每個個體的適應度值和對應的第一新個體的適應度值,將初始種群中每個個體與對應的第一新個體中的優秀個體設置為第一種群中的個體。
優選地,第二種群生成模塊33包括部分選取模塊431、第二鄰域搜索模塊432和第二更新模塊433,其中:
部分選取模塊431,用于根據第一種群中個體的適應度值和預設選取比例選取部分優秀個體,打亂部分優秀個體的順序,將順序打亂的部分優秀個體根據預設的公式使用概率劃分為第一部分個體和第二部分個體;
第二鄰域搜索模塊432,用于通過部分優秀個體和第一種群中的最優個體,引導觀察蜂采用預設的第一公式和第二公式分別對對第一部分個體、第二部分個體進行鄰域搜索,生成部分優秀個體對應的第二新個體;以及
第二更新模塊433,用于根據部分優秀個體與對應的第二新個體的適應度值,將部分優秀個體與對應的第二新個體中的優秀個體設置為第二種群的個體。
優選地,第二種群生成模塊33還包括差值計算模塊434、概率更新模塊435和選取循環模塊436,其中:
差值計算模塊434,用于當部分優秀個體對應的第二新個體優于部分優秀個體時,計算部分優秀個體與對應的第二新個體的適應度值差值;
概率更新模塊435,用于根據適應度值差值分別計算第一公式的提升度和第二公式的提升度,根據第一公式第二公式的提升度更新公式使用概率;以及
選取循環模塊436,用于判斷部分優秀個體的選取次數是否超過預設次數閾值,當選取次數未超過次數閾值時,將第二種群設置為第一種群并重新執行選取部分優秀個體的操作。
在本發明實施例中,在雇傭蜂階段通過鄰居范圍內的最優個體引導雇傭蜂的鄰域搜索,加強了蜂群局部信息的交流,在觀察蜂階段通過部分優秀個體、整個種群中的最優個體引導觀察蜂的鄰域搜索,降低觀察蜂搜索負擔的同時加強了蜂群全局信息的交流,從而有效地提高了人工蜂群算法的收斂速度和優化性能,進一步有效地提高了車輛路徑問題的優化效率。
在本發明實施例中,車輛路徑問題的優化裝置的各模塊可由相應的硬件或軟件模塊實現,各模塊可以為獨立的軟、硬件模塊,也可以集成為一個軟、硬件模塊,在此不用以限制本發明。本發明實施例中各模塊的具體實施方式可參考前述實施例一中各步驟的描述,在此不再贅述。
以上所述僅為本發明的較佳實施例而已,并不用以限制本發明,凡在本發明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發明的保護范圍之內。