帶流程**釋
** wang_s_k部落格螞蟻在運動過程中,會留下一種稱為資訊素的東西,並且會隨著移動的距離,播散的資訊素越來越少,所以往往在家或者食物的周圍,資訊素的濃度是最強的,而螞蟻自身會根據資訊素去選擇方向,當然資訊素越濃,被選擇的概率也就越大,並且資訊素本身具有一定的揮發作用。 螞蟻的運動過程可以簡單歸納如下:
當周圍沒有資訊素指引時,螞蟻的運動具有一定的慣性,並有一定的概率選擇其他方向
當周圍有資訊素的指引時,按照資訊素的濃度強度概率性的選擇運動方向
找食物時,螞蟻留下家相關的a資訊素,找家時,螞蟻留下食物相關的b資訊素,並隨著移動距離的增加,灑播的資訊素越來越少
隨著時間推移,資訊素會自行揮發
乙個簡單的例子,如果現在有兩條通往食物的路徑,一條較長路徑a,一條較短路徑b,雖然剛開始a,b路徑上都有螞蟻,又因為b比a短,螞蟻通過b花費的時間較短,隨著時間的推移和資訊素的揮發,逐漸的b上的資訊素濃度會強於a,這時候因為b的濃度比a強,越來越多多螞蟻會選擇b,而這時候b上的濃度只會越來越強。如果螞蟻一開始只在a上呢,注意螞蟻的移動具有一定小概率的隨機性,所以當一部分螞蟻找到b時,隨著時間的推移,螞蟻會收斂到b上,從而可以跳出區域性最優。
** wang_s_k部落格以tsp問題為例,演算法設計流程:
步驟1 :
步驟2 :
隨機將螞蟻放於不同的出發點,對每個螞蟻計算其下個訪問城市,直到有螞蟻訪問完所有的城市。
步驟3 :
計算各螞蟻經過的路徑長度lk,記錄當前迭代次數最優解,同時對路徑上的資訊素濃度進行更新。
步驟4 :
判斷是否到達迭代次數,若否,返回步驟2;是,結束程式。
步驟5 :
輸出結果,並根據需要輸出尋優過程中的相關指標,如執行時間、迭代次數等。
符號說明:
m:整個螞蟻群體中螞蟻數量;初始時刻螞蟻被放在不同的城市,且各城市路徑上的資訊素濃度為0。n:城市的數量;
dij:城市ii與城市jj的距離
βij(t):t時刻城市ii和城市jj連線路徑上的資訊素;
pkij(t):t時刻螞蟻k從城市ii轉移到城市jj的概率;
由於蟻群演算法涉及到的引數蠻多的,且這些引數的選擇對程式又都有一定的影響,所以選擇合適的引數組合很重要。蟻群演算法有個特點就是在尋優的過程中,帶有一定的隨機性,這種隨機性主要體現在出發點的選擇上。蟻群演算法正是通過這個初始點的選擇將全域性尋優慢慢轉化為區域性尋優的。引數設定的關鍵就在於在「全域性」和「區域性」之間建立乙個平衡點。
在蟻群演算法的發展中,關鍵引數的設定有一定的準則,一般來講遵循以下幾條:
盡可能在全域性上搜尋最優解,保證解的最優性;螞蟻數量:演算法盡快收斂,以節省尋優時間;
盡量反應客觀存在的規律,以保證這類仿生演算法的真實性。
設m表示城市數量,m表示螞蟻數量。m的數量很重要,因為m過大時,會導致搜尋過的路徑上資訊素變化趨於平均,這樣就不好找出好的路徑了;m過小時,易使未被搜尋到的路徑資訊素減小到0,這樣可能會出現早熟,沒找到全域性最優解。一般上,在時間等資源條件緊迫的情況下,螞蟻數設定為城市數的1.5倍較穩妥。
資訊素因子:
資訊素因子反映了螞蟻在移動過程中所積累的資訊量在指導蟻群搜尋中的相對重要程度,其值過大,螞蟻選擇以前走過的路徑概率大,搜尋隨機性減弱;值過小,等同於貪婪演算法,使搜尋過早陷入區域性最優。實驗發現,資訊素因子選擇[1,4]區間,效能較好。
啟發函式因子:
啟發函式因子反映了啟發式資訊在指導蟻群搜尋過程中的相對重要程度,其大小反映的是蟻群尋優過程中先驗性和確定性因素的作用強度。過大時,雖然收斂速度會加快,但容易陷入區域性最優;過小時,容易陷入隨機搜尋,找不到最優解。實驗研究發現,當啟發函式因子為[3,4.5]時,綜合求解效能較好。
資訊素揮發因子:
資訊素揮發因子表示資訊素的消失水平,它的大小直接關係到蟻群演算法的全域性搜尋能力和收斂速度。實驗發現,當屬於[0.2,0.5]時,綜合性能較好。
資訊素常數:
這個引數為資訊素強度,表示螞蟻迴圈一周時釋放在路徑上的資訊素總量,其作用是為了充分利用有向圖上的全域性資訊反饋量,使演算法在正反饋機制作用下以合理的演化速度搜尋到全域性最優解。值越大,螞蟻在已遍歷路徑上的資訊素積累越快,有助於快速收斂。實驗發現,當值屬於[10,1000]時,綜合性能較好。
最大迭代次數:
最大迭代次數值過小,可能導致演算法還沒收斂就已結束;過大則會導致資源浪費。一般最大迭代次數可以取100到500次。一般來講,建議先取200,然後根據執行程式檢視演算法收斂的軌跡來修改取值。
組合引數設計策略:通常可以按照以下策略來進行引數組合設定:
1. 確定螞蟻數目,螞蟻數目與城市規模之比約為1.5;
2. 引數粗調,即調整取值範圍較大的α,β及qα,β及q;
3. 引數微調,即調整取值範圍較小的ρ
蟻群優化演算法
蟻群優化演算法作為一種全域性最優化搜素方法,同遺傳演算法一樣,靈感都 於自然界,並有良好的搜素效能。然而,從數學的角度來理解分析它們的工作方式是很難的,因為這些演算法都具有很複雜的隨機過程。aco演算法的過程具有一定的隨機性,這就要求初始化螞蟻的數量和更新資訊素的次數必須足夠的多,只有這樣才能最終收...
蟻群演算法及其優化總結
今天了解了蟻群演算法,它的引數有點點複雜 太多了 主要就是資訊素濃的控制。推薦 智慧型演算法 蟻群演算法 taoliu alex 在aca的基礎上進行優化,提出了 螞蟻 q系統 ant q system 蟻群系統 ant colony system,acs 最大最小螞蟻系統 max min ant ...
現代優化演算法之蟻群演算法
參考一篇 an ant colony optimization algorithm for image edge detection 來嘗試說清楚蟻群優化演算法的大概流程。蟻群演算法是一種群體智慧型演算法,這類演算法主要是依靠隨機選擇加上 目標函式 引導來拓寬解的搜尋能力。我個人覺得這一類的群體演算...