蟻群算法

蟻群算法

模拟進化機率型算法
蟻群算法(ant colony optimization, ACO),又稱螞蟻算法,是一種用來在圖中尋找優化路徑的機率型技術。[1]它由Marco Dorigo于1992年在他的博士論文中提出,其靈感來源于螞蟻在尋找食物過程中發現路徑的行為。蟻群算法是一種模拟進化算法,初步的研究表明該算法具有許多優良的性質。針對PID控制器參數優化設計問題,将蟻群算法設計的結果與遺傳算法設計的結果進行了比較,數值仿真結果表明,蟻群算法具有一種新的模拟進化優化方法的有效性和應用價值。
    中文名:蟻群算法 外文名:ant colony optimization 别名: 簡稱:ACO 别稱:螞蟻算法

原理

設想,如果我們要為螞蟻設計一個人工智能的程序,那麼這個程序要多麼複雜呢?首先,你要讓螞蟻能夠避開障礙物,就必須根據适當的地形給它編進指令讓他們能夠巧妙的避開障礙物,其次,要讓螞蟻找到食物,就需要讓他們遍曆空間上的所有點;再次,如果要讓螞蟻找到最短的路徑,那麼需要計算所有可能的路徑并且比較它們的大小,而且更重要的是,你要小心翼翼地編程,因為程序的錯誤也許會讓你前功盡棄。這是多麼不可思議的程序!太複雜了,恐怕沒人能夠完成這樣繁瑣冗餘的程序。

然而,事實并沒有你想得那麼複雜,上面這個程序每個螞蟻的核心程序編碼不過100多行!為什麼這麼簡單的程序會讓螞蟻幹這樣複雜的事情?答案是:簡單規則的湧現。事實上,每隻螞蟻并不是像我們想象的需要知道整個世界的信息,他們其實隻關心很小範圍内的眼前信息,而且根據這些局部信息利用幾條簡單的規則進行決策,這樣,在蟻群這個集體裡,複雜性的行為就會凸現出來。這就是人工生命、複雜性科學解釋的規律!那麼,這些簡單規則是什麼呢?

問題

螞蟻究竟是怎麼找到食物的呢?在沒有螞蟻找到食物的時候,環境沒有有用的信息素,那麼螞蟻為什麼會相對有效的找到食物呢?這要歸功于螞蟻的移動規則,尤其是在沒有信息素時候的移動規則。首先,它要能盡量保持某種慣性,這樣使得螞蟻盡量向前方移動(開始,這個前方是随機固定的一個方向),而不是原地無謂的打轉或者震動;其次,螞蟻要有一定的随機性,雖然有了固定的方向,但它也不能像粒子一樣直線運動下去,而是有一個随機的幹擾。

這樣就使得螞蟻運動起來具有了一定的目的性,盡量保持原來的方向,但又有新的試探,尤其當碰到障礙物的時候它會立即改變方向,這可以看成一種選擇的過程,也就是環境的障礙物讓螞蟻的某個方向正确,而其他方向則不對。這就解釋了為什麼單個螞蟻在複雜的諸如迷宮的地圖中仍然能找到隐蔽得很好的食物。

當然,在有一隻螞蟻找到了食物的時候,大部分螞蟻會沿着信息素很快找到食物的。但不排除會出現這樣的情況:在最初的時候,一部分螞蟻通過随機選擇了同一條路徑,随着這條路徑上螞蟻釋放的信息素越來越多,更多的螞蟻也選擇這條路徑,但這條路徑并不是最優(即最短)的,所以,導緻了叠代次數完成後,螞蟻找到的不是最優解,而是次優解,這種情況下的結果可能對實際應用的意義就不大了。

螞蟻如何找到最短路徑的?這一是要歸功于信息素,另外要歸功于環境,具體說是計算機時鐘。信息素多的地方顯然經過這裡的螞蟻會多,因而會有更多的螞蟻聚集過來。假設有兩條路從窩通向食物,開始的時候,走這兩條路的螞蟻數量同樣多(或者較長的路上螞蟻多,這也無關緊要)。

