自話蟻群算法(帶簡單模擬實驗)

這算是填3年前的一個坑吧刃泡,已經(jīng)懶癌晚期了,想必也還是要掙扎下闺金,那今天先從蟻群算法這個坑說起逾滥,如果你是要尋找怎么優(yōu)化蟻群算法,可以直接跳過本文败匹,如果你還不了解什么是蟻群算法寨昙,或許本文能夠提起你的興趣。

如果你同樣對遺傳算法和粒子群算法感興趣掀亩,請查看3年前我對于這兩個算法見解的文章舔哪。

簡單蟻群算法模擬實驗:

這個模擬實驗比較簡單,并沒有對信息素槽棍、路徑選擇等做優(yōu)化捉蚤,主要是方便大家查看簡單的螞蟻系統(tǒng)能夠帶來一個什么樣的效果,詳細(xì)說明見后文。

什么是蟻群算法

按百度百科的話來說炼七,蟻群算法(ant colony optimization, ACO)外里,又稱螞蟻算法,是一種用來在圖中尋找優(yōu)化路徑的機率型算法特石。它由Marco Dorigo于1992年在他的博士論文中提出盅蝗,其靈感來源于螞蟻在尋找食物過程中發(fā)現(xiàn)路徑的行為。蟻群算法是一種模擬進(jìn)化算法姆蘸,初步的研究表明該算法具有許多優(yōu)良的性質(zhì)墩莫,并且現(xiàn)在已用于我們生活的方方面面芙委。

基本原理

螞蟻在運動過程中,會留下一種稱為信息素的東西狂秦,并且會隨著移動的距離灌侣,播散的信息素越來越少,所以往往在家或者食物的周圍裂问,信息素的濃度是最強的侧啼,而螞蟻自身會根據(jù)信息素去選擇方向,當(dāng)然信息素越濃堪簿,被選擇的概率也就越大痊乾,并且信息素本身具有一定的揮發(fā)作用。 螞蟻的運動過程可以簡單歸納如下:

  1. 當(dāng)周圍沒有信息素指引時椭更,螞蟻的運動具有一定的慣性哪审,并有一定的概率選擇其他方向
  2. 當(dāng)周圍有信息素的指引時,按照信息素的濃度強度概率性的選擇運動方向
  3. 找食物時虑瀑,螞蟻留下家相關(guān)的A信息素湿滓,找家時,螞蟻留下食物相關(guān)的B信息素舌狗,并隨著移動距離的增加叽奥,灑播的信息素越來越少
  4. 隨著時間推移,信息素會自行揮發(fā)

一個簡單的例子痛侍,如果現(xiàn)在有兩條通往食物的路徑而线,一條較長路徑A,一條較短路徑B,雖然剛開始A,B路徑上都有螞蟻,又因為B比A短恋日,螞蟻通過B花費的時間較短,隨著時間的推移和信息素的揮發(fā)嘹狞,逐漸的B上的信息素濃度會強于A岂膳,這時候因為B的濃度比A強,越來越多多螞蟻會選擇B磅网,而這時候B上的濃度只會越來越強谈截。如果螞蟻一開始只在A上呢,注意螞蟻的移動具有一定小概率的隨機性涧偷,所以當(dāng)一部分螞蟻找到B時簸喂,隨著時間的推移,螞蟻會收斂到B上燎潮,從而可以跳出局部最優(yōu)喻鳄。

實驗

上面的描述可能不是很形象,現(xiàn)在我們來模擬做個小實驗确封,實驗地址Demo除呵,源碼已放在 Github

簡單蟻群實驗環(huán)境:

  • 滿足上面4點基本規(guī)則,信息素散播規(guī)則按照屏幕斜線距離/螞蟻移動距離再菊,移動距離在找到食物或者家清0(言外之意式,螞蟻最多能夠移動斜線這么遠(yuǎn)的距離颜曾,這個公式比較簡單)
  • 超過一定的移動步數(shù)未找到食物或窩的螞蟻進(jìn)行重置
  • 選擇方向的計算公式采用單元格濃度/8個方向單元格濃度總和,用輪盤賭進(jìn)行概率選擇
  • 信息素在每次迭代時纠拔,進(jìn)行統(tǒng)一揮發(fā)一個常量值

現(xiàn)在我們來看看螞蟻是否能夠找到最近的食物。

1.首先我們放置一個較遠(yuǎn)的食物A泛豪,圖中的綠色為食物稠诲,白色為螞蟻,暗藍(lán)色為家相關(guān)的信息素诡曙,顏色深淺代表濃度臀叙。

1.png

