專利名稱:一種求解旅行商問(wèn)題的蟻群優(yōu)化-微分進(jìn)化融合方法
技術(shù)領(lǐng)域:
本發(fā)明一種求解旅行商問(wèn)題的蟻群優(yōu)化(Ant Colony Optimization, ACO)國(guó) 微分進(jìn)化(DifferentialEvolution, DE)融合方法,屬于應(yīng)用人工智能技術(shù)領(lǐng)域。
(二)
背景技術(shù):
旅行商問(wèn)題(Traveling Salesman Problem, TSP)是一個(gè)經(jīng)典的組合優(yōu)化問(wèn) 題,經(jīng)典的旅行商問(wèn)題可以描述為 一個(gè)商品推銷員要去若干個(gè)城市推銷商品, 該推銷員從一個(gè)城市出發(fā),需要經(jīng)過(guò)所有城市后,回到出發(fā)地。應(yīng)如何選擇行 進(jìn)路線,以使總的行程最短。從圖論的角度來(lái)看,該問(wèn)題實(shí)質(zhì)是在一個(gè)帶權(quán)完 全無(wú)向圖中,找一個(gè)權(quán)值最小的哈密爾頓(Hamilton)回路。由于該問(wèn)題的可行解 是所有頂點(diǎn)的全排列,隨著頂點(diǎn)數(shù)的增加,會(huì)產(chǎn)生組合爆炸。作為組合優(yōu)化中 研究最多的問(wèn)題之一,旅行商問(wèn)題吸引了許多不同領(lǐng)域的研究工作者,包括數(shù) 學(xué)、運(yùn)籌學(xué)、物理、生物和人工智能等領(lǐng)域,它是目前優(yōu)化領(lǐng)域里的研究熱點(diǎn)。
蟻群優(yōu)化算法(也稱"蟻群算法"或"螞蟻算法")是一種最新發(fā)展的模擬 昆蟲(chóng)王國(guó)中螞蟻群體覓食行為的仿生優(yōu)化算法,該算法采用了正反饋并行自催 化機(jī)制,具有較強(qiáng)的魯棒性、優(yōu)良的分布式計(jì)算機(jī)制、易于與其他方法結(jié)合等 優(yōu)點(diǎn),在解決許多復(fù)雜優(yōu)化問(wèn)題方面己經(jīng)展現(xiàn)出其優(yōu)異的性能和巨大的發(fā)展?jié)?力。
蟻群算法是由螞蟻覓食行為演化來(lái)的優(yōu)化算法,螞蟻個(gè)體之間是通過(guò)一種 稱之為信息素(Pheromone)的物質(zhì)進(jìn)行信息傳遞,從而能相互協(xié)作,完成復(fù)雜的 任務(wù)。螞蟻在運(yùn)動(dòng)過(guò)程中,在它所經(jīng)過(guò)的路徑上會(huì)留下一定量的信息素,信息 素的強(qiáng)度與路徑長(zhǎng)度有關(guān)。并且螞蟻在運(yùn)動(dòng)過(guò)程中能夠感知路徑上信息素的存 在及其強(qiáng)度,并以此指導(dǎo)自己的對(duì)路徑的選擇,螞蟻傾向于朝著信息素強(qiáng)度較 高的方向移動(dòng)。因此,由大量螞蟻組成的蟻群的集體行為便表現(xiàn)出一種信息正 反饋現(xiàn)象某一路徑上走過(guò)的螞蟻越多,則后來(lái)者選擇該路徑的概率就越大。 螞蟻個(gè)體之間就是通過(guò)這種信息的交流達(dá)到搜索食物的目的。蟻群算法采用了 正反饋并行自催化機(jī)制,該算法具有較強(qiáng)的魯棒性、優(yōu)良的分布式計(jì)算機(jī)制、易于與其他方法結(jié)合等優(yōu)點(diǎn)。蟻群算法由意大利學(xué)者M(jìn).Dorigo提出之后最早用 于求解旅行商問(wèn)題以及工件排序問(wèn)題,顯示出了比其他算寧更好的效果,此外, 該算法在解決其他許多復(fù)雜優(yōu)化問(wèn)題方面也已經(jīng)展現(xiàn)出了優(yōu)異的性能和巨大的 發(fā)展?jié)摿Α?br>
作為一種新興的啟發(fā)式仿生智能優(yōu)化算法,目前人們對(duì)蟻群優(yōu)化算法的研究已 經(jīng)由當(dāng)初單一的旅行商問(wèn)題領(lǐng)域滲透到了多個(gè)應(yīng)用領(lǐng)域,由解決一維靜態(tài)優(yōu)化 問(wèn)題發(fā)展到解決多維動(dòng)態(tài)組合優(yōu)化問(wèn)題,由離散域范圍內(nèi)的研究逐漸拓展到了 連續(xù)域范圍內(nèi)的研究,而且在蟻群優(yōu)化算法的硬件實(shí)現(xiàn)上也取得了很多突破性 進(jìn)展,從而使這種新興的仿生優(yōu)化算法展現(xiàn)出勃勃生機(jī)和廣闊的發(fā)展前景。
微分進(jìn)化算法是由Storn和Price在1995年提出來(lái)的一種新的進(jìn)化算法, 和其它的進(jìn)化算法相比,微分進(jìn)化算法的性能更加突出,它的過(guò)程簡(jiǎn)單,幾乎 每次運(yùn)行都能找到最優(yōu)解,而且微分進(jìn)化算法只有很少的參數(shù)需要設(shè)置,并且 同樣的參數(shù)設(shè)置可以用到許多的不同的問(wèn)題中。已有研究指出,在大多數(shù)的數(shù) 值Benchmark問(wèn)題中微分進(jìn)化算法表現(xiàn)的比粒子群算法等其它進(jìn)化算法都要 好。微分進(jìn)化算法首先在搜索空間內(nèi)隨機(jī)產(chǎn)生初始的解群體,然后通過(guò)將群體 中兩個(gè)成員間的差向量增加到第三個(gè)成員的方法來(lái)生成新的個(gè)體,如果新個(gè)體 的適應(yīng)度值更好,那么新產(chǎn)生的個(gè)體將代替原個(gè)體。其它的進(jìn)化算法相比,這 種新穎的搜索算法過(guò)程簡(jiǎn)單,魯棒性好,它更容易理解、易于實(shí)現(xiàn),有很強(qiáng)的 空間搜索能力,且收斂速度快。
實(shí)踐證明,單純依賴一種算法求解復(fù)雜問(wèn)題,有時(shí)效果并不好,將兩種進(jìn) 行有機(jī)的融合,是一種很好的思路。蟻群算法采用的正反饋機(jī)制是其不同于其 它算法最為顯著的特點(diǎn),但其在實(shí)際應(yīng)用中也有著一些不足,比如,基本蟻群 算法一般需要較長(zhǎng)的搜索時(shí)間,且容易出現(xiàn)停滯現(xiàn)象,同時(shí),蟻群算法的收斂 性能對(duì)對(duì)初始化參數(shù)的設(shè)置比較敏感。而對(duì)于微分進(jìn)化算法,收斂速度快、搜 索能力強(qiáng)的特點(diǎn)使它可以對(duì)蟻群算法有一個(gè)有力的補(bǔ)充。同時(shí),微分進(jìn)化算法 只有很少的參數(shù)需要設(shè)置,并且同樣的參數(shù)設(shè)置可以用到許多的不同的問(wèn)題中。
發(fā)明內(nèi)容
本發(fā)明的目的是針對(duì)著名的旅行商問(wèn)題,利用融入了微分進(jìn)化思想的改進(jìn) 型蟻群優(yōu)化算法尋找最優(yōu)解。與傳統(tǒng)的蟻群算法相比,該發(fā)明所提出的算法具 有更好的收斂性,以及更強(qiáng)的尋優(yōu)能力。該方法是解決諸如旅行商問(wèn)題等大規(guī) 模復(fù)雜優(yōu)化問(wèn)題的有效途徑,同時(shí),本發(fā)明也可應(yīng)用于其它復(fù)雜的智能優(yōu)化問(wèn) 題。自然界中,像螞蟻這類社會(huì)性動(dòng)物,單只螞蟻的能力和智力非常簡(jiǎn)單,但 它們通過(guò)相互協(xié)調(diào)、分工、合作完成不論工蟻還是蟻后都不可能有足夠能力來(lái) 指揮完成的筑巢、覓食、遷徙、清掃蟻穴等復(fù)雜行為。螞蟻的食物源總是隨機(jī) 散布于蟻巢周圍,我們只要仔細(xì)觀察就可以發(fā)現(xiàn),經(jīng)過(guò)一段時(shí)間后,螞蟻總能 找到一條從蟻巢到食物源的最短路徑??茖W(xué)家曾經(jīng)通過(guò)"雙橋?qū)嶒?yàn)"對(duì)蟻群的覓 食行為進(jìn)行了研究。發(fā)現(xiàn)除了能找到巢穴和食物源之間的最短路徑之外,蟻群 對(duì)環(huán)境有著極強(qiáng)的適應(yīng)能力。例如當(dāng)原有的最短路徑由于一個(gè)新的障礙物的出 現(xiàn)而變得不可行時(shí),蟻群能迅速找到一條新的最短路徑。
在現(xiàn)實(shí)生活中,我們總可以觀察到大量螞蟻在巢穴與食物源之間形成近乎
直線的路徑,而不是曲線或者圓等其它形狀,如圖l(a)所示。螞蟻群體不僅能 完成復(fù)雜的任務(wù),而且還能適應(yīng)環(huán)境的變化,如在蟻群運(yùn)動(dòng)路線上突然出現(xiàn)障 礙物時(shí), 一開(kāi)始各只螞蟻分布是均勻的,不管路徑是否長(zhǎng)短,螞蟻總是先按同 等概率選擇各條路徑,如圖l(b)所示。螞蟻在運(yùn)動(dòng)過(guò)程中,能夠在其經(jīng)過(guò)的路 徑上留下信息素,而且能感知這種物質(zhì)的存在及其強(qiáng)度,并以此指導(dǎo)自己運(yùn)動(dòng) 的方向,螞蟻傾向于信息素濃度高的方向移動(dòng)。相等時(shí)間內(nèi)較短路徑上的信息 量就遺留得比較多,則選擇較短路徑的螞蟻也隨之增多,如圖l(c)所示。不難 看出,由于大量螞蟻組成的蟻群集體行為表現(xiàn)出了一種信息正反饋現(xiàn)象,即某 一路徑上走過(guò)的螞蟻越多,則后來(lái)者選擇該路徑的概率就越大,螞蟻個(gè)體之間 就是通過(guò)這種信息交流機(jī)制來(lái)搜索食物,并最終沿著最短路徑行進(jìn),如圖l(d) 所示。
蟻群是如何完成這些復(fù)雜任務(wù)的呢 仿生學(xué)家經(jīng)過(guò)大量的觀察、研究發(fā)現(xiàn), 螞蟻在尋找食物時(shí),能在其經(jīng)過(guò)的路徑上釋放一種螞蟻特有的信息素,使得一 定范圍內(nèi)的其他螞蟻能夠感覺(jué)到這種物質(zhì),且傾向于朝該物質(zhì)強(qiáng)度高的方向移
動(dòng)。因此,蟻群的集體行為表現(xiàn)為一種信息正反饋現(xiàn)象某條路徑上經(jīng)過(guò)的螞
蟻數(shù)越多,其上留下的信息素也就越多(當(dāng)然,隨時(shí)間的推移會(huì)逐漸蒸發(fā)),后 來(lái)螞蟻選擇該路徑的概率也越高,從而更增加了該路徑上信息素的強(qiáng)度。隨著 時(shí)間的推移,整個(gè)蟻群最終會(huì)收斂到最短的遍歷路徑上。
蟻群算法最初是用于解決旅行商問(wèn)題,旅行商問(wèn)題的簡(jiǎn)單形象描述是給 定W個(gè)城市,有一個(gè)旅行商從某一城市出發(fā),訪問(wèn)各城市一次且僅有一次后再 回到原出發(fā)城市,要求找出一條最短的巡回路徑。 1、基本蟻群算法的數(shù)學(xué)模型
設(shè)b々)表示n寸刻位于元素/的螞蟻數(shù)目,^(0為"寸刻路徑(/,力上的信息量,w表示TSP規(guī)模,即城市總數(shù)目,m為蟻群中螞蟻的總數(shù)自,則附=£ ;
r =1 。ci C}是f時(shí)刻集合C中元素(城市)兩兩連接/y上殘留信息量的集
合。在初始時(shí)刻各條路徑上信息量相等,并設(shè)初始信息量為^(0) = 6^"對(duì)。
螞蟻^(&= 1,2,.....,附)在運(yùn)動(dòng)過(guò)程中,根據(jù)各條路徑上的信息量決定其轉(zhuǎn)移 方向。這里用禁忌表^6^(^:=1,2,....,附)來(lái)記錄螞蟻^:當(dāng)前所走過(guò)的城市,集合 to6^隨著進(jìn)化過(guò)程作動(dòng)態(tài)調(diào)整。在搜索過(guò)程中,螞蟻根據(jù)各條路徑上的信息量 及路徑的啟發(fā)信息來(lái)計(jì)算狀態(tài)轉(zhuǎn)移概率。/^G)表示在Z時(shí)刻螞蟻A:由元素(城 市)/轉(zhuǎn)移到元素(城市)/的狀態(tài)轉(zhuǎn)移概率
<formula>formula see original document page 8</formula>
式中,^/0>^4={<3-&6^}表示螞蟻^:下一步允許選擇的城市。ct為信息啟發(fā) 式因子,表示軌跡的相對(duì)重要性,反映了螞蟻在運(yùn)動(dòng)過(guò)程中所積累的信息在螞 蟻運(yùn)動(dòng)時(shí)所起的作用,其值越大,則該螞蟻越傾向于選擇其它螞蟻經(jīng)過(guò)的路徑, 螞蟻之間協(xié)作性越強(qiáng);P為期望啟發(fā)式因子,表示能見(jiàn)度的相對(duì)重要性,反映了 螞蟻在運(yùn)動(dòng)過(guò)程中啟發(fā)信息在螞蟻選擇路徑中的受重視程度,其值越大,則該 狀態(tài)轉(zhuǎn)移概率越接近于貪心規(guī)則。仏」(t)為啟發(fā)函數(shù),其表達(dá)式如下
<formula>formula see original document page 8</formula>
式中,《表示相鄰兩個(gè)城市之間的距離。對(duì)螞蟻A:而言,^越小,則/7ij(t)越 大,/^G)也就越大。顯然,該啟發(fā)函數(shù)表示螞蟻從元素(城市)/轉(zhuǎn)移到元素(城 市X/的期望程度。
為了避免殘留信息素過(guò)多引起殘留信息淹沒(méi)啟發(fā)信息,在每只螞蟻?zhàn)咄暌?步或者完成對(duì)所有n個(gè)城市的遍歷(也即一個(gè)循環(huán)結(jié)束)后,要對(duì)殘留信息進(jìn)行更 新處理。這種更新策略模仿了人類大腦記憶的特點(diǎn),在新信息不斷存入大腦的 同時(shí),存貯在大腦中的舊信息隨著時(shí)間的推移逐漸淡化,甚至忘記。由此, 時(shí)刻在路徑(z》)上的信息量可按如下規(guī)則進(jìn)行調(diào)整
<formula>formula see original document page 8</formula>Ary(/) = SA《(,) (4)
式中,p表示信息素?fù)]發(fā)系數(shù),貝Ul-p表示信息素殘留因子,為了防止信息
的無(wú)限積累,;o的取值范圍為PC
,("l,…,A^)表示。對(duì)于任意一個(gè)目標(biāo)向量^而言,按下面
公式生成變異向量V"
vf =xn+Fx(X2-、), hl,2…,M5 (6)
其中,^ ,、2 ,^是群體中隨機(jī)選擇的三個(gè)個(gè)體,并且^ # r2 # r3 # / 。 F是一個(gè)介于
間的實(shí)型常量因子,用于控制差向量0,2-\)的影響,一 般稱為放縮因子。顯然,X。 ,S之間的差向量越小,擾動(dòng)也就越小,這意味著 如果群體靠近優(yōu)化值,擾動(dòng)會(huì)自動(dòng)減小。
微分算法的交叉操作的目的是通過(guò)變異向量"和目標(biāo)二向量、的結(jié)合以提 高變異向量的多樣性。算法通過(guò)下面公式生成新的向量"''=[""'W''2'''''W'"]:
/二i,…,,d.,,
這里,ra"W是
間的隨機(jī)數(shù);C7 是范圍在
間的常數(shù),稱為交叉常
9量,C7 的值越大,發(fā)生交叉的可能就越大,Ci =0表示沒(méi)有交叉raw^是在[1,D] 隨機(jī)選擇的整數(shù),它保證A至少要從K中獲得一個(gè)元素,否則就不會(huì)有新的 向量生成,群體也就不會(huì)發(fā)生變化。
微分進(jìn)化算法中的選擇操作,是一種"貪婪"選擇模式,當(dāng)且僅當(dāng)新的向 量個(gè)體、的適應(yīng)度值比目標(biāo)向量個(gè)體^的更好時(shí),才會(huì)被保留到下一代群體
中。否則,目標(biāo)向量個(gè)體A仍然保留在群體中,再一次作為下一代的父向量。
3、改進(jìn)型蟻群優(yōu)化-微分進(jìn)化算法(DEACO)
在蟻群算法中,信息素對(duì)螞蟻探路活動(dòng)起著重要的作用, 一個(gè)良好的信息 素分布將直接影響到蟻群對(duì)最優(yōu)路徑的探索。為此,提出將微分進(jìn)化算法的思 想融入到蟻群算法中,利用微分進(jìn)化算法中的隨機(jī)偏差擾動(dòng)產(chǎn)生新個(gè)體的方式, 對(duì)蟻群留下的信息素?cái)?shù)量進(jìn)行一些擾動(dòng),以期在各個(gè)城市之間達(dá)到更好的信息 素分布,從而得到最優(yōu)的路徑。
在改進(jìn)算法中,微分算法中的變異、交叉以及選擇操作的作用對(duì)象都將是 蟻群算法中螞蟻在路徑上留下的信息素。 '
首先對(duì)蟻群算法中的螞蟻群體略微做些調(diào)整,即是將螞蟻分為若干相互間 獨(dú)立的小分隊(duì)(Ant-team),分隊(duì)數(shù)量記為reaw, (rea柳最好是螞蟻總數(shù)m的約 數(shù))。每隊(duì)的城市間上的信息素記為7 = ^}, / = 1,...,7^W2,顯然,^是一個(gè) "xw的矩陣。對(duì)于各隊(duì)螞蟻當(dāng)前的信息素,按照下列公式產(chǎn)生變異后的信息 素分布
5 、+Fx(、-、),hl,2,…,r謂 (8)
其中,、,、,、是在所有的螞蟻分隊(duì)中隨機(jī)選擇的三個(gè)信息素個(gè)體,并 且仍有G - W 。顯然,同樣、,、之間的差向量越小,擾動(dòng)也就會(huì)越小,
這意味著當(dāng)各個(gè)分隊(duì)的信息素收斂于最佳的信息素分布附近時(shí),變異產(chǎn)生的擾 動(dòng)會(huì)自動(dòng)減小。
改進(jìn)算法中利用微分進(jìn)化算法的交叉操作,通過(guò)變異信息素分布、和當(dāng)前 的目標(biāo)信息素^的結(jié)合以提高城市間信息素的多樣性。算法通過(guò)下面公式生成
新的信息素矩陣巧,=
<formula>formula see original document page 10</formula>2' ra"必〉C^orraw《^A;, (9)
這里,r嚴(yán)代表變異操作前第/分隊(duì)螞蟻在城市力^之間的信息素,rf代 表經(jīng)變異操作后,第/分隊(duì)螞蟻在城市y,A:之間的中間信息素分布矩陣,r^代 表對(duì)r嚴(yán)和rf實(shí)行選擇操作后,第/分隊(duì)螞蟻在城市力t之間的信息素;m"必 是
間的隨機(jī)數(shù);O 是范圍在
間的常數(shù),稱為交叉常量,O 的值越大, 發(fā)生交叉的可能性就越大,C7 =0表示沒(méi)有交叉,意味著各螞蟻分隊(duì)之間沒(méi)有 信息素的交流;ra"^:是在[1, n]上隨機(jī)選擇的整數(shù),它保證了新生成的信息素 矩陣匸2,至少要從經(jīng)變異后的信息素、中獲得一個(gè)元素,否則就信息素就不會(huì) 產(chǎn)生變化,不利于螞蟻分隊(duì)間的信息交流。
在旅行商問(wèn)題中,各分隊(duì)的螞蟻按照其信息素矩陣^計(jì)算來(lái)的轉(zhuǎn)移概率 P^構(gòu)建路徑,得到的最優(yōu)路徑的長(zhǎng)度i^&A即為信息素r,.的適應(yīng)度值。對(duì)新 生成的信息素,以及螞蟻在其基礎(chǔ)上的探路活動(dòng)的認(rèn)可與否,需要對(duì)原始目標(biāo) 信息素分布5與新的信息素個(gè)體^^進(jìn)行適應(yīng)度值的評(píng)價(jià),執(zhí)行一種"貪婪" 選擇模式。當(dāng)且僅當(dāng)新個(gè)體的適應(yīng)度值比原始個(gè)體的更好時(shí),才會(huì)被接受并保 留到下一代的信息素分布矩陣中;否則,目標(biāo)信息素分布A仍將留在該螞蟻分 隊(duì)的城市信息素分布中。所以,信息素的選擇操作可用下式表示為
[r2 ,, ^Z^—6esf2 <Z^—6esf0 ',—1, ^丄—6eW2 2 —6es^ (10)
其中,巧,t為第/螞蟻分隊(duì)進(jìn)行到第f次迭代時(shí),在城市路徑上遺留的信息 素;為第/螞蟻分隊(duì)在第^次迭代時(shí),城市路徑上的信息素經(jīng)變異、交叉 操作后得到的新的信息素矩陣;n,t等于^t和^^中具有較高適應(yīng)度的信息素 矩陣。丄—^A,為螞蟻按照信息素、t構(gòu)建出的最短路徑長(zhǎng)度,即信息素、t的
適應(yīng)度;丄—Z)M^為螞蟻按照信息素&^構(gòu)建出的最短路徑長(zhǎng)度。
選擇操作結(jié)束后,以信息素矩陣、t或T2,,,構(gòu)建路徑的第z'蟻群分隊(duì),按照
其隊(duì)內(nèi)各螞蟻個(gè)體走過(guò)路徑的長(zhǎng)度,依照蟻周(Ant-Cycle)模型的信息素公式 (5)釋放出各自的信息素,并對(duì)被選中的信息素r、t進(jìn)行信息素的更新,得到 新的信息素分布、t+1 ,并將各分隊(duì)的信息矩陣傳給下一代的蟻群。
4、蟻群優(yōu)化-微分進(jìn)化算法解決旅行商問(wèn)題的具體實(shí)現(xiàn)步步驟一參數(shù)初始化。令當(dāng)前的迭代次數(shù)iVC=l,設(shè)置最大循環(huán)迭代次數(shù)
A^max,設(shè)置城市坐標(biāo)集合C,城市總數(shù)為",令連接城市7'、 A的路徑上的初始 化信息素—4=常數(shù),螞蟻總數(shù)m,與蟻群算法有關(guān)的參數(shù)",",P, g,與 微分算法有關(guān)的參數(shù)F, C7 ,設(shè)置螞蟻分隊(duì)的數(shù)量7^m。'
步驟二初始化螞蟻群體。將所有螞蟻分為總數(shù)為7fe"m的螞蟻分隊(duì),.各 分隊(duì)螞蟻數(shù)量記為71rn(^;對(duì)于第/個(gè)分隊(duì),將其中的所有r—m0只螞蟻隨機(jī) 置于m個(gè)城市上。
步驟三進(jìn)行第一次迭代。令片l,對(duì)第/分隊(duì)中的71m0只螞蟻個(gè)體按照 狀態(tài)轉(zhuǎn)移概率公式(1)計(jì)算的概率P^選擇城市A:并前進(jìn),直至將所有城市遍 歷完,然后根據(jù)公式(3)、 (4)以及(5)更新路徑上的信息素,得到、2;令 /=/+1,重復(fù)執(zhí)行步驟三,直到/>7^附。
步驟四迭代次數(shù)7VC=A^+1。按照公式(8)執(zhí)行變異操作,產(chǎn)生中間信 息素矩陣、.,再按照公式(9)執(zhí)行交叉操作,產(chǎn)生新的信息素矩陣&,;令 /=/+1,重復(fù)執(zhí)行步驟四,直到^ream。
步驟五螞蟻分隊(duì)數(shù)目/=1。
步驟六第/分隊(duì)的所有螞蟻個(gè)體按照矩陣^所給的信息素,利用狀態(tài)轉(zhuǎn) 移概率公式(1)得來(lái)的概率完成對(duì)所有城市的遍歷,計(jì)算出每只螞蟻遍歷路徑 的長(zhǎng)度,選出最短路徑的,其長(zhǎng)度記為丄—^W。,.。
步驟七第/分隊(duì)的所有螞蟻個(gè)體按照矩陣、,所給的信息素,利用狀態(tài)轉(zhuǎn) 移概率公式(1)計(jì)算的概率完成對(duì)所有城市的遍歷,計(jì)算出每只螞蟻遍歷路徑 的長(zhǎng)度,選出最短的路徑,其長(zhǎng)度記為丄—&W2i。
步驟八比較丄—6M^和丄—&W2i,按照公式(10)執(zhí)行選擇操作,將7,或 ^賦予r/,并將丄—b^與丄—Z^;較小的賦予丄—6W,,并將其對(duì)應(yīng)的城市 遍歷路徑記入i Jje聘。
步驟九對(duì)信息素進(jìn)行更新。若在步驟八中選擇了^賦予^',則依照步驟 六中各螞蟻個(gè)體的遍歷路徑,利用公式(3)、 (4)、 (5)進(jìn)行信息素的更新;若 在步驟八中選擇了^,賦予<,則依照步驟七中各螞蟻個(gè)體的遍歷路徑,利用 公式(3)、 (4)、 (5)進(jìn)行信息素的更新。
步驟十螞蟻分隊(duì)數(shù)目/=/+1,返回執(zhí)行步驟六,直到/>7^附。
步驟十一在丄一6e^中選出最小的,即為本次迭代最短路徑長(zhǎng)度L&, 其對(duì)應(yīng)的遍歷路徑記為i &。
步驟十二返回執(zhí)行步驟四,直到iVc》^皿時(shí),結(jié)束循環(huán)。
12步驟十三在Lwc (Wc = l,..., WC皿)中選出最小者,記為幼0故^_>"-/2,
其在及&中對(duì)應(yīng)的遍歷路徑記為幼0WeW—raw決,即得旅行商問(wèn)題的最終解。
本發(fā)明提出了一種求解旅行商問(wèn)題的蟻群優(yōu)化-微分進(jìn)化融合方法,其優(yōu)點(diǎn)
及功效在于與傳統(tǒng)的蟻群算法相比,該融合算法使得整個(gè)蟻群集體既有各個(gè) 螞蟻個(gè)體之間的信息素交流,又有各螞蟻分隊(duì)之間的信息素交流,從而提高了 螞蟻信息素的多樣性,使蟻群具有了更強(qiáng)的全局搜索能力,并具有更好的收斂 性。該方法在解決旅行商問(wèn)題方面有著優(yōu)異表現(xiàn),同時(shí),本發(fā)明也可應(yīng)用于解 決其它復(fù)雜的組合優(yōu)化問(wèn)題。
圖1現(xiàn)實(shí)中蟻群尋找食物的過(guò)程
圖2微分算法中的變異操作
圖3微分算法中的交叉操作
圖4蟻群優(yōu)化-微分進(jìn)化算法的流程圖
圖5基本蟻群算法解決Att48TSP的最優(yōu)路徑
圖6蟻群優(yōu)化-微分進(jìn)化算法解決Att48TSP的最優(yōu)路徑
圖7最優(yōu)路徑進(jìn)化曲線對(duì)比圖
圖8平均路徑進(jìn)化曲線對(duì)比圖 、
圖中標(biāo)號(hào)及符號(hào)說(shuō)明如下
7^"——城市間的信息素分布矩陣
%的——經(jīng)變異、交叉操作后的信息素矩陣
7>^——第z'分隊(duì)的螞蟻數(shù)
丄—&叫(/)——第/分隊(duì)的螞蟻由信息素矩陣&W得到的最優(yōu)路徑長(zhǎng)度 £一&^2(/)——第z'分隊(duì)的螞蟻由信息素矩陣r"&得到的最優(yōu)路徑長(zhǎng)度 ——算法循環(huán)次數(shù)
iVc一mox-算法最大循環(huán)次數(shù)
7kwa-隊(duì)列
Y——是 N^否
57zorfe^丄e"g^-最短路徑長(zhǎng)度
Average Ze"gf/z-平均路徑長(zhǎng)度
basic—ACO——基本蟻群算法
13DEACO——蟻群優(yōu)化-微分進(jìn)化算法 Att48TSP——城市數(shù)目為48的旅行商問(wèn)題
具體實(shí)施例方式
為了驗(yàn)證改進(jìn)的蟻群優(yōu)化-微分進(jìn)化優(yōu)化算法在在解決旅行商問(wèn)題時(shí)的優(yōu) 越性,本發(fā)明利用48城市旅行商問(wèn)題(Att48TSP)進(jìn)行了實(shí)驗(yàn),其具體實(shí)現(xiàn)步 驟如下
步驟一參數(shù)初始化令當(dāng)前的迭代次數(shù)7VC=1,設(shè)置最大循環(huán)迭代次數(shù) 7\^畫(huà)=100,參數(shù)賦值附=30, a=2, "=4,=0.7, g=10, F=2,Ci =0.5,7kw2=5o
步驟二輸入要解決的48城市旅行商問(wèn)題中的城市坐標(biāo)集合C,城市總數(shù) 為"=48,計(jì)算城市y與城市A:之間的路徑長(zhǎng)度4k,以及 =%令連接城市y
與城市A:的路徑上的初始化信息素=1 ,將所有螞蟻分配到各個(gè)螞蟻分隊(duì)中, 每個(gè)分隊(duì)螞蟻數(shù)為71m^=m/7^m=6;將各分隊(duì)的螞蟻隨機(jī)置于各個(gè)城市上。
步驟三進(jìn)行第一次迭代。令/=1,對(duì)第/分隊(duì)中的7Lm"只螞蟻個(gè)體按照 下列狀態(tài)轉(zhuǎn)移概率公式計(jì)算的概率P^選擇城市t并前進(jìn),直至將所有城市遍 歷完;
0 o^ni^e
每只螞蟻遍歷路徑長(zhǎng)度記為^_—);然后根據(jù)下列公式更新路徑上的信息
素,得到下一代的信息素矩陣;2;
10
"葉——、
丄,
,若第t只螞蟻在本次循環(huán)中經(jīng)過(guò)oy)
T一w(/)
o 否則
、2=a — 0.7).r,+Ar,.
令/=/+1,重復(fù)執(zhí)行步驟三,直到^7kwr步驟四令迭代次數(shù)A^=A^+1 。按照下列公式執(zhí)行變異操作,產(chǎn)生中間信 息素矩陣、,
巧,二、+2x(、-、),/ = 1,2,'",5
再按照下式執(zhí)行交叉操作,產(chǎn)生新的信息素矩陣&,;
2' V,, z/raw必〉0.5orraw《d, 令/=/+1,重復(fù)執(zhí)行步驟四,直到P5。
步驟五螞蟻分隊(duì)數(shù)目/=1。
步驟六第/分隊(duì)的所有螞蟻個(gè)體按照矩陣^所給的信息素,利用狀態(tài)轉(zhuǎn) 移概率公式 -
巧,* =
0 oz72mW化
得來(lái)的概率完成對(duì)所有城市的遍歷,計(jì)算出每只螞蟻遍歷路徑的長(zhǎng)度,選 出最短路徑的,其長(zhǎng)度記為丄_6"^.。
步驟七第/分隊(duì)的所有螞蟻個(gè)體按照矩陣、,所給的信息素,利用狀態(tài)轉(zhuǎn) 移概率公式
'2,.
0 c^/2mv^
計(jì)算的概率完成對(duì)所有城市的遍歷,計(jì)算出每只螞蟻遍歷路徑的長(zhǎng)度,選
出最短的路徑,其長(zhǎng)度記為丄—6"/2i。
步驟八比較Z —6W。i和Z—&W2i,按照公式<formula>formula see original document page 15</formula>
執(zhí)行選擇操作,將^或t"2,賦予r,.',并將丄—6e^與丄—6e^較小的賦予
,并將其對(duì)應(yīng)的城市遍歷路徑記入及J^A。 步驟九對(duì)信息素進(jìn)行更新。若在步驟八中選擇了^賦予r/,則依照步驟
15六中各螞蟻個(gè)體的遍歷路徑,利用下列公式
<formula>formula see original document page 16</formula>
進(jìn)行信息素的更新;若在步驟八中選擇了匸2,賦予r/,則依照步驟七中各螞蟻 個(gè)體的遍歷路徑,利用上述三個(gè)公式進(jìn)行信息素的更新。最終得到傳給下一代 的信息素5。
步驟十螞蟻分隊(duì)數(shù)目/=&1,返回執(zhí)行步驟六,直到/>5。
步驟十一在1 —^A中選出最小的,即為本次迭代最短路徑長(zhǎng)度L&,其
對(duì)應(yīng)的遍歷路徑記為及&。
步驟十二返回執(zhí)行步驟四,直到A^2100時(shí),結(jié)束循環(huán)。
步驟十三在L&(M^1,…,A^ax)中選出最小者,記為幼w的L/e"gA,
其在及化中對(duì)應(yīng)的遍歷路徑記為幼o(hù)^eW—raw//2,即得到48城市旅行商問(wèn)題的最終解。
圖5~圖8即為利用基本蟻群算法(basic一ACO)和本發(fā)明提出的蟻群優(yōu)化-微 分進(jìn)化算銜DEACO)解決48城市旅行商問(wèn)題時(shí),得到的最優(yōu)路徑圖,以及最 短路徑長(zhǎng)度與平均路徑長(zhǎng)度的進(jìn)化曲線對(duì)比圖。
在路徑長(zhǎng)度對(duì)比圖中,實(shí)線為利用基本蟻群算法得到的進(jìn)化曲線,虛線是 利用蟻群優(yōu)化-微分進(jìn)化算法得到的進(jìn)化曲線。
由實(shí)際應(yīng)用結(jié)果可見(jiàn),與傳統(tǒng)的蟻群算法相比,該發(fā)明所提出的蟻群優(yōu)化-微分進(jìn)化融合方法具有更好的收斂性,并具有更強(qiáng)的全局尋優(yōu)能力。該方法是 解決諸如旅行商問(wèn)題等大規(guī)模復(fù)雜優(yōu)化問(wèn)題的有效途徑,同時(shí),本發(fā)明也可應(yīng) 用于解決其它復(fù)雜的組合優(yōu)化問(wèn)題(如機(jī)器人路徑規(guī)劃、作業(yè)調(diào)度、圖著色、網(wǎng) 絡(luò)路由等)。
權(quán)利要求
1、一種求解旅行商問(wèn)題的蟻群優(yōu)化-微分進(jìn)化融合方法,其特征在于它的具體實(shí)現(xiàn)步驟如下步驟一參數(shù)初始化令當(dāng)前的迭代次數(shù)Nc=1,設(shè)置最大循環(huán)迭代次數(shù)Ncmax,設(shè)置城市坐標(biāo)集合C,城市總數(shù)為n,令連接城市j與城市k的路徑上的初始化信息素τj,k=常數(shù),螞蟻總數(shù)m,與蟻群算法有關(guān)的參數(shù)α、β、ρ、Q,以及與微分算法有關(guān)的參數(shù)F、CR,設(shè)置螞蟻分隊(duì)的數(shù)目Team;步驟二初始化螞蟻群體將所有螞蟻分為總數(shù)為T(mén)eam的螞蟻分隊(duì),各分隊(duì)螞蟻數(shù)量記為T(mén)_m(i);對(duì)于第i個(gè)分隊(duì),將其中的所有T_m(i)只螞蟻隨機(jī)置于n個(gè)城市上;步驟三進(jìn)行第一次迭代令i=1,對(duì)第i分隊(duì)中的T_m(i)只螞蟻個(gè)體按照下列狀態(tài)轉(zhuǎn)移概率公式計(jì)算的概率pj,k選擇城市k并前進(jìn),直至將所有城市遍歷完;其中,allowedT-m(i)是第i隊(duì)中的第T_m(i)只螞蟻可以選擇的城市的集合;然后根據(jù)下列公式τi,2=(1-ρ)·τi+Δτi更新路徑上的信息素,得到第二代的信息素τi,2;令i=i+1,重復(fù)執(zhí)行步驟三,直到i>Team;步驟四迭代次數(shù)Nc=Nc+1按照下列公式執(zhí)行變異操作,產(chǎn)生中間信息素矩陣再按照下述公式執(zhí)行交叉操作,產(chǎn)生新的信息素矩陣令i=i+1,重復(fù)執(zhí)行步驟四,直到i>Team;步驟五令螞蟻分隊(duì)數(shù)目i=1;步驟六第i分隊(duì)的所有螞蟻個(gè)體按照矩陣τi所給的信息素,利用狀態(tài)轉(zhuǎn)移概率公式得來(lái)的概率完成對(duì)所有城市的遍歷,計(jì)算出每只螞蟻遍歷路徑的長(zhǎng)度,選出最短路徑的,其長(zhǎng)度記為L(zhǎng)_best0i;步驟七第i分隊(duì)的所有螞蟻個(gè)體按照矩陣所給的信息素,利用狀態(tài)轉(zhuǎn)移概率公式計(jì)算的概率完成對(duì)所有城市的遍歷,計(jì)算出每只螞蟻遍歷路徑的長(zhǎng)度,選出最短的路徑,其長(zhǎng)度記為L(zhǎng)_best2i;步驟八比較L_best0i和L_best2i,按照下述公式執(zhí)行選擇操作,將τi或賦予將L_best0i與L_best2i中較小的賦予L_besti,并將其對(duì)應(yīng)的城市遍歷路徑記入R_besti;步驟九對(duì)信息素進(jìn)行更新若在步驟八中選擇了τi賦予則依照步驟六中各螞蟻個(gè)體的遍歷路徑,利用下列三個(gè)公式進(jìn)行信息素的更新;若在步驟八中選擇了賦予則依照步驟七中各螞蟻個(gè)體的遍歷路徑,利用上面三個(gè)公式進(jìn)行信息素的更新;步驟十螞蟻分隊(duì)數(shù)目i=i+1,返回執(zhí)行步驟六,直到i>Team;步驟十一在L_besti中選出最小的,即為本次迭代最短路徑長(zhǎng)度LNc,其對(duì)應(yīng)的遍歷路徑記為RNc;步驟十二返回執(zhí)行步驟四,直到Nc≥Ncmax時(shí),結(jié)束循環(huán);步驟十三在LNc(Nc=1,…,Ncmax)中選出最小者,記為Shortest_length,其在RNc中對(duì)應(yīng)的遍歷路徑記為Shortest_routh,即得旅行商問(wèn)題的最終解。
全文摘要
一種求解旅行商問(wèn)題的蟻群優(yōu)化-微分進(jìn)化融合方法,實(shí)施步驟為(1)初始化算法參數(shù);(2)初始化螞蟻群體;(3)進(jìn)行第一次迭代;(4)從第二代起,對(duì)各分隊(duì)信息素執(zhí)行變異、交叉操作,產(chǎn)生新的信息素;(5)選中第一分隊(duì);(6)各分隊(duì)螞蟻按原始信息素構(gòu)建各自最優(yōu)路徑;(7)各分隊(duì)螞蟻按新信息素構(gòu)建各自最優(yōu)路徑;(8)比較兩個(gè)最優(yōu)路徑,選出路徑優(yōu)化結(jié)果更好的信息素;(9)更新螞蟻分隊(duì)信息素,并傳給下一代;(10)返回第六步,直至所有分隊(duì)完成計(jì)算;(11)確定本代最優(yōu)路徑及長(zhǎng)度;(12)返回第四步,進(jìn)行下一代計(jì)算,直到滿足結(jié)束條件;(13)確定全局最優(yōu)路徑及長(zhǎng)度。該方法具有更好的收斂性,并具有更強(qiáng)的全局尋優(yōu)能力,是解決諸如旅行商問(wèn)題等大規(guī)模復(fù)雜優(yōu)化問(wèn)題的有效途徑。
文檔編號(hào)G06Q10/00GK101520858SQ20081010108
公開(kāi)日2009年9月2日 申請(qǐng)日期2008年2月28日 優(yōu)先權(quán)日2008年2月28日
發(fā)明者張祥銀, 段海濱, 金季強(qiáng) 申請(qǐng)人:北京航空航天大學(xué)