當螞蟻沿着一條路到達終點以後會馬上返回來,這樣,短的路螞蟻來回一次的時間就短,這也意味着重複的頻率就快,因而在單位時間裡走過的螞蟻數目就多,灑下的信息素自然也會多,自然會有更多的螞蟻被吸引過來,從而灑下更多的信息素……;而長的路正相反,因此,越來越多地螞蟻聚集到較短的路徑上來,最短的路徑就近似找到了。

也許有人會問局部最短路徑和全局最短路的問題,實際上螞蟻逐漸接近全局最短路的,為什麼呢?這源于螞蟻會犯錯誤,也就是它會按照一定的概率不往信息素高的地方走而另辟蹊徑,這可以理解為一種創新,這種創新如果能縮短路途,那麼根據剛才叙述的原理,更多的螞蟻會被吸引過來。

詳細說明

範圍

螞蟻觀察到的範圍是一個方格世界,螞蟻有一個參數為速度半徑(一般是3),那麼它能觀察到的範圍就是3*3個方格世界,并且能移動的距離也在這個範圍之内。

環境

螞蟻所在的環境是一個虛拟的世界,其中有障礙物,有别的螞蟻,還有信息素,信息素有兩種,一種是找到食物的螞蟻灑下的食物信息素,一種是找到窩的螞蟻灑下的窩的信息素。每個螞蟻都僅僅能感知它範圍内的環境信息。環境以一定的速率讓信息素消失。

覓食規則

在每隻螞蟻能感知的範圍内尋找是否有食物,如果有就直接過去。否則看是否有信息素,并且比較在能感知的範圍内哪一點的信息素最多,這樣,它就朝信息素多的地方走,并且每隻螞蟻都會以小概率犯錯誤,從而并不是往信息素最多的點移動。螞蟻找窩的規則和上面一樣,隻不過它對窩的信息素做出反應,而對食物信息素沒反應。

移動規則

每隻螞蟻都朝向信息素最多的方向移,并且,當周圍沒有信息素指引的時候,螞蟻會按照自己原來運動的方向慣性的運動下去,并且,在運動的方向有一個随機的小的擾動。為了防止螞蟻原地轉圈,它會記住剛才走過了哪些點,如果發現要走的下一點已經在之前走過了,它就會盡量避開。

避障規則

如果螞蟻要移動的方向有障礙物擋住,它會随機的選擇另一個方向,并且有信息素指引的話,它會按照覓食的規則行為。

信息素規則

每隻螞蟻在剛找到食物或者窩的時候撒發的信息素最多,并随着它走遠的距離,播撒的信息素越來越少。

根據這幾條規則,螞蟻之間并沒有直接的關系,但是每隻螞蟻都和環境發生交互,而通過信息素這個紐帶,實際上把各個螞蟻之間關聯起來了。比如,當一隻螞蟻找到了食物,它并沒有直接告訴其它螞蟻這兒有食物,而是向環境播撒信息素,當其它的螞蟻經過它附近的時候,就會感覺到信息素的存在,進而根據信息素的指引找到了食物。

相關研究

引申

跟着螞蟻的蹤迹,你找到了什麼?通過上面的原理叙述和實際操作,我們不難發現螞蟻之所以具有智能行為,完全歸功于它的簡單行為規則,而這些規則綜合起來具有下面兩個方面的特點:

1、多樣性

2、正反饋

多樣性保證了螞蟻在覓食的時候不至走進死胡同而無限循環,正反饋機制則保證了相對優良的信息能夠被保存下來。我們可以把多樣性看成是一種創造能力,而正反饋是一種學習強化能力。正反饋的力量也可以比喻成權威的意見,而多樣性是打破權威體現的創造性,正是這兩點小心翼翼的巧妙結合才使得智能行為湧現出來了。

引申來講,大自然的進化,社會的進步、人類的創新實際上都離不開這兩樣東西,多樣性保證了系統的創新能力,正反饋保證了優良特性能夠得到強化,兩者要恰到好處的結合。如果多樣性過剩,也就是系統過于活躍,這相當于螞蟻會過多的随機運動,它就會陷入混沌狀态;而相反,多樣性不夠,正反饋機制過強,那麼系統就好比一潭死水。這在蟻群中來講就表現為,螞蟻的行為過于僵硬,當環境變化了,螞蟻群仍然不能适當的調整。

