參考一篇**《an ant colony optimization algorithm for image edge detection》來嘗試說清楚蟻群優化演算法的大概流程。
蟻群演算法是一種群體智慧型演算法,這類演算法主要是依靠隨機選擇加上(目標函式)引導來拓寬解的搜尋能力。我個人覺得這一類的群體演算法在概率上並不能保證得到的結果都是最優的,因此會出現不可控性。但是它的表示能力比較強,許多難以用數學函式描述的問題,能夠借助群體智慧型演算法來就行巧妙地求解,且能得到乙個滿意的解,群體智慧型演算法的另乙個優點是易於實現並行化。
1.初始化
蟻群演算法在初始的情況下,會隨機出現一定數量的螞蟻來搜尋食物。比如**中:在nr
ow×n
col 大小的影象中,隨機生成k(ant_total_num)只螞蟻:
temp = rand(ant_total_num, 2);
ant_pos_idx(:,1) = round(1 + (nrow-1) * temp(:,1));
ant_pos_idx(:,2) = round(1 + (ncol-1) * temp(:,2));
螞蟻在運動過程中所攜帶的資訊素初始為:
p = 0.0001 .* ones(size(img));
2.構造解p(
n)(l
,m),
(i,j
)=(τ
(n−1
)i,j
)α(η
i,j)
β∑(i
,j)∈
ω(l,
m)(τ
(n−1
)i,j
)α(η
i,j)
β ω(
l,m)
表示當前畫素點的(i,j)的鄰域,ηi
,j是啟發式資訊,也是能夠檢測邊緣的決定部分。
**中是這樣定義ηi
,j的:
其實就是利用亮度的差分運算來得到類邊緣資訊,因此這一步就相當於可以得到粗略的邊緣了,下圖是η(
i,j)
(實驗物件是cameraman.bmp:128*128)。
構造解之後,就進入下一步的更新,不斷迴圈2-3。
3.資訊素迭代更新
依據資訊素隨著時間的推移會減弱甚至完全消失,如果有不同的螞蟻都經過同一路徑,資訊素可能會增強,按照經典的蟻群演算法來更新資訊素,每乙隻螞蟻資訊素的更新:
其中,δ(k
)i,j
就是η(
i,j)
,ρ是常數。
全部螞蟻按照上式更新完,進行下一輪迭代的更新:
設定停止迭代次數後,用二值化的方法能得到最終的邊緣。
結果及結論
該**預設引數得到的結果為:
對比發現,竟然不如上面的亮度差分得到的結果好,但是用蟻群演算法,可以算的上是乙個小創新。
其他的不足之處:執行時間長,邊緣出現斷續,引數不好調。這也是其他群體智慧型演算法會有的缺點。
現代優化演算法(五) 蟻群演算法
組合優化演算法系列 現代優化演算法 一 模擬退火演算法 及應用舉例 現代優化演算法 二 遺傳演算法 及應用舉例 現代優化演算法 三 禁忌搜尋演算法 現代優化演算法 四 改進的遺傳演算法 現代優化演算法 五 蟻群演算法 目錄 1 蟻群演算法簡介 2 解決tsp 問題的蟻群演算法描述 人工蟻群演算法的求...
蟻群優化演算法
蟻群優化演算法作為一種全域性最優化搜素方法,同遺傳演算法一樣,靈感都 於自然界,並有良好的搜素效能。然而,從數學的角度來理解分析它們的工作方式是很難的,因為這些演算法都具有很複雜的隨機過程。aco演算法的過程具有一定的隨機性,這就要求初始化螞蟻的數量和更新資訊素的次數必須足夠的多,只有這樣才能最終收...
蟻群演算法及其優化總結
今天了解了蟻群演算法,它的引數有點點複雜 太多了 主要就是資訊素濃的控制。推薦 智慧型演算法 蟻群演算法 taoliu alex 在aca的基礎上進行優化,提出了 螞蟻 q系統 ant q system 蟻群系統 ant colony system,acs 最大最小螞蟻系統 max min ant ...