一、蟻路演算法由來:
蟻路演算法又稱益群演算法,螞蟻在尋找食物源的時候,能在其走過的路徑上釋放一種叫資訊素的激素,使一定範圍內的其他螞蟻能夠察覺到。當一些路徑上通過的螞蟻越來越多時,資訊素也就越來越多,螞蟻們選擇這條路徑的概率也就越高,結果導致這條路徑上的資訊素又增多,螞蟻走這條路的概率又增加,生生不息。這種選擇過程被稱為螞蟻的自催化行為。對於單個螞蟻來說,它並沒有要尋找最短路徑,只是根據概率選擇;對於整個蟻群系統來說,它們卻達到了尋找到最優路徑的客觀上的效果。這就是群體智慧型。
蟻群演算法最早是由marco dorigo等人在2023年提出,他們在研究新型演算法的過程中,發現蟻群在尋找食物時,通過分泌一種稱為資訊素的生物激素交流覓食資訊從而能快速的找到目標,據此提出了基於資訊正反饋原理的蟻群演算法。
蟻群演算法的基本思想**於自然界螞蟻覓食的最短路徑原理,根據昆蟲科學家的觀察,發現自然界的螞蟻雖然視覺不發達,但它們可以在沒有任何提示的情況下找到從食物源到巢穴的最短路徑,並在周圍環境發生變化後,自適應地搜尋新的最佳路徑。
蟻路演算法的流程:
步驟1:對相關引數進行初始化,包括蟻群規模、資訊素因子、啟發函式因子、資訊素揮發因子、資訊素常數、最大迭代次數等,以及將資料讀入程式,並進行預處理:比如將城市的座標資訊轉換為城市間的距離矩陣。
步驟2:隨機將螞蟻放於不同出發點,對每個螞蟻計算其下個訪問城市,直到有螞蟻訪問完所有城市。
步驟3:計算各螞蟻經過的路徑長度lk,記錄當前迭代次數最優解,同時對路徑上的資訊素濃度進行更新。
步驟4:判斷是否達到最大迭代次數,若否,返回步驟2;是,結束程式。
符號:
初始時刻螞蟻被放在不同的城市,且各城市路徑上的資訊素濃度為0。m:整個螞蟻群體中螞蟻數量;
n:城市的數量;
dij:城市i與城市j的距離
βij(t):t時刻城市i和城市j連線路徑上的資訊素;
pkij(t):t時刻螞蟻k從城市i轉移到城市j的概率;
由於蟻群演算法涉及到的引數蠻多的,且這些引數的選擇對程式又都有一定的影響,所以選擇合適的引數組合很重要。蟻群演算法有個特點就是在尋優的過程中,帶有一定的隨機性,這種隨機性主要體現在出發點的選擇上。蟻群演算法正是通過這個初始點的選擇將全域性尋優慢慢轉化為區域性尋優的。引數設定的關鍵就在於在「全域性」和「區域性」之間建立乙個平衡點。
二、蟻路演算法規則:
(1).盡可能在全域性上搜尋最優解,保證解的最優性;
(2).演算法盡快收斂,以節省尋優時間;
(3).盡量反應客觀存在的規律,以保證這類仿生演算法的真實性。
三、蟻路演算法關鍵引數:
(1).螞蟻數量:
設m表示城市數量,m表示螞蟻數量。m的數量很重要,因為m過大時,會導致搜尋過的路徑上資訊素變化趨於平均,這樣就不好找出好的路徑了;m過小時,易使未被搜尋到的路徑資訊素減小到0,這樣可能會出現早熟,沒找到全域性最優解。一般上,在時間等資源條件緊迫的情況下,螞蟻數設定為城市數的1.5倍較穩妥。
(2).資訊素因子:
資訊素因子反映了螞蟻在移動過程中所積累的資訊量在指導蟻群搜尋中的相對重要程度,其值過大,螞蟻選擇以前走過的路徑概率大,搜尋隨機性減弱;值過小,等同於貪婪演算法,使搜尋過早陷入區域性最優。實驗發現,資訊素因子選擇[1,4]區間,效能較好。
(3).啟發函式因子:
啟發函式因子反映了啟發式資訊在指導蟻群搜尋過程中的相對重要程度,其大小反映的是蟻群尋優過程中先驗性和確定性因素的作用強度。過大時,雖然收斂速度會加快,但容易陷入區域性最優;過小時,容易陷入隨機搜尋,找不到最優解。實驗研究發現,當啟發函式因子為[3,4.5]時,綜合求解效能較好。
(4).資訊素揮發因子:
資訊素揮發因子表示資訊素的消失水平,它的大小直接關係到蟻群演算法的全域性搜尋能力和收斂速度。實驗發現,當屬於[0.2,0.5]時,綜合性能較好。
(5).資訊素常數:
這個引數為資訊素強度,表示螞蟻迴圈一周時釋放在路徑上的資訊素總量,其作用是為了充分利用有向圖上的全域性資訊反饋量,使演算法在正反饋機制作用下以合理的演化速度搜尋到全域性最優解。值越大,螞蟻在已遍歷路徑上的資訊素積累越快,有助於快速收斂。實驗發現,當值屬於[10,1000]時,綜合性能較好。
(6).最大迭代次數:
最大迭代次數值過小,可能導致演算法還沒收斂就已結束;過大則會導致資源浪費。一般最大迭代次數可以取100到500次。一般來講,建議先取200,然後根據執行程式檢視演算法收斂的軌跡來修改取值。
四、組合引數設計策略:
通常可以按照以下策略來進行引數組合設定:
1. 確定螞蟻數目,螞蟻數目與城市規模之比約為1.5;
2. 引數粗調,即調整取值範圍較大的α,β及q;
3. 引數微調,即調整取值範圍較小的ρ
五、蟻路演算法用途:
蟻群演算法根據模擬螞蟻尋找食物的最短路徑行為來設計的仿生演算法,因此一般而言,蟻群演算法用來解決最短路徑問題,並真的在旅行商問題(tsp,乙個尋找最短路徑的問題)上取得了比較好的成效。目前,也已漸漸應用到其他領域中去,在圖著色問題、車輛排程問題、積體電路設計、通訊網路、資料聚類分析等方面都有所應用。
蟻群演算法詳解
今天開始學習優化演算法,話說蟻群演算法是之前看過的,唉,今天一看都看不懂了,蟻群演算法的思想我就不說了,現在來理解一下這個 吧!該 的主要思想是 for 迭代次數 for 螞蟻個數 每個螞蟻完整的走完一遍 每個點訪問一次 end更新資訊素 end然後根據資訊素的多少找出一條路徑來 tsp的蟻群演算法...
蟻群演算法 旅行商(TSP)問題詳解
蟻群演算法 ant colony optimization 最早是由marco dorigo等人在1991年提出,他們在研究新型演算法的過程中,發現蟻群在尋找食物時,通過分泌一種稱為資訊素的生物激素交流覓食資訊從而能快速的找到目標,據此提出了基於資訊正反饋原理的蟻群演算法。蟻群演算法的基本思想 於自...
蟻群優化演算法
蟻群優化演算法作為一種全域性最優化搜素方法,同遺傳演算法一樣,靈感都 於自然界,並有良好的搜素效能。然而,從數學的角度來理解分析它們的工作方式是很難的,因為這些演算法都具有很複雜的隨機過程。aco演算法的過程具有一定的隨機性,這就要求初始化螞蟻的數量和更新資訊素的次數必須足夠的多,只有這樣才能最終收...