優(yōu)化算法筆記(二十二)蟻獅算法

1. 蟻獅算法簡(jiǎn)介

(以下描述但狭,均不是學(xué)術(shù)用語(yǔ)窥岩,僅供大家快樂的閱讀)
  蟻獅是一種昆蟲甲献,城里長(zhǎng)大的我沒有見過這玩意兒,請(qǐng)教了農(nóng)村長(zhǎng)大小的伙伴颂翼,依然沒見過晃洒,這玩意兒可能在我們生活的地方分布較少。


(圖片及介紹來自百度百科)
  蟻獅算法(Ant Lion Optimization)是根據(jù)蟻獅挖制漏斗狀陷阱進(jìn)行捕食螞蟻的過程提出的優(yōu)化算法朦乏。算法提出于2015年(2014年末)球及,也是一個(gè)比較新的算法,不過好像相關(guān)的論文也比較多了呻疹。算法的過程和操作步驟比較簡(jiǎn)單吃引,算法的效果卻出乎意料的好,不過算法的實(shí)現(xiàn)與蟻獅的行為不是很匹配刽锤,但這也不會(huì)影響我們的理解镊尺。
  蟻獅算法中,每個(gè)蟻獅以及螞蟻的位置表示解空間中的一個(gè)可行解并思。螞蟻在選擇一個(gè)蟻獅庐氮,在其陷阱范圍內(nèi)進(jìn)行隨機(jī)游走(random walk)。蟻獅會(huì)吃掉陷阱范圍內(nèi)位置最優(yōu)的個(gè)體(取代其位置)宋彼。
  可以看出算法的主要步驟很簡(jiǎn)單旭愧,不過其具體實(shí)現(xiàn)與捕食過程還是有些許不同,當(dāng)然螞蟻也不可能會(huì)自愿的圍繞蟻獅的陷阱為中心進(jìn)行隨機(jī)游走宙暇。具體的算法將在下一節(jié)中詳細(xì)描述输枯。

2. 算法流程

蟻獅算法中有兩種角色,蟻獅和螞蟻占贫,其數(shù)量均為N, 其位置為X=(x^1,x^2,...,x^D) 桃熄,其適應(yīng)度值為F(x) 。為了方便描述,下面使用X_AL表示蟻獅的位置瞳收,X_A表示螞蟻的位置碉京。
初始化時(shí),會(huì)在解空間內(nèi)隨機(jī)初始化N個(gè)蟻獅以及N個(gè)螞蟻螟深,下面是其迭代步驟谐宙。
整個(gè)算法的流程大致可以分為四步:
  1. 螞蟻選擇目標(biāo)蟻獅陷阱。(自投羅網(wǎng)界弧,說吧凡蜻,你是選擇清蒸還是紅燒)
  2. 計(jì)算陷阱的放縮比例。
  3. 螞蟻隨機(jī)游走垢箕。
  4. 蟻獅移動(dòng)到指定螞蟻的位置划栓。

2.1螞蟻選擇目標(biāo)蟻獅

每一只螞蟻都要選擇一個(gè)目標(biāo)蟻獅來進(jìn)行后續(xù)的隨機(jī)游走,選擇過程可以隨機(jī)選擇也可以使用輪盤賭的方式進(jìn)行選擇条获,具體的實(shí)現(xiàn)比較簡(jiǎn)單忠荞,不在贅述。(輪盤賭參見遺傳算法)帅掘。

2.2計(jì)算陷阱的比例

該步驟計(jì)算陷阱(相對(duì)搜索空間)的大小委煤,用于下一步中確定螞蟻隨機(jī)游走后的位置。
論文中修档,陷阱的大小與個(gè)體無關(guān)碧绞,只與當(dāng)前迭代次數(shù)有關(guān),其計(jì)算公式如下:


  其中t為當(dāng)前迭代次數(shù)萍悴,T為最大迭代次數(shù)≡⒚猓可以看出這是一個(gè)分段函數(shù)癣诱,我們看看它的圖像。



   從圖像可以看出袜香,在迭代的末期撕予,比例會(huì)變得很大,但是該值是用作分母蜈首,所以隨著迭代次數(shù)增加实抡,陷阱范圍越來越小。

2.3螞蟻隨機(jī)游走

螞蟻的隨機(jī)游走是蟻獅算法的核心欢策,在介紹之前先看看random walk的定義及圖像吆寨。

2.3.1隨機(jī)游走