<font style="font-size:12px">注意:我們上面采用的信息素灑播規(guī)則,會讓家相關(guān)的信息素濃度圍繞著家呈梯形分布岗仑,這樣螞蟻在回家時匹耕,能夠根據(jù)濃度找到家,食物相關(guān)信息素也一樣荠雕。感興趣的朋友可以在源碼里修改信息素顯示參數(shù)稳其,顯示食物相關(guān)的信息素分布圖。</font>

2.過一會兒炸卑,我們發(fā)現(xiàn)螞蟻都聚集在這條路徑上既鞠,然后我們放一個離得很近的食物B

2.png

3.最后我們會發(fā)現(xiàn)這條路徑上的螞蟻越來越多,再過一會兒盖文,A路徑上基本沒有什么螞蟻了嘱蛋。

3.png

你有可能問,那障礙是干嘛用的五续,我當(dāng)時只是想干一件小時候經(jīng)常干的事情洒敏,如

1.一群螞蟻找到了食物

4.png

2.我攔住了他們的去路

5.png

3.最后他們還是找到了食物,壞笑

6.png

最后

如果你親自動手做實驗疙驾,你會發(fā)現(xiàn)凶伙,當(dāng)螞蟻在一條路徑上覓食很久時,你再放置一個近的食物基本沒啥效果它碎,你也可以理解為當(dāng)一只螞蟻找到一條路徑時函荣,過了很久的時間,大多數(shù)螞蟻都選擇了這條路徑扳肛,就在這時候傻挂,突然有一只螞蟻找到了較近的食物,但因為時間過得太久挖息,兩條路徑上濃度相差太大(濃度越大金拒,被選擇的概率就越大),整個系統(tǒng)基本已經(jīng)停滯了套腹,陷入了局部最優(yōu)殖蚕。所以簡單的螞蟻系統(tǒng)是存在一些問題的轿衔,如:

  1. 搜索到一定程度,會出現(xiàn)停滯狀態(tài)睦疫,陷入局部最優(yōu)的情況
  2. 盲目的隨機搜索害驹,搜索時間較長

而影響螞蟻是否能夠找到好的最優(yōu)解,依賴這幾個關(guān)鍵因素:

  1. 信息素怎么灑播(比如維持在一個特地范圍的值等)
  2. 信息素怎么揮發(fā)(除了全局揮發(fā)蛤育,可以讓螞蟻自身進(jìn)行局部揮發(fā)等手段)
  3. 通過怎樣的方式讓螞蟻選擇運動方向宛官,減少盲目性和不必要性(給螞蟻一點點智能和經(jīng)驗)
  4. 給螞蟻和環(huán)境一定的記憶能力能夠幫助減少搜索空間

如果你感興趣,可以去看看諸如最大最小蟻群算法瓦糕、排序蟻群算法底洗、基于遺傳算法的蟻群算法等一系列在基本蟻群系統(tǒng)上的優(yōu)化和改進(jìn),他們對于信息素的使用咕娄、螞蟻方向選擇等都有一套成熟的數(shù)學(xué)模型和經(jīng)驗優(yōu)化參數(shù)亥揖。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市圣勒,隨后出現(xiàn)的幾起案子费变,更是在濱河造成了極大的恐慌,老刑警劉巖圣贸,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件挚歧,死亡現(xiàn)場離奇詭異,居然都是意外死亡吁峻,警方通過查閱死者的電腦和手機滑负,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來用含,“玉大人矮慕,你說我怎么就攤上這事∽暮В” “怎么了痴鳄?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長肠缔。 經(jīng)常有香客問我,道長哼转,這世上最難降的妖魔是什么明未? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮壹蔓,結(jié)果婚禮上趟妥,老公的妹妹穿的比我還像新娘。我一直安慰自己佣蓉,他們只是感情好披摄,可當(dāng)我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布亲雪。 她就那樣靜靜地躺著,像睡著了一般疚膊。 火紅的嫁衣襯著肌膚如雪义辕。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天寓盗,我揣著相機與錄音灌砖,去河邊找鬼。 笑死傀蚌,一個胖子當(dāng)著我的面吹牛基显,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播善炫,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼撩幽,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了箩艺?” 一聲冷哼從身側(cè)響起窜醉,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎舅桩,沒想到半個月后酱虎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡擂涛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年读串,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片撒妈。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡恢暖,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出狰右,到底是詐尸還是另有隱情杰捂,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布棋蚌,位于F島的核電站嫁佳,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏谷暮。R本人自食惡果不足惜蒿往,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望湿弦。 院中可真熱鬧瓤漏,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至饥漫,卻和暖如春榨呆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背趾浅。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工愕提, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人皿哨。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓浅侨,卻偏偏與公主長得像,于是被迫代替她去往敵國和親证膨。 傳聞我的和親對象是個殘疾皇子如输,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容