最大最小蟻群演算法的理解

2021-10-09 07:49:12 字數 3115 閱讀 3545

維基百科

蟻群演算法(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

n​bi

​(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旅行商的問題 在後面的例子中也會以這個例子 要用演算法去模擬螞蟻的這種行為,關鍵在於資訊素的在演算法中的設計,以及路徑中資訊素濃度越大的...