定義函數(shù)rw如下:



  其中r為0-1內(nèi)的均勻隨機(jī)數(shù)。
  隨機(jī)游走函數(shù)RW定義如下:


  即t個(gè)rw隨機(jī)數(shù)之和踩寇。明顯可知-t<=RW(t)<=t啄清。
  看看RW(100)的圖像,



  從圖像可以看出俺孙,雖然函數(shù)的期望為0辣卒,但其曲線還是比較曲折的掷贾,有偏向正數(shù)的曲線,有偏向負(fù)數(shù)的曲線荣茫,也有在0值上下波動(dòng)的曲線想帅。總而言之啡莉,隨機(jī)游走的曲線的隨機(jī)性還是比較大的港准,這也為算法提供了隨機(jī)搜索能力。

2.3.2計(jì)算螞蟻隨機(jī)游走相對(duì)值

下面要將隨機(jī)游走轉(zhuǎn)換為螞蟻的隨機(jī)游走票罐。
  第i個(gè)螞蟻的在第t代時(shí)隨機(jī)游走的值為RW_i(t),則RW_i(t+1)=RW_i(t)+rw叉趣。
  第t代群體中隨機(jī)游走的最大值為Max(RW(t)),最小值為Min(RW(T))。
  定義ARW_i(t)為第i個(gè)螞蟻在第t代隨機(jī)游走過程的相對(duì)位置该押,其計(jì)算公式如下:


  可以看出ARW是一個(gè)取值范圍為0-1的數(shù)疗杉,即將這N個(gè)螞蟻的隨機(jī)游走值歸一化到0-1范圍內(nèi),再做進(jìn)一步計(jì)算蚕礼。

2.3.3計(jì)算蟻獅陷阱范圍

該螞蟻選定第k個(gè)蟻獅作為自己的目標(biāo)蟻獅烟具,由上一步計(jì)算出的比例ratio可以計(jì)算出該蟻獅所在陷阱的范圍trap。


  其中d_{min}為第d維解空間取值范圍的下界奠蹬,d_{max}為第d維解空間取值范圍的上界朝聋。X\_AL_k^d為第k個(gè)蟻獅的第d維位置。Trap_k^d則表示第k個(gè)蟻獅陷阱的第d維取值范圍囤躁。公式(5)給出了該陷阱的上下界冀痕,顯而易見陷阱的上下界有可能超出解空間上下界,但是不要緊狸演,在這里不用處理言蛇,只需在最后計(jì)算位置時(shí)保證位置在解空間內(nèi)即可。

2.3.4計(jì)算螞蟻的位置

螞蟻會(huì)圍繞自己所選擇的蟻獅做隨機(jī)游走宵距,最終腊尚,螞蟻會(huì)停留在該蟻獅的陷阱范圍內(nèi)。螞蟻位置的計(jì)算公式如下:


  可以看出第i個(gè)螞蟻位置在它所選擇的蟻獅的陷阱內(nèi)满哪,具體的位置由它隨機(jī)游走結(jié)果在群體中的相對(duì)位置決定婿斥。
  除此之外,該螞蟻還會(huì)向著全局最優(yōu)的蟻獅個(gè)體進(jìn)行隨機(jī)游走哨鸭,最后會(huì)停留在這兩個(gè)位置的中點(diǎn)處民宿。


  以上,蟻獅算法中隨機(jī)游走部分就結(jié)束了像鸡】备撸看上去很復(fù)雜,但是理解之后還是很簡(jiǎn)單的,大致分為兩步:
  1. 螞蟻選擇蟻獅华望,通過陷阱確定自己的大致位置蕊蝗。
  2. 螞蟻根據(jù)隨機(jī)游走在種群中的相對(duì)位置,確定自己在陷阱中的精確位置赖舟。

2.4蟻獅移動(dòng)到指定螞蟻的位置

該步驟也是較為簡(jiǎn)單的步驟蓬戚,其實(shí)現(xiàn)與描述相差較大。具體實(shí)現(xiàn)為在這N個(gè)蟻獅以及N個(gè)螞蟻一共2N個(gè)個(gè)體中宾抓,選擇較好的N個(gè)個(gè)體作為蟻獅子漩。注意,只是選擇了N個(gè)蟻獅石洗,原蟻獅若未被選中則不復(fù)存在幢泼,但原螞蟻依然存在,只是新蟻獅和原螞蟻位置重疊了讲衫。該實(shí)現(xiàn)方式是原文代碼的實(shí)現(xiàn)缕棵,其實(shí)大家想怎么實(shí)現(xiàn)都可以,算法的魯棒性很強(qiáng)涉兽,不會(huì)因?yàn)檫@些細(xì)微的改動(dòng)而變差招驴。