既然複雜性、智能行為是根據底層規則湧現的,既然底層規則具有多樣性和正反饋特點,那麼也許你會問這些規則是哪裡來的?多樣性和正反饋又是哪裡來的?我本人的意見:規則來源于大自然的進化。而大自然的進化根據剛才講的也體現為多樣性和正反饋的巧妙結合。而這樣的巧妙結合又是為什麼呢?為什麼在你眼前呈現的世界是如此栩栩如生呢?答案在于環境造就了這一切,之所以你看到栩栩如生的世界,是因為那些不能夠适應環境的多樣性與正反饋的結合都已經死掉了,被環境淘汰了!

搜索引擎算法

蟻群算法的由來:螞蟻是地球上最常見、數量最多的昆蟲種類之一,常常成群結隊地出現在人類的日常生活環境中。這些昆蟲的群體生物智能特征,引起了一些學者的注意。意大利學者M.Dorigo,V.Maniezzo等人在觀察螞蟻的覓食習性時發現,螞蟻總能找到巢穴與食物源之間的最短路徑。經研究發現,螞蟻的這種群體協作功能是通過一種遺留在其來往路徑上的叫做信息素(Pheromone)的揮發性化學物質來進行通信和協調的。

化學通信是螞蟻采取的基本信息交流方式之一,在螞蟻的生活習性中起着重要的作用。通過對螞蟻覓食行為的研究,他們發現,整個蟻群就是通過這種信息素進行相互協作,形成正反饋,從而使多個路徑上的螞蟻都逐漸聚集到最短的那條路徑上。

這樣,M.Dorigo等人于1991年首先提出了蟻群算法。其主要特點就是:通過正反饋、分布式協作來尋找最優路徑。這是一種基于種群尋優的啟發式搜索算法。它充分利用了生物蟻群能通過個體間簡單的信息傳遞,搜索從蟻巢至食物間最短路徑的集體尋優特征,以及該過程與旅行商問題求解之間的相似性。得到了具有NP難度的旅行商問題的最優解答。同時,該算法還被用于求解Job-Shop調度問題、二次指派問題以及多維背包問題等,顯示了其适用于組合優化類問題求解的優越特征。

多年來世界各地研究工作者對蟻群算法進行了精心研究和應用開發,該算法現已被大量應用于數據分析、機器人協作問題求解、電力、通信、水利、采礦、化工、建築、交通等領域。

蟻群算法之所以能引起相關領域研究者的注意,是因為這種求解模式能将問題求解的快速性、全局優化特征以及有限時間内答案的合理性結合起來。其中,尋優的快速性是通過正反饋式的信息傳遞和積累來保證的。而算法的早熟性收斂又可以通過其分布式計算特征加以避免,同時,具有貪婪啟發式搜索特征的蟻群系統又能在搜索過程的早期找到可以接受的問題解答。這種優越的問題分布式求解模式經過相關領域研究者的關注和努力,已經在最初的算法模型基礎上得到了很大的改進和拓展。

經過一定時間,從食物源返回的螞蟻到達D點同樣也碰到障礙物,也需要進行選擇。此時A,B兩側的信息素濃度相同,它們仍然一半向左,一半向右。但是當A側的螞蟻已經完全繞過障礙物到達C點時,B側的螞蟻由于需走的路徑更長,還不能到達C點,圖3表示蟻群在障礙物前經過一段時間後的情形。

此時對于從蟻巢出發來到C點的螞蟻來說,由于A側的信息素濃度高,B側的信息素較低,就傾向于選擇A側的路徑。這樣的結果是A側的螞蟻越來越多,最終所有螞蟻都選擇這條較短的路徑,表示蟻群最終選擇的路徑上述過程,很顯然是由螞蟻所留下的信息素的“正反饋”過程而導緻的。螞蟻個體就是通過這種信息的交流來達到搜索食物的目的。蟻群算法的基本思想也是從這個過程轉化而來的。

蟻群算法的特點:

1、蟻群算法是一種自組織的算法。在系統論中,自組織和它組織是組織的兩個基本分類,其區别在于組織力或組織指令是來自于系統的内部還是來自于系統的外部,來自于系統内部的是自組織,來自于系統外部的是他組織。如果系統在獲得空間的、時間的或者功能結構的過程中,沒有外界的特定幹預,我們便說系統是自組織的。

