蟻群演算法(ACO)

2021-09-12 02:23:57 字數 1759 閱讀 7718

參考:

今天導師開會,同門作報告,題目大概是***的多步**…

中間提到一句——「使用蟻群演算法優化神經網路的初始權值和閾值」

遂查資料了解該演算法的實質與用法,或許寫**會用上吧。

蟻群演算法(ant colony optimization, aco),又稱螞蟻演算法,是一種用來在圖中尋找優化路徑的機率型演算法。它由marco dorigo於2023年在他的博士**中提出,其靈感**於螞蟻在尋找食物過程中發現路徑的行為。蟻群演算法是一種模擬進化演算法,初步的研究表明該演算法具有許多優良的性質。針對pid控制器引數優化設計問題,將蟻群演算法設計的結果與遺傳演算法設計的結果進行了比較,數值**結果表明,蟻群演算法具有一種新的模擬進化優化方法的有效性和應用價值。

各個螞蟻在沒有事先告訴他們食物在什麼地方的前提下開始尋找食物。當乙隻找到食物以後,它會向環境釋放一種揮發性分泌物pheromone (稱為資訊素,該物質隨著時間的推移會逐漸揮發消失,資訊素濃度的大小表徵路徑的遠近)來實現的,吸引其他的螞蟻過來,這樣越來越多的螞蟻會找到食物。

有些螞蟻並沒有像其它螞蟻一樣總重複同樣的路,他們會另闢蹊徑,如果另開闢的道路比原來的其他道路更短,那麼,漸漸地,更多的螞蟻被吸引到這條較短的路上來。

最後,經過一段時間執行,可能會出現一條最短的路徑被大多數螞蟻重複著。

蟻群演算法是一種仿生學演算法,是由自然界中螞蟻覓食的行為而啟發的。在自然界中,螞蟻覓食過程中,蟻群總能夠按照尋找到一條從蟻巢和食物源的最優路徑。下圖顯示了這樣乙個覓食的過程。

在圖(a)中,有一群螞蟻,假如a是蟻巢,e是食物源(反之亦然)。

這群螞蟻將沿著蟻巢和食物源之間的直線路徑行駛。假如在a和e之間突然出現了乙個障礙物(圖(b)),那麼,在b點(或d點)的螞蟻將要做出決策,到底是向左行駛還是向右行駛?由於一開始路上沒有前面螞蟻留下的資訊素(pheromone),螞蟻朝著兩個方向行進的概率是相等的。但是當有螞蟻走過時,它將會在它行進的路上釋放出資訊素,並且這種資訊素會議一定的速率散發掉。資訊素是螞蟻之間交流的工具之一。它後面的螞蟻通過路上資訊素的濃度,做出決策,往左還是往右。很明顯,沿著短邊的的路徑上資訊素將會越來越濃(圖(c)),從而吸引了越來越多的螞蟻沿著這條路徑行駛。

(1)初始化

設t=0,初始化bestlength為乙個非常大的數(正無窮),besttour為空。初始化所有的螞蟻的delt矩陣所有元素初始化為0,tabu表清空,allowed表中加入所有的城市節點。隨機選擇它們的起始位置(也可以人工指定)。在tabu中加入起始節點,allowed中去掉該起始節點。

(2)為每只螞蟻選擇下乙個節點

為每只螞蟻選擇下乙個節點,該節點只能從allowed中以某種概率(公式1)搜尋到,每搜到乙個,就將該節點加入到tabu中,並且從allowed中刪除該節點。該過程重複n-1次,直到所有的城市都遍歷過一次。遍歷完所有節點後,將起始節點加入到tabu中。此時tabu表元素數量為n+1(n為城市數量),allowed元素數量為0。接下來按照(公式2)計算每個螞蟻的delta矩陣值。最後計算最佳路徑,比較每個螞蟻的路徑成本,然後和bestlength比較,若它的路徑成本比bestlength小,則將該值賦予bestlength,並且將其tabu賦予besttour。

(3)更新資訊素矩陣delta

(4)檢查終止條件,是否到達max_gen次

(5)輸出最優值bestlength

ACO蟻群演算法

aco蟻群演算法 總結一下 在蟻群演算法中有兩個比較重要的引數資訊素濃度a,距離d,主要依靠這兩個特徵引數來推算出蟻群去往地點的概率。在比較早的時候成功解決了tsp旅行商的問題 在後面的例子中也會以這個例子 要用演算法去模擬螞蟻的這種行為,關鍵在於資訊素的在演算法中的設計,以及路徑中資訊素濃度越大的...

4 1蟻群演算法 ACO 原理

檢視完整原理 1aco原理 蟻群演算法最早是由marco dorigo等人在1991年提出,他們在研究新型演算法的過程中,發現蟻群在尋找食物時,通過分泌一種稱為資訊素的生物激素交流覓食資訊從而能快速的找到目標,據此提出了基於資訊正反饋原理的蟻群演算法。蟻群演算法的基本思想 於自然界螞蟻覓食的最短路徑...

蟻群優化演算法

蟻群優化演算法作為一種全域性最優化搜素方法,同遺傳演算法一樣,靈感都 於自然界,並有良好的搜素效能。然而,從數學的角度來理解分析它們的工作方式是很難的,因為這些演算法都具有很複雜的隨機過程。aco演算法的過程具有一定的隨機性,這就要求初始化螞蟻的數量和更新資訊素的次數必須足夠的多,只有這樣才能最終收...