胡中棟,謝金偉
(江西理工大學(xué)信息工程學(xué)院,江西贛州341000)
多級(jí)正向變異的遺傳算法提高求解VRP問(wèn)題效率
胡中棟,謝金偉
(江西理工大學(xué)信息工程學(xué)院,江西贛州341000)
應(yīng)用遺傳算法對(duì)車輛路徑問(wèn)題(VRP)求解時(shí),由于遺傳算法在解決VRP問(wèn)題時(shí),交叉操作難以保留優(yōu)秀基因片段,可能導(dǎo)致算法收斂較慢等問(wèn)題.在一定程度上影響了遺傳算法解決VRP問(wèn)題的實(shí)用性.在前人的基礎(chǔ)上,通過(guò)一種多級(jí)正向變異方法,使變異最大程度向好的方向進(jìn)行,拆除基因片段中較差的基因連接并建立新基因連接,從而得到較優(yōu)的新基因片段,重復(fù)一定的變異次數(shù),讓變異達(dá)到最優(yōu)效果.通過(guò)實(shí)驗(yàn)表明多級(jí)正向變異明顯提高了遺傳算法解決此類問(wèn)題的效率.
車輛調(diào)度;遺傳算法;多級(jí)正向變異;基因片段;算法設(shè)計(jì)
車輛路徑問(wèn)題(VRP)是1959年由Dantzig和Ramser首次提出,它是指一定數(shù)量的客戶,各自有不同數(shù)量的貨物需求,配送中心向客戶提供貨物,由一個(gè)車隊(duì)負(fù)責(zé)分送貨物,組織適當(dāng)?shù)男熊嚶肪€,目標(biāo)是使得客戶的需求得到滿足,并能在一定的約束下,達(dá)到如路程最短、成本最小、耗費(fèi)時(shí)間最少等目的[1].旅行商問(wèn)題是VRP的特例,Gaery[2]已證明TSP問(wèn)題是NP難題,所以VRP也屬于NP難題,已經(jīng)有多種方法來(lái)求解VRP問(wèn)題[3-9],但啟發(fā)式算法成為車輛運(yùn)輸問(wèn)題求解的主要方法.遺傳算法是其中一種方法,遺傳算法是一類借鑒生物界的進(jìn)化規(guī)律演化而來(lái)的隨機(jī)化搜索方法.
應(yīng)用遺傳算法解決車輛路線問(wèn)題(VRP)時(shí),發(fā)現(xiàn)遺傳算法進(jìn)行交叉操作時(shí)易破壞原來(lái)較好的基因片段[10],從而導(dǎo)致算法效率降低.基于以上事實(shí)
提出多級(jí)正向變異的方法來(lái)提高效率.
設(shè)車輛的數(shù)量為M(m=1,2,…,M),單個(gè)車的容量為w.客戶的個(gè)數(shù)為N,需求量為pi(i=1,2,…,N),且pi≤w.頂點(diǎn)集合為V={1,2,…,N}.用cij表示i點(diǎn)到j(luò)(j=1,2,…,N)的運(yùn)輸距離.xijm=1表示車輛m由客戶i行駛到客戶j,xijm=0表示車輛m沒(méi)有經(jīng)過(guò)這條路徑.yim=1表示客戶i的任務(wù)由車輛m來(lái)完成,yim=0則表示客戶i的任務(wù)不由車輛m完成.
車輛調(diào)度的路徑優(yōu)化問(wèn)題可建立數(shù)學(xué)模型[11]如下:
1)所有車輛以相同的起點(diǎn)同時(shí)向客戶運(yùn)輸貨物互不干擾.
2)車輛路徑問(wèn)題(VRP)的目標(biāo)函數(shù)可定義為:
3)每一條路徑上各個(gè)客戶所需要的貨物總重量不超過(guò)單輛車的載重量.
4)每個(gè)客戶的需求只能讓一輛車來(lái)完成,并且所有任務(wù)由K輛車完成.
5)每一個(gè)客戶只能被一輛車服務(wù)一次.
2.1 基本思想
由于遺傳算法解決VRP問(wèn)題時(shí)存在編碼問(wèn)題,使得交叉操作可能無(wú)法保留優(yōu)秀基因片段[10].針對(duì)因此而導(dǎo)致的算法效率較低的問(wèn)題,經(jīng)過(guò)算法分析與大量實(shí)驗(yàn),提出利用多級(jí)正向變異的算法來(lái)提高解決VRP問(wèn)題的效率.分析了傳統(tǒng)遺傳算法的變異過(guò)程,提出了改進(jìn)為多級(jí)正向變異的方法.
1)自然界中的交叉操作是基因片段的重組,在解決VRP問(wèn)題時(shí)的染色體交叉基因片段后,還需刪除染色體中重復(fù)的基因.因此交叉操作有時(shí)可能會(huì)破壞原來(lái)相對(duì)較優(yōu)的局部基因.從而造成遺傳算法解決本問(wèn)題時(shí)表現(xiàn)出不穩(wěn)定并且收斂較慢的特點(diǎn).
自然界中的變異是隨機(jī)的,如果變異向壞的方向進(jìn)行,就會(huì)產(chǎn)生更差的個(gè)體.差的個(gè)體將被淘汰,使問(wèn)題達(dá)到最優(yōu)解就要增加進(jìn)化代數(shù).在解決實(shí)際問(wèn)題時(shí),如果能通過(guò)某種簡(jiǎn)單的方法讓變異盡可能向好的方向發(fā)展,那么進(jìn)化的速度將加快,能夠更快的收斂到全局最優(yōu)解.
2)多級(jí)正向變異思想用以解決上述問(wèn)題,具體問(wèn)題是交叉操作導(dǎo)致優(yōu)秀基因片段難以保留,而用多級(jí)正向變異的思想可以讓變異盡可能多的向好的方向發(fā)展,減少進(jìn)化代數(shù),更快收斂到全局最優(yōu)解.
多級(jí)正向變異的方法是在變異之前檢查染色體中基因片段,如果該基因片段較差,則進(jìn)行變異,隨機(jī)生成新的基因片段;如果該基因片段較好,則不變異;對(duì)染色體重復(fù)合適的變異次數(shù),使得變異的效果最好.變異產(chǎn)生更優(yōu)染色體的概率大,且染色體的質(zhì)量更高.這樣,變異就最大可能性向好的方向發(fā)展了.
2.2 算法設(shè)計(jì)
應(yīng)用遺傳算法解決VRP問(wèn)題時(shí)要進(jìn)行編碼、選擇、交叉和變異等操作.
1)編碼采用客戶序號(hào)(序號(hào)是自然數(shù)1~L,L為客戶數(shù))的十進(jìn)制編碼方法.這種表示方法是直接產(chǎn)生L個(gè)1~L間的互不重復(fù)的自然數(shù)的排列,該客戶排列就構(gòu)成一個(gè)解,并對(duì)應(yīng)一種配送路徑方案.設(shè)客戶排列(染色體)為41287635,設(shè)兩輛車可以完成配送,每輛車為4個(gè)客戶配送貨物,則配送路線為第一輛車:0→4→1→2→8→0,第二輛車:0→7→6→3→5→0(其中0表示起始點(diǎn))[12].
2)適應(yīng)度計(jì)算方法采用某條染色體的配送方案中要經(jīng)過(guò)的客戶點(diǎn)(或起始點(diǎn))之間的路徑長(zhǎng)度之和的倒數(shù)為其個(gè)體的適應(yīng)值,設(shè)個(gè)體的適應(yīng)值為f1=1/z(z為車輛所需行走路程的總和)[12].