一、蟻群算法簡介
蟻群算法(antcolony optimization, ACO),又稱螞蟻算法,指的是一種源於自然現象的算法,也是一種 metaheuristic,即與具體問題關係不大的優化算法,也就是它是一種用來在圖中尋找優化路徑的機率型技術。它由MarcoDorigo於1992年在他的博士論文中提出,其靈感來源於螞蟻在尋找食物過程中發現路徑的行為。蟻群算法是一種模擬進化算法,初步的研究表明該算法具有許多優良的性質。針對PID控制器參數優化設計問題,將蟻群算法設計的結果與遺傳算法設計的結果進行了比較,數值仿真結果表明,蟻群算法具有一種新的模擬進化優化方法的有效性和應用價值。
二、蟻群算法原理
自然界中的螞蟻是沒有視覺的,既不知道向何處尋找食物,也不知道發現食物後如何返回自己的巢穴,它僅僅依賴於同類散發在周圍環境中的特殊物質—信息素的軌跡,來決定自己何去何從。但是儘管沒有任何先驗的知識,但螞蟻們還是有能力找到從其巢穴到食物源的最佳路徑。所以大量研究發現,同一蟻群中的螞蟻能感知信息素及其強度,後來的螞蟻會傾向於朝信息素濃度高的方向移動,而移動留下的信息素又會對原有信息素進行加強,後續的螞蟻而後續的螞蟻選擇該路徑的可能性也越大。由於在相同時間段內越短的路徑會被越多的螞蟻訪問,所以後續的螞蟻選擇較短路徑的可能性也越大,最後所有的螞蟻都走最短的那條路徑。 應該指出,以蟻群為基礎的方法能夠有效地尋找較短的路徑,但不一定是最短的路徑。
不過,對於那些難於獲得最優解的問題,如那些NP難題,這種近於最優的解法常常已經是綽綽有餘了。事實上,隨著城市數目的增多,尋找精確解很快就會變成一個無法對付的問題。
三、蟻群算法求解步驟
(1)本文要解決的問題(TSP問題)
TSP問題,又稱為旅行商問題、貨郎擔問題、TSP問題,是一個多局部最優的最優化問題:有n個城市,一個推銷員要從其中某一個城市出發,唯一走遍所有的城市,再回到他出發的城市,求最短的路線。也即求一個最短的哈密頓迴路。
TSP問題是一個組合優化問題。該問題可以被證明具有NP計算複雜性。因此,任何能使該問題的求解得以簡化的方法,都將受到高度的評價和關注。
旅行推銷員問題是數圖論中最著名的問題之一,即「已給一個n個點的完全圖,每條邊都有一個長度,求總長度最短的經過每個頂點正好一次的封閉迴路」。Edmonds,Cook和Karp等人發現,這批難題有一個值得注意的性質,對其中一個問題存在有效算法時,每個問題都會有有效算法。
迄今為止,這類問題中沒有一個找到有效算法。傾向於接受NP完全問題(NP-Complet或NPC)和NP難題(NP-Hard或NPH)不存在有效算法這一猜想,認為這類問題的大型實例不能用精確算法求解,必須尋求這類問題的有效的近似算法。
此類問題中,經典的還有子集和問題;Hamilton迴路問題;最大團問題。
本文提出的問題是:我國31個直轄市、省會和自治區首府的巡迴路線應有很多種,試著尋找一條最短路徑。
(2)算法求解步驟
四、求解結果
(1)TSP路線展示
(2)適應度函數變化(目標值變化情況)
總結:(1)蟻群算法具有很強的發現較好解的能力。由於算法本身採用正反饋原理,加快了進化過程,且不易陷入局部最優解; (2)蟻群算法具有很強的並行性,個體之間不斷進行信息交流和傳遞,有利於發現較好解。單個個體容易收斂於局部最優,多個個體通過合作,可很快收斂於解空間的某一子集,有利於對解空間的進一步探索,從而發現較好解。 存在的問題是該算法本身很複雜,一般需要較長的搜索時間;容易出現停滯現象,即搜索進行到一定程度後,所有個體所發現的解完全一致,不能對解空間進一步進行搜索,不利於發現更好的解。