【蟻群演算法】

lijieshare發表於2018-01-20

蟻群演算法的基本思想來源於自然界螞蟻覓食的最短路徑原理,根據昆蟲科學家的觀察,發現自然界的螞蟻雖然視覺不發達,但它們可以在沒有任何提示的情況下找到從食物源到巢穴的最短路徑,並在周圍環境發生變化後,自適應地搜尋新的最佳路徑。

 

螞蟻在尋找食物源的時候,能在其走過的路徑上釋放一種叫資訊素的激素,使一定範圍內的其他螞蟻能夠察覺到。當一些路徑上通過的螞蟻越來越多時,資訊素也就越來越多,螞蟻們選擇這條路徑的概率也就越高,結果導致這條路徑上的資訊素又增多,螞蟻走這條路的概率又增加,生生不息。這種選擇過程被稱為螞蟻的自催化行為。對於單個螞蟻來說,它並沒有要尋找最短路徑,只是根據概率選擇;對於整個蟻群系統來說,它們卻達到了尋找到最優路徑的客觀上的效果。這就是群體智慧。

 

蟻群演算法是一個尋找最優路徑的方法,在螞蟻的世界,每天的工作就是找食物,搬食物。首先,每個螞蟻在沒找到食物的時候,它們的行動會有一定的慣性,也就是說他們會朝著一個方向一直走,但這不是絕對的,那要是一直走也找不到食物豈不是要累死。在它們遇見障礙的時候就會改變方向,這個方向是隨機的,這是螞蟻的行動看起來不像一個傻子一樣,起碼還知道遇到障礙物躲開。但是這個舉動往往是蟻群演算法能找到路徑的關鍵,因為他不是一成不變的,螞蟻在行動的時候會有一定的隨機性,用在現代我們叫做創新。螞蟻懂得創新,你說它厲不厲害!怪不得螞蟻總能找到最短的路徑。

 

當螞蟻找到食物的時候,就會向環境周圍散發一種資訊素,當然了,資訊素是在一定範圍內有效的,隨著時間推移會消失,跟噴了香水一樣大笑。其他的螞蟻如果發現這種資訊素了就會過來,這樣,就會有更多的螞蟻找到食物。當然了,如果最開始的螞蟻找到的路徑可能不是最優的,那麼螞蟻是怎樣找到最優的路徑呢?這就要歸功於螞蟻的創新精神了。在螞蟻感受到資訊素的時候他會沿著資訊素多的方向走,但是他們偶爾也會另闢蹊徑,如果他們通過這條路也找到了食物,而且這條路比之前的路更短,那麼逐漸的更多的螞蟻會被吸引到這條路徑上來。為什麼會有這樣的事情發生呢?因為在相同的時間裡,路徑越短,螞蟻走的次數就越多,散發的資訊素濃度越高。

 

 

蟻群演算法能做什麼

蟻群演算法根據模擬螞蟻尋找食物的最短路徑行為來設計的仿生演算法,因此一般而言,蟻群演算法用來解決最短路徑問題,並真的在旅行商問題(TSP,一個尋找最短路徑的問題)上取得了比較好的成效。目前,也已漸漸應用到其他領域中去,在圖著色問題、車輛排程問題、積體電路設計、通訊網路、資料聚類分析等方面都有所應用。

 

 

規則

(1)感知範圍

螞蟻觀察到的範圍是一個方格世界,相關引數為速度半徑,一般為3,可觀察和移動的範圍為3x3方格。

(2)環境資訊

螞蟻所在環境中有障礙物、其他螞蟻、資訊素,其中資訊素包括食物資訊素(找到食物的螞蟻留下的)、窩資訊素(找到窩的螞蟻留下的),資訊素以一定速率消失。

(3)覓食規則

螞蟻在感知範圍內尋找食物,如果感知到就會過去;否則朝資訊素多的地方走,每隻螞蟻會以小概率犯錯誤,並非都往資訊素最多的方向移動。螞蟻找窩的規則類似,僅對窩資訊素有反應。

(4)移動規則

螞蟻朝資訊素最多的方向移動,當週圍沒有資訊素指引時,會按照原來運動方向慣性移動。而且會記住最近走過的點,防止原地轉圈。

(5)避障規則

當螞蟻待移動方向有障礙物時,將隨機選擇其他方向;當有資訊素指引時,將按照覓食規則移動。

(6)散發資訊素規則

在剛找到食物或者窩時,螞蟻散發的資訊素最多;當隨著走遠時,散發的資訊素將逐漸減少。

 

 

蟻群演算法的關鍵引數

螞蟻數量: 

設M表示城市數量,m表示螞蟻數量。m的數量很重要,因為m過大時,會導致搜尋過的路徑上資訊素變化趨於平均,這樣就不好找出好的路徑了;m過小時,易使未被搜尋到的路徑資訊素減小到0,這樣可能會出現早熟,沒找到全域性最優解。一般上,在時間等資源條件緊迫的情況下,螞蟻數設定為城市數的1.5倍較穩妥。

 

資訊素因子: 

資訊素因子反映了螞蟻在移動過程中所積累的資訊量在指導蟻群搜尋中的相對重要程度,其值過大,螞蟻選擇以前走過的路徑概率大,搜尋隨機性減弱;值過小,等同於貪婪演算法,使搜尋過早陷入區域性最優。實驗發現,資訊素因子選擇[1,4]區間,效能較好。

 

啟發函式因子: 

啟發函式因子反映了啟發式資訊在指導蟻群搜尋過程中的相對重要程度,其大小反映的是蟻群尋優過程中先驗性和確定性因素的作用強度。過大時,雖然收斂速度會加快,但容易陷入區域性最優;過小時,容易陷入隨機搜尋,找不到最優解。實驗研究發現,當啟發函式因子為[3,4.5]時,綜合求解效能較好。

 

資訊素揮發因子: 

資訊素揮發因子表示資訊素的消失水平,它的大小直接關係到蟻群演算法的全域性搜尋能力和收斂速度。實驗發現,當屬於[0.2,0.5]時,綜合效能較好。

 

資訊素常數: 

這個引數為資訊素強度,表示螞蟻迴圈一週時釋放在路徑上的資訊素總量,其作用是為了充分利用有向圖上的全域性資訊反饋量,使演算法在正反饋機制作用下以合理的演化速度搜尋到全域性最優解。值越大,螞蟻在已遍歷路徑上的資訊素積累越快,有助於快速收斂。實驗發現,當值屬於[10,1000]時,綜合效能較好。

 

最大迭代次數: 

最大迭代次數值過小,可能導致演算法還沒收斂就已結束;過大則會導致資源浪費。一般最大迭代次數可以取100到500次。一般來講,建議先取200,然後根據執行程式檢視演算法收斂的軌跡來修改取值。

 

應用

該演算法應用於其他組合優化問題,如旅行商問題、指派問題、Job—shop排程問題、車輛路由問題、圖著色問題和網路路由問題等。最近幾年,該演算法在網路路由中的應用受到越來越多學者的關注,並提出了一些新的基於螞蟻演算法的路由演算法。同傳統的路由演算法相比較,該演算法在網路路由中具有資訊分散式性、動態性、隨機性和非同步性等特點,而這些特點正好能滿足網路路由的需要。

相關文章