优化算法笔记(二十四)帝王蝶算法

1. 帝王蝶算法简介

(以下描述,均不是学术用语,仅供大家快乐的阅读)
  上一篇记录了蝴蝶算法(Butterfly Algorithm),这一篇接着记录帝王蝶算法(Monarch butterfly optimization)。
  介绍之前我们先看看帝王蝶的百科,了解其特性,这将有利于我们对算法的理解和记忆。

图片来自百度

  帝王蝶算法(Monarch butterfly optimization)是根据帝王蝶的迁徙行为提出的优化算法。帝王蝶算法也是于2015年提出,相关的论文也比较多了(这两个蝴蝶算法都有这么多人关注吗?)。其流程相对蝴蝶算法来说有点复杂,不过其论文对算法描述非常的清晰,大家可以去阅读原文。
  帝王蝶算法中,每只蝴蝶的位置代表一个可行解,蝴蝶群体将会被分布在两个大陆上,这两块大陆上的帝王蝶分别有不同的行为:1.迁徙,2适应环境。帝王蝶算法组合了这两种行为来搜索解空间中的最优位置。

2.算法流程

帝王蝶算法中每只蝴蝶的为X={x^1,x^2,...,x^D},该位置的优劣由其适应度函数F(X)计算得出。
帝王蝶群体分布在两块大陆上,分别是land1和land2上。对于一只随机帝王蝶来说,它位于land1上的概率为p,位于land2上的概率为1-p。以此可以将总群分为2个群体,论文中p取值维5/12。
  Land1上的群体的行为为迁徙,而land2上的群体的行为为适应环境。

2.1迁徙