在抽象意義上講,自組織就是在沒有外界作用下使得系統熵減小的過程(即是系統從無序到有序的變化過程)。蟻群算法充分體現了這個過程,以螞蟻群體優化為例子說明。當算法開始的初期,單個的人工螞蟻無序的尋找解,算法經過一段時間的演化,人工螞蟻間通過信息激素的作用,自發的越來越趨向于尋找到接近最優解的一些解,這就是一個無序到有序的過程。

2、蟻群算法是一種本質上并行的算法。每隻螞蟻搜索的過程彼此獨立,僅通過信息激素進行通信。所以蟻群算法則可以看作是一個分布式的多agent系統,它在問題空間的多點同時開始進行獨立的解搜索,不僅增加了算法的可靠性,也使得算法具有較強的全局搜索能力。

3、蟻群算法是一種正反饋的算法。從真實螞蟻的覓食過程中我們不難看出,螞蟻能夠最終找到最短路徑,直接依賴于最短路徑上信息激素的堆積,而信息激素的堆積卻是一個正反饋的過程。

4、蟻群算法具有較強的魯棒性。相對于其它算法,蟻群算法對初始路線要求不高,即蟻群算法的求解結果不依賴于初始路線的選擇,而且在搜索過程中不需要進行人工的調整。其次,蟻群算法的參數數目少,設置簡單,易于蟻群算法應用到其它組合優化問題的求解。

蟻群算法的應用進展以蟻群算法為代表的蟻群智能已成為當今分布式人工智能研究的一個熱點,許多源于蜂群和蟻群模型設計的算法己越來越多地被應用于企業的運轉模式的研究。

美國五角大樓正在資助關于群智能系統的研究工作-群體戰略(Swarm Strategy),它的一個實戰用途是通過運用成群的空中無人駕駛飛行器和地面車輛來轉移敵人的注意力,讓自己的軍隊在敵人後方不被察覺地安全進行。英國電信公司和美國世界通信公司以電子螞蟻為基礎,對新的電信網絡管理方法進行了試驗。群智能還被應用于工廠生産計劃的制定和運輸部門的後勤管理。美國太平洋西南航空公司采用了一種直接源于螞蟻行為研究成果的運輸管理軟件,結果每年至少節約了1000萬美元的費用開支。

英國聯合利華公司己率先利用群智能技術改善其一家牙膏廠的運轉情況。美國通用汽車公司、法國液氣公司、荷蘭公路交通部和美國一些移民事務機構也都采用這種技術來改善其運轉的機能。鑒于群智能廣闊的應用前景,美國和歐盟均于近幾年開始出資資助基于群智能模拟的相關研究項目,并在一些院校開設群體智能的相關課程。國内,國家自然科學基金”十五”期間學科交叉類優先資助領域中的認知科學及其信息處理的研究内容中也明确列出了群智能領域的進化、自适應與現場認知主題。

蟻群優化算法最初用于解決TSP問題,經過多年的發展,已經陸續滲透到其他領域中,比如圖着色問題、大規模集成電路設計、通訊網絡中的路由問題以及負載平衡問題、車輛調度問題等。蟻群算法在若幹領域己獲得成功的應用,其中最成功的是在組合優化問題中的應用。

在網絡路由處理中,網絡的流量分布不斷變化,網絡鍊路或結點也會随機地失效或重新加入。蟻群的自身催化與正向反饋機制正好符合了這類問題的求解特點,因而,蟻群算法在網絡領域得到一定應用。蟻群覓食行為所呈現出的并行與分布特性使得算法特别适合于并行化處理。因而,實現算法的并行化執行對于大量複雜的實際應用問題的求解來說是極具潛力的。

在某群體中若存在衆多無智能的個體,它們通過相互之間的簡單合作所表現出來的智能行為即稱為集群智能(Swarm Intelligence)。互聯網上的交流,不過是更多的神經元連接(人腦)通過互聯網相互作用的結果,光纜和路由器不過是軸突和突觸的延伸。從自組織現象的角度上看,人腦的智能和蟻群也沒有本質上的區别,單個神經元沒有智能可言,單個螞蟻也沒有,但是通過連接形成的體系,是一個智能體。

相關詞條

相關搜索

其它詞條