2.5算法步驟


  可以看出蟻獅算法的整體流程還是比較簡(jiǎn)單的,雖然隨機(jī)游走部分公式較多枷畏,但是只要知道其含義還是比較容易理解的别厘。

3.實(shí)驗(yàn)

適應(yīng)度函數(shù)f(x_1,x_2)=(x_1-a)^2+(x_2-b)^2,a=b=90
實(shí)驗(yàn)一

問題維度(維度) 2
總?cè)簲?shù)量(種群數(shù)) 20
最大迭代次數(shù) 50
取值范圍 (-100拥诡,100)
實(shí)驗(yàn)次數(shù) 10
選擇蟻獅方式 輪盤賭
最優(yōu)值 3.8900618299208255E-10
最差值 3.105985890779366E-7
平均值 6.142564495109296E-8

從結(jié)果可以看出触趴,蟻獅算法的效果非常好。從圖像可以看出渴肉,算法的收斂速度也是非常之快冗懦,在3-4代之后群體就收斂到了一個(gè)相對(duì)集中的位置。不過我們可以看到算法的ratio的實(shí)現(xiàn)宾娜,應(yīng)該是在最后的10%代才進(jìn)行小范圍搜索批狐,而圖像可以看出3-4代就收斂了扇售,可能與輪盤賭選擇有關(guān)前塔。雖然結(jié)果很,收斂過快容易陷入局部最優(yōu)承冰,但這也可能是該適應(yīng)度函數(shù)太簡(jiǎn)單的緣故华弓。

實(shí)驗(yàn)二

問題維度(維度) 2
總?cè)簲?shù)量(種群數(shù)) 20
最大迭代次數(shù) 50
取值范圍 (-100,100)
實(shí)驗(yàn)次數(shù) 10
選擇蟻獅方式 隨機(jī)選擇
最優(yōu)值 5.652087288375292E-10
最差值 5.641551352947513E-7
平均值 7.520606013312168E-8

圖像和結(jié)果與實(shí)驗(yàn)一并沒有太大的差別困乒,收斂的依然很快寂屏。螞蟻選擇蟻獅方式對(duì)結(jié)果的影響不太大。看來應(yīng)該是蟻獅選擇螞蟻的方式對(duì)種群造成的影響迁霎,步驟2.4中可以看出吱抚,算法沒有使用貪心算法,而是選擇在2N個(gè)個(gè)體中選擇前N個(gè)個(gè)體考廉。這種方式向著最優(yōu)個(gè)體收斂的速度應(yīng)該快于普通的貪心算法秘豹。(普通的貪心算法,如果螞蟻隨機(jī)游走到的位置由于蟻獅昌粤,則蟻獅移動(dòng)到該位置)既绕。

實(shí)驗(yàn)三: 使用貪心算法移動(dòng)蟻獅

問題維度(維度) 2
總?cè)簲?shù)量(種群數(shù)) 20
最大迭代次數(shù) 50
取值范圍 (-100,100)
實(shí)驗(yàn)次數(shù) 10
選擇蟻獅方式 隨機(jī)選擇
最優(yōu)值 3.1748247992028467E-9
最差值 5.054159478342528E-7
平均值 6.544495515254065E-8

從圖像看可知涮坐,種群的收斂速度沒有之前那么快了凄贩,結(jié)果也與實(shí)驗(yàn)一和實(shí)驗(yàn)二相差不大。故可知袱讹,算法的快速收斂主要由其蟻獅移動(dòng)的方式?jīng)Q定疲扎。改為貪心算法后,收斂速度慢了一點(diǎn)廓译,總體而言差別不大评肆。

4.總結(jié)

蟻獅算法是根據(jù)蟻獅使用陷阱捕食隨機(jī)游走的螞蟻而提出的算法。不過其核心確實(shí)螞蟻的隨機(jī)游走非区。原文的描述時(shí)將所有的流程融合為了一個(gè)公式瓜挽,理解不易,本文中將其分步分解后可以明顯的看出其公式的含義征绸。算法的性能不錯(cuò)久橙,魯棒性也較強(qiáng),對(duì)其操作步驟的簡(jiǎn)單修改對(duì)其效果的影響不太大管怠。
  算法中隨機(jī)游走過程為算法提供了不錯(cuò)的搜索能力淆衷,而陷阱的比例則決定了其搜索范圍,是局部搜索還是全局搜索渤弛,蟻獅的移動(dòng)方式?jīng)Q定了種群的收斂速度祝拯。總體來看她肯,對(duì)于平滑的局部最優(yōu)較少的函數(shù)佳头,算法能得到非常好的效果,在其他問題上也有不錯(cuò)的結(jié)果晴氨。

