优化算法笔记(二十二)蚁狮算法

1. 蚁狮算法简介

(以下描述,均不是学术用语,仅供大家快乐的阅读)
  蚁狮是一种昆虫,城里长大的我没有见过这玩意儿,请教了农村长大小的伙伴,依然没见过,这玩意儿可能在我们生活的地方分布较少。


(图片及介绍来自百度百科)
  蚁狮算法(Ant Lion Optimization)是根据蚁狮挖制漏斗状陷阱进行捕食蚂蚁的过程提出的优化算法。算法提出于2015年(2014年末),也是一个比较新的算法,不过好像相关的论文也比较多了。算法的过程和操作步骤比较简单,算法的效果却出乎意料的好,不过算法的实现与蚁狮的行为不是很匹配,但这也不会影响我们的理解。
  蚁狮算法中,每个蚁狮以及蚂蚁的位置表示解空间中的一个可行解。蚂蚁在选择一个蚁狮,在其陷阱范围内进行随机游走(random walk)。蚁狮会吃掉陷阱范围内位置最优的个体(取代其位置)。
  可以看出算法的主要步骤很简单,不过其具体实现与捕食过程还是有些许不同,当然蚂蚁也不可能会自愿的围绕蚁狮的陷阱为中心进行随机游走。具体的算法将在下一节中详细描述。

2. 算法流程

蚁狮算法中有两种角色,蚁狮和蚂蚁,其数量均为N, 其位置为X=(x^1,x^2,...,x^D) ,其适应度值为F(x) 。为了方便描述,下面使用X_AL表示蚁狮的位置,X_A表示蚂蚁的位置。
初始化时,会在解空间内随机初始化N个蚁狮以及N个蚂蚁,下面是其迭代步骤。
整个算法的流程大致可以分为四步:
  1. 蚂蚁选择目标蚁狮陷阱。(自投罗网,说吧,你是选择清蒸还是红烧)
  2. 计算陷阱的放缩比例。
  3. 蚂蚁随机游走。
  4. 蚁狮移动到指定蚂蚁的位置。

2.1蚂蚁选择目标蚁狮

每一只蚂蚁都要选择一个目标蚁狮来进行后续的随机游走,选择过程可以随机选择也可以使用轮盘赌的方式进行选择,具体的实现比较简单,不在赘述。(轮盘赌参见遗传算法)。

2.2计算陷阱的比例

该步骤计算陷阱(相对搜索空间)的大小,用于下一步中确定蚂蚁随机游走后的位置。
论文中,陷阱的大小与个体无关,只与当前迭代次数有关,其计算公式如下:


  其中t为当前迭代次数,T为最大迭代次数。可以看出这是一个分段函数,我们看看它的图像。



   从图像可以看出,在迭代的末期,比例会变得很大,但是该值是用作分母,所以随着迭代次数增加,陷阱范围越来越小。

2.3蚂蚁随机游走

蚂蚁的随机游走是蚁狮算法的核心,在介绍之前先看看random walk的定义及图像。

2.3.1随机游走

定义函数rw如下:



  其中r为0-1内的均匀随机数。
  随机游走函数RW定义如下:


  即t个rw随机数之和。明显可知-t<=RW(t)<=t。
  看看RW(100)的图像,



  从图像可以看出,虽然函数的期望为0,但其曲线还是比较曲折的,有偏向正数的曲线,有偏向负数的曲线,也有在0值上下波动的曲线。总而言之,随机游走的曲线的随机性还是比较大的,这也为算法提供了随机搜索能力。

2.3.2计算蚂蚁随机游走相对值

下面要将随机游走转换为蚂蚁的随机游走。
  第i个蚂蚁的在第t代时随机游走的值为RW_i(t),则RW_i(t+1)=RW_i(t)+rw。
  第t代群体中随机游走的最大值为Max(RW(t)),最小值为Min(RW(T))。
  定义ARW_i(t)为第i个蚂蚁在第t代随机游走过程的相对位置,其计算公式如下:


  可以看出ARW是一个取值范围为0-1的数,即将这N个蚂蚁的随机游走值归一化到0-1范围内,再做进一步计算。

2.3.3计算蚁狮陷阱范围

该蚂蚁选定第k个蚁狮作为自己的目标蚁狮,由上一步计算出的比例ratio可以计算出该蚁狮所在陷阱的范围trap。


  其中d_{min}为第d维解空间取值范围的下界,d_{max}为第d维解空间取值范围的上界。X\_AL_k^d为第k个蚁狮的第d维位置。Trap_k^d则表示第k个蚁狮陷阱的第d维取值范围。公式(5)给出了该陷阱的上下界,显而易见陷阱的上下界有可能超出解空间上下界,但是不要紧,在这里不用处理,只需在最后计算位置时保证位置在解空间内即可。

2.3.4计算蚂蚁的位置