位于land1上的群体的行为为迁徙,这部分个体在种群中的比例为p。其计算公式如下:


  其中x_{new}^d为新个体的第d维,r1为land1中的随机个体,r2为land2中的随机个体,rand为0-1之间的均匀随机数,peri为常数,取值为1.2,p的值也是5/12。公式的含义即新产生的个体每一维由选自种群中的其他个体,其中有 (5/(12*1.2)=34.7%的维度来自land1中的个体, 1-5/(12*1.2)= 65.3%的维度来自land2中的个体。或者也可以说从两个群体中各选了D/2个个体的不同的维度组成了新个体。
  新个体属于land1群体,如果该个体优于对应的父类个体则取代父类位置,否则将被抛弃。
  从公式中也可以看出,这是一个无法脱离局部最优的操作,没有产生新的位置,当群体收敛于一点后新个体将不会有太大变化,有点类似遗传算法的交叉操作。

2.2适应环境

不同与land1上的群体,land2上的群体的行为为适应环境,其计算公式如下:


  其中x_{best}^d为最优个体的第d维,r3为land2中的随机个体,S_max为帝王蝶的最大步长,一般取值为1,t为当前的迭代次数,levy为列维飞行随机,rand1和rand2为为0-1之间的均匀随机数,BAR为一个常数,取值为5/12。
  计算可以得出新维度取上述3个值的概率为5/12=41.7%, (7/12)*(5/12)=24.3%, (7/12)*(7/12)=34.0%。
  论文中的常数取的非常的不对称,其来源是根据帝王蝶在各地停留、活动的月数站全年的比例计算而来,非常的写实。

2.3总体流程

从2.2和2.3可看出,帝王蝶算法的流程也非常的简单,过程中也只有两个公式。


  可以看出,帝王蝶算法的流程和蝴蝶算法的流程几乎一模一样(废话,流程图直接copy的,当然一样),两个算法的个体都是拥有两种行为,蝴蝶算法的行为比较整体,宏观操作,新个体由2-3个个体得出,而帝王蝶算法的行为比较零散,微观操作,每一维来自一个个体。两个算法也都使用了levy飞行,考虑到两个算法竟然还是同一年的,莫非,难道……
  不过从细节来看,两个算法差异还是比较大的,不过两个算法的性能也都算是中规中矩的那种,没有特别突出的特点。

3.实验

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

问题维度(维度) 2
总群数量(种群数) 20
最大迭代次数 50
取值范围 (-100,100)
实验次数 10
p 5/12
peri 1.2
BAR 5/12
S_max 1
最优值 6.616787285876675E-7
最差值 0.2237125217553702
平均值 0.02237985875889385

从图像中可以看出,帝王蝶算法收敛的非常之快,几乎在10代以内就聚集在了目标解附近。从结果中也可以看出,10次结果中仅有一次较差,其它结果也都很接近0。效果比较好,我总觉得参数的设置不太对称,改成对称试试结果。

实验二:修改参数p=0.5,peri = 1,BAR=0.5,即迁徙操作两个种群各占一半维度,适应环境操作最优个体站一半维度,1/4进行levy飞行。

问题维度(维度) 2
总群数量(种群数) 20
最大迭代次数 50
取值范围 (-100,100)
实验次数 10
p 1/2
peri 1
BAR 1/2
S_max 1
最优值 5.316420564900669E-8
最差值 305.487133867145
平均值 46.55311876057846

从结果可以看出,将参数改为对称后效果差了不少。图像我选取一副较差的图像,从图像可以看出在最后,种群收敛到了目标解外的一点。收敛的过程很像遗传算法和差分进化算法,个体的运动轨迹在一个类似十字架的图案上。但是这个适应度函数非常简单,不存在局部最优解,问题应该出在步长上。整个算法只有levy飞行那一步会产生新的位置,其他步骤都是现有位置的组合。
下面将最大步长改大试试。

实验三:在实验二的基础上,将S_max改为100。

问题维度(维度) 2
总群数量(种群数) 20
最大迭代次数 50
取值范围 (-100,100)
实验次数 10
p 1/2
peri 1
BAR 1/2
S_max 100
最优值 0.03327980532491267
最差值 1.372619091077949
平均值 0.2681765191162244

结果比实验二好了不少,但精度有所下降,但是比不上实验一。最大步长设的太大会影响精度,设得太小又会让种群提前收敛。实验三中最大步长为100,最大迭代次数为50,则由最大步长影响的精度为100/(50*50)=0.04,这与实验结果相差不太多。权衡利弊,S_max的取值还是大一点的好,否则,种群未在正解附近收敛得到的结果会很差,结果会很不稳定。

实验四: 在实验一的基础上将S_max修改为100,与实验三比较原文其他参数是否合适。

问题维度(维度) 2
总群数量(种群数) 20
最大迭代次数 50
取值范围 (-100,100)
实验次数 10
p 5/12
peri 1.2
BAR 5/12
S_max 1
最优值 0.0041091205735400115
最差值 0.6353414477079234
平均值 0.1801414787350149

从结果可以看出,这次的结果要好于实验三的结果,这说明原文中给出的这一系列不对称的参数效果还是好于实验二实验三中的对称参数。图像与实验三的图像类似,步长改大之后个体很容易飞出边界,然后由越界的处理方法使其留在边界上,所以在算法开始后不久就可以看到群体都停留在了边界上,不过问题不大,最终还是会收敛与正解附近。
  与实验一相比,实验四的结果差了不少,这是因为测试函数比较简单,当选用较为复杂的测试函数后,较大的步长能够提高算法的全局搜索能力,让算法的结果更加稳定。

4.总结

帝王蝶算法是根据帝王蝶的迁徙行为提出的算法。位于两块大陆上的帝王蝶群体有着不同的行为,迁徙行为类似于进化算法的杂交操作,适应环境行为类似于进化算法的变异操作,不过其变异位置在当前最优个体附近。算法中的levy飞行是其变异操作的具体实现,不过由于受最大步长的影响,levy飞行的作用并不明显。帝王蝶的最大飞行步长对结果的影响较为明显,步长较小时算法的全局搜索能力较差,局部搜索能力较强,精度较高,反之,全局搜索能力较强,局部搜索能力较差,精度较低但是更加稳定。
  帝王蝶算法的参数非常奇特,按论文中所说是根据蝴蝶在各地活动的月数而设定的。虽然不是最佳参数,但也优于均匀对称的参数。有兴趣的同学可以试试怎么设置能让算法的性能达到最佳。
  接连两篇笔记记录了都是蝴蝶算法,它们的总体流程结构相差不大,一个是宏观行为,个体之间互动,一个是微观行为,维度之间互动。这两个蝴蝶算法的性能也相差不多,中规中矩,没有太亮眼的地方,而且都用了levy飞行来提供跳出局部最优的能力。不过levy作为非常规武器,不应该在原始算法中给出,其操作与levy飞行不搭且没有提供相应的能力(可能我看到的不是原始论文)。

参考文献
Monarch butterfly optimization[J]. Neural Computing and Applications, 2015, 31:1995-2014. 提取码:fg2m
Wang G G , Zhao X , Deb S . A Novel Monarch Butterfly Optimization with Greedy Strategy and Self-adaptive Crossover Operator[C]// 2015 2nd Intl. Conference on Soft Computing & Machine Intelligence (ISCMI 2015). IEEE, 2015. 提取码:9246

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

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

目录
上一篇 优化算法笔记(二十三)蝴蝶算法
下一篇 优化算法笔记(二十五)飞蛾扑火算法

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

推荐阅读更多精彩内容