維基百科
蟻群演算法(antcolonyoptimization,aco),又稱螞蟻演算法,是一種用來在圖中尋找優化路徑的機率型演算法。它由macro dorigo 與2023年的博士**中提出,其靈感**於螞蟻在尋找食物過程中發現路徑的行為。蟻群演算法是這一種模擬進化演算法,初步的研究表明該演算法具有許多優良的性質。自然界中,螞蟻的食物總是隨機散布於蟻巢周圍。仔細觀察就會發現,經過一段時間後,螞蟻總能找到一條從蟻巢到食物源的最短路徑。
主要原理:螞蟻在一開始時,會以相同的概率選擇路線,在運動過程中,能夠在其經過的路徑上留下資訊素,而且能感知這種物質的存在以及強度,並以此指導自己的運動方向,螞蟻傾向於往資訊素濃度高的方向移動。在相等時間內,較短路徑上的資訊量就遺留的比較多,則選擇較短路徑的螞蟻也隨之增多。螞蟻群體行為表現出了一種資訊正反饋現象,即某一路徑上走過的螞蟻越多,則後來者選擇該路徑的概率就越大,螞蟻個體之間就是通過這種資訊交流機制來搜尋食物,並最終沿著最短路徑行進。
蟻群演算法模型的建立
假設n為城市規模,i
ii和j
jj為任意兩個城市,dij
d_di
j表示城市之間的距離,bi(
t)
b_i(t)
bi(t)
表示t時刻在城市i
ii螞蟻的數量,則m=∑
i=1n
bi(t
)m=\sum_^nb_i(t)
m=∑i=1
nbi
(t)
表示螞蟻的總數量。在遍歷過程中,把螞蟻經過乙個城市稱為一次迭代,遍歷n個城市需要n次迭代(每只螞蟻下次總是走之前沒走過的城市,有個禁忌表記錄走過的城市)。螞蟻系統採用τij
(t
)\tau_(t)
τij(t
)來模仿t
tt時刻路徑i
ii到j
jj上面的資訊素殘留量。類似於螞蟻覓食過程,每條路徑上面的資訊素會揮發,如果有螞蟻經過的時候,資訊素的濃度會相應的增加。因此,螞蟻系統中的資訊素濃度的更新公式為:
τ ij
(t+n
)=ρ⋅
τij(
t)+δ
τi
j\tau_(t+n) = \rho \cdot \tau_(t) + \delta\tau_
τij(t
+n)=
ρ⋅τi
j(t
)+δτ
ij式中,ρ
\rho
ρ是乙個0到1的數字,(1-ρ
\rho
ρ)為揮發因子。另外,δτi
j\delta\tau_
δτij
表示一次旅行(遍歷所有城市)後,所有路徑i
ii到j
jj的螞蟻留下的資訊素的總量,即:
δ τi
j=∑k
=1mδ
τijk
\delta\tau_=\sum_^m\delta\tau_^k
δτij=
k=1∑
mδτ
ijk
式中,δτi
jk
\delta\tau_^k
δτijk
表示第k只螞蟻在路徑i
ii到j
jj上面留下的資訊素量。如果第k只螞蟻經過路徑i
ii到j
jj,則
δ τi
j=q/
lk
\delta\tau_ = q/l_k
δτij=
q/lk
式中,q為乙個常數,l
kl_k
lk為螞蟻已經走過路徑的總長度。否則,第k只螞蟻在i
ii到j
jj上面留下來的資訊量為0。
然後就是啟發因子的引入,ηij
=1/d
ij
\eta_=1/d_
ηij=1
/dij
。通過結合資訊素和啟發因子,可以得到螞蟻選擇路徑i
ii到j
jj的概率為:
p ij
k(t)
=(t) = \begin \frac(t)]^\alpha[\eta_]^\beta}[\tau_(t)]^\alpha[\eta_]^\beta} &j\in allowed_ \\ 0 & else \end
pijk(
t)=(t)
τij(t
)和ηi
j\eta_
ηij
的作用大小。all
owed
kallowed_
allowe
dk表示螞蟻k還沒有走過的路徑。所以如果資訊濃度τij
(t
)\tau_(t)
τij(t
)越大、路徑長度越短(對應ηij
\eta_
ηij
越大),則路徑被選擇的概率就越大
求解tsp問題的蟻群演算法中的人工螞蟻具有以下特點:
他們概率性地選擇下一條路徑,該概率與路徑長度和路徑上的資訊素濃度有關;
為了保證解的邏輯可行,螞蟻不允許選擇已經走過的路徑(通過禁忌表實現);
螞蟻走過一條路徑時會在該路徑上面分泌一種叫做資訊素的物質。
蟻群演算法求解tsp問題的直觀理解就是:
m只螞蟻遍歷禁忌表tabu(mxn)分別走遍n個城市,稱為一次迭代
每只螞蟻根據資訊素濃度和啟發式因子計算概率p來選擇下一座城市
禁忌表tabu(mxn)經過一次迭代就更新一次
資訊素濃度tau(nxn)經過一次迭代就更新一次
最大最小蟻群演算法與普通蟻群演算法區別不大,主要是每條路徑上的資訊素濃度都有個最大值最小值,每次更新都保證資訊素濃度在[min,max]區間範圍內。最小資訊素能增加對最優解探索的可能性(exploration),而最大資訊素濃度保證經驗對於螞蟻的啟發性(exploitation)。
每次都蒸發,但是每次蒸發後只有最優路徑上的資訊素會增加。這樣的收斂速度會更快
段海濱. 蟻群演算法原理及其應用[m]. 科學出版社, 2005.
蟻群優化演算法
蟻群優化演算法作為一種全域性最優化搜素方法,同遺傳演算法一樣,靈感都 於自然界,並有良好的搜素效能。然而,從數學的角度來理解分析它們的工作方式是很難的,因為這些演算法都具有很複雜的隨機過程。aco演算法的過程具有一定的隨機性,這就要求初始化螞蟻的數量和更新資訊素的次數必須足夠的多,只有這樣才能最終收...
蟻群演算法詳解
今天開始學習優化演算法,話說蟻群演算法是之前看過的,唉,今天一看都看不懂了,蟻群演算法的思想我就不說了,現在來理解一下這個 吧!該 的主要思想是 for 迭代次數 for 螞蟻個數 每個螞蟻完整的走完一遍 每個點訪問一次 end更新資訊素 end然後根據資訊素的多少找出一條路徑來 tsp的蟻群演算法...
ACO蟻群演算法
aco蟻群演算法 總結一下 在蟻群演算法中有兩個比較重要的引數資訊素濃度a,距離d,主要依靠這兩個特徵引數來推算出蟻群去往地點的概率。在比較早的時候成功解決了tsp旅行商的問題 在後面的例子中也會以這個例子 要用演算法去模擬螞蟻的這種行為,關鍵在於資訊素的在演算法中的設計,以及路徑中資訊素濃度越大的...