參考文獻(xiàn)

[Mirjalili, Seyedali. The Ant Lion Optimizer[J]. Advances in Engineering Software, 2015, 83:80-98.]

以下指標(biāo)純屬個(gè)人yy,僅供參考

指標(biāo) 星數(shù)
復(fù)雜度 ★★★☆☆☆☆☆☆☆
收斂速度 ★★★★★★★★★☆
全局搜索 ★★★★★★★☆☆☆
局部搜索 ★★★★★★☆☆☆
優(yōu)化性能 ★★★★★★☆☆☆☆
跳出局部最優(yōu) ★☆☆☆☆☆☆☆☆☆
改進(jìn)點(diǎn) ★★★★☆☆☆☆☆☆

目錄
上一篇 優(yōu)化算法筆記(二十一)麻雀搜索算法
下一篇 優(yōu)化算法筆記(二十三)蝴蝶算法

優(yōu)化算法matlab實(shí)現(xiàn)(二十二)蟻獅算法matlab實(shí)現(xiàn)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
禁止轉(zhuǎn)載康嘉,如需轉(zhuǎn)載請(qǐng)通過簡(jiǎn)信或評(píng)論聯(lián)系作者。
  • 序言:七十年代末籽前,一起剝皮案震驚了整個(gè)濱河市亭珍,隨后出現(xiàn)的幾起案子敷钾,更是在濱河造成了極大的恐慌,老刑警劉巖肄梨,帶你破解...
    沈念sama閱讀 210,835評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件阻荒,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡众羡,警方通過查閱死者的電腦和手機(jī)财松,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,900評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來纱控,“玉大人辆毡,你說我怎么就攤上這事√鸷Γ” “怎么了舶掖?”我有些...
    開封第一講書人閱讀 156,481評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)尔店。 經(jīng)常有香客問我眨攘,道長(zhǎng),這世上最難降的妖魔是什么嚣州? 我笑而不...
    開封第一講書人閱讀 56,303評(píng)論 1 282
  • 正文 為了忘掉前任鲫售,我火速辦了婚禮,結(jié)果婚禮上该肴,老公的妹妹穿的比我還像新娘情竹。我一直安慰自己,他們只是感情好匀哄,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,375評(píng)論 5 384
  • 文/花漫 我一把揭開白布秦效。 她就那樣靜靜地躺著,像睡著了一般涎嚼。 火紅的嫁衣襯著肌膚如雪阱州。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,729評(píng)論 1 289
  • 那天法梯,我揣著相機(jī)與錄音苔货,去河邊找鬼。 笑死立哑,一個(gè)胖子當(dāng)著我的面吹牛夜惭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播刁憋,決...
    沈念sama閱讀 38,877評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼滥嘴,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼木蹬!你這毒婦竟也來了至耻?” 一聲冷哼從身側(cè)響起若皱,我...
    開封第一講書人閱讀 37,633評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎尘颓,沒想到半個(gè)月后走触,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,088評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡疤苹,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,443評(píng)論 2 326
  • 正文 我和宋清朗相戀三年互广,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片卧土。...
    茶點(diǎn)故事閱讀 38,563評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡惫皱,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出尤莺,到底是詐尸還是另有隱情旅敷,我是刑警寧澤,帶...
    沈念sama閱讀 34,251評(píng)論 4 328
  • 正文 年R本政府宣布颤霎,位于F島的核電站媳谁,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏友酱。R本人自食惡果不足惜晴音,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,827評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望缔杉。 院中可真熱鬧锤躁,春花似錦、人聲如沸或详。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,712評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)鸭叙。三九已至觉啊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間沈贝,已是汗流浹背杠人。 一陣腳步聲響...
    開封第一講書人閱讀 31,943評(píng)論 1 264
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留宋下,地道東北人嗡善。 一個(gè)月前我還...
    沈念sama閱讀 46,240評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像学歧,于是被迫代替她去往敵國(guó)和親罩引。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,435評(píng)論 2 348

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