蚂蚁会围绕自己所选择的蚁狮做随机游走,最终,蚂蚁会停留在该蚁狮的陷阱范围内。蚂蚁位置的计算公式如下:


  可以看出第i个蚂蚁位置在它所选择的蚁狮的陷阱内,具体的位置由它随机游走结果在群体中的相对位置决定。
  除此之外,该蚂蚁还会向着全局最优的蚁狮个体进行随机游走,最后会停留在这两个位置的中点处。


  以上,蚁狮算法中随机游走部分就结束了。看上去很复杂,但是理解之后还是很简单的,大致分为两步:
  1. 蚂蚁选择蚁狮,通过陷阱确定自己的大致位置。
  2. 蚂蚁根据随机游走在种群中的相对位置,确定自己在陷阱中的精确位置。

2.4蚁狮移动到指定蚂蚁的位置

该步骤也是较为简单的步骤,其实现与描述相差较大。具体实现为在这N个蚁狮以及N个蚂蚁一共2N个个体中,选择较好的N个个体作为蚁狮。注意,只是选择了N个蚁狮,原蚁狮若未被选中则不复存在,但原蚂蚁依然存在,只是新蚁狮和原蚂蚁位置重叠了。该实现方式是原文代码的实现,其实大家想怎么实现都可以,算法的鲁棒性很强,不会因为这些细微的改动而变差。

2.5算法步骤


  可以看出蚁狮算法的整体流程还是比较简单的,虽然随机游走部分公式较多,但是只要知道其含义还是比较容易理解的。

3.实验

适应度函数f(x_1,x_2)=(x_1-a)^2+(x_2-b)^2,a=b=90
实验一

问题维度(维度) 2
总群数量(种群数) 20
最大迭代次数 50
取值范围 (-100,100)
实验次数 10
选择蚁狮方式 轮盘赌
最优值 3.8900618299208255E-10
最差值 3.105985890779366E-7
平均值 6.142564495109296E-8

从结果可以看出,蚁狮算法的效果非常好。从图像可以看出,算法的收敛速度也是非常之快,在3-4代之后群体就收敛到了一个相对集中的位置。不过我们可以看到算法的ratio的实现,应该是在最后的10%代才进行小范围搜索,而图像可以看出3-4代就收敛了,可能与轮盘赌选择有关。虽然结果很,收敛过快容易陷入局部最优,但这也可能是该适应度函数太简单的缘故。

实验二

问题维度(维度) 2
总群数量(种群数) 20
最大迭代次数 50
取值范围 (-100,100)
实验次数 10
选择蚁狮方式 随机选择
最优值 5.652087288375292E-10
最差值 5.641551352947513E-7
平均值 7.520606013312168E-8

图像和结果与实验一并没有太大的差别,收敛的依然很快。蚂蚁选择蚁狮方式对结果的影响不太大。看来应该是蚁狮选择蚂蚁的方式对种群造成的影响,步骤2.4中可以看出,算法没有使用贪心算法,而是选择在2N个个体中选择前N个个体。这种方式向着最优个体收敛的速度应该快于普通的贪心算法。(普通的贪心算法,如果蚂蚁随机游走到的位置由于蚁狮,则蚁狮移动到该位置)。

实验三: 使用贪心算法移动蚁狮

问题维度(维度) 2
总群数量(种群数) 20
最大迭代次数 50
取值范围 (-100,100)
实验次数 10
选择蚁狮方式 随机选择
最优值 3.1748247992028467E-9
最差值 5.054159478342528E-7
平均值 6.544495515254065E-8

从图像看可知,种群的收敛速度没有之前那么快了,结果也与实验一和实验二相差不大。故可知,算法的快速收敛主要由其蚁狮移动的方式决定。改为贪心算法后,收敛速度慢了一点,总体而言差别不大。

4.总结

蚁狮算法是根据蚁狮使用陷阱捕食随机游走的蚂蚁而提出的算法。不过其核心确实蚂蚁的随机游走。原文的描述时将所有的流程融合为了一个公式,理解不易,本文中将其分步分解后可以明显的看出其公式的含义。算法的性能不错,鲁棒性也较强,对其操作步骤的简单修改对其效果的影响不太大。
  算法中随机游走过程为算法提供了不错的搜索能力,而陷阱的比例则决定了其搜索范围,是局部搜索还是全局搜索,蚁狮的移动方式决定了种群的收敛速度。总体来看,对于平滑的局部最优较少的函数,算法能得到非常好的效果,在其他问题上也有不错的结果。

参考文献

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

以下指标纯属个人yy,仅供参考

指标 星数
复杂度 ★★★☆☆☆☆☆☆☆
收敛速度 ★★★★★★★★★☆
全局搜索 ★★★★★★★☆☆☆
局部搜索 ★★★★★★☆☆☆
优化性能 ★★★★★★☆☆☆☆
跳出局部最优 ★☆☆☆☆☆☆☆☆☆
改进点 ★★★★☆☆☆☆☆☆

目录
上一篇 优化算法笔记(二十一)麻雀搜索算法
下一篇 优化算法笔记(二十三)蝴蝶算法

优化算法matlab实现(二十二)蚁狮算法matlab实现

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,417评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,921评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,850评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,945评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,069评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,188评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,239评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,994评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,409评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,735评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,898评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,578评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,205评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,916评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,156评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,722评论 2 363
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,781评论 2 351

推荐阅读更多精彩内容