优化算法笔记(三十三)黏菌算法

1. 算法简介

(以下描述,均不是学术用语,仅供大家快乐的阅读)



  黏菌算法是根据黏菌的营养生长过程提出的优化算法。算法发表于2020年,算是一个较新的算法。
  黏菌在有丝分裂后形成的变形体成熟之后,进入营养生长时期,会形成网状型态,且依照食物、水与氧气等所需养分改变其表面积。
  在黏菌算法中,黏菌会根据当前位置的客观条件(适应度函数优劣),决定每个个体所在位置的权重,然后个体会根据权重决定新的位置在哪。

2. 算法流程

黏菌算法中的每个个体除了位置X=(x^1,x^2,...,x^D)外,还有一个属性,权重 W=(w^1,w^2,...,w^D),该位置的优劣由其适应度函数F(X)计算得出。
  黏菌算法每次迭代过程可以分为三步,排序、更新权重和更新位置。
  排序即根据个体的适应度函数从优到劣进行排序,较为简单此处不再赘述,下面将说明更新权重和更新位置的步骤。

2.1 更新权重

更新权重时,不同的个体的更新公式不同,群体中较优的1/2部分按照下述公式(1)更新权重,群体中另外1/2按照公式(2)更新其权重。


  可以看出较优部分个体的权重取值较大,在[1,1.3]内,越优的个体的权重取值越接近1;较差的那部分个体取值在[0.7,1]内,越差的个体权重越接近0.7。X_{best}X_{worst}为该次迭代过程中的最优个体和最差个体。

2.2 更新位置

更新完权重后黏菌个体会使用权重来更新其位置,位置更新公式如下:


  其中公式(6)(7)(8)中rand1、rand2为[0,1]内的均匀你随机数,Z为一个常量,一般取值为0.03。randA为取值[-a,a]内的均匀随机数,randB为取值[-b,b]内的均匀随机数。
  公式(6)(7)(8)为具体的位置更新公式,可以看出,公式(6)是一个获取全局随机位置的操作,概率较低,类似于遗传算法的变异。公式(7)则是在当前最优位置附近搜索。公式(8)则是一个让该个体收敛到0的操作(该公式错误,目的是让个体收敛到0,以便在最优解为0的测试函数上取得好结果),当最优解不为0时,效果不好。
  下面看看公式(3)和公式(5)的图像,公式(4)是一条简单的线性递减的直线,就不画了。
  公式(3)的图像如下


  可见a的取值随着迭代次数增加会慢慢递减至0。
  公式(5)tanh的图像如下,


  图像可见当当前个体距值与最优个体值相差大于4时,p的取值近似于1。作者的想法是在大部分情况下,其值相差较大,取值为1,使用公式(7)更新其位置。但是我们无法知晓测试函数的大致取值范围,若测试函数本身的值域就很小时,则会出现大部分使用公式(8)来更新位置的情况。
  应将公式(5)改为相对适应度值,如:


  公式(8)可以简单的修改为公式(10),以避免收敛到0:


2.3 流程图


  黏菌算法也是一个没有贪心步骤的算法,无论新位置好不好,黏菌个体都将移动到该位置。

3. 实验

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

问题维度(维度) 2
总群数量(种群数) 20
最大迭代次数 50
取值范围 (-100,100)
实验次数 10

  从图像中可以看出,算法的收敛速度还是不错的,局部搜索能力也不错,最终都能到达最优位置附近。不过可以看到在第45代左右,部分会明显的集中于图像中心,也就是值为0的地方。这就是公式(8)造成的。

最优值 3.70296946033911E-5
最差值 0.001792993691831722
平均值 5.180665695106553E-4

从结果来看,算法还算稳定,结果也中规中矩,可能使用公式(8)来更新位置的概率不大,所有影响也不太大。也有可能是测试函数比较简单,影响不大。

实验二:使用公式(9)替换公式(5),公式(10)替换公式(8)。


从将图像看,好像没有啥太大改变,唯一的变化就是不会再向0点聚集了。

最优值 2.509801243567759E-4
最差值 0.016793200621058654
平均值 0.003951010987412436

从结果看,好像反而没有实验一好。不过问题不大,这应该是测试函数与原算法的契合度高(公式(5)使进入公式(8)的概率较小),我们稍微修改修改测试函数,试试效果。

实验三:使用测试函数f(x1,x2)=((x1-a)^2+(x2-b)^2)/100000,a=b=90重复实验一。


从图像可以看出,新测试函数使原算法使用公式(8)的概率大增,黏菌个体几乎都在向中心(值为0)靠近,但是最优解在右下角啊!

最优值 2.8837646108748628E-5
最差值 7.634339850980621E-4
平均值 2.5787450851831714E-4

从结果看好像和实验一差不多,但是需要注意的是,测试函数相比实验一除以了100000,比较而言可以说实验三的结果比实验一差了很多。
实验四:使用测试函数f(x1,x2)=((x1-a)^2+(x2-b)^2)/100000,a=b=90重复实验二。


实验四的图像和实验二的图像几乎没有太大的差别。

最优值 7.417268809766791E-10
最差值 9.590888844553935E-8
平均值 3.2341927981819996E-8

看上去实验四的结果好于实验二,但是考虑到测试函数除以了100000,结果同样也相差了100000倍,说明实验二的结果和实验四的结果差别不大,实验二的改进还是相对比较稳定的。

4. 总结

黏菌算法是黏菌的营养生长行为的算法。算法的结构简单,效果也相对稳定。不过算法的部分操作对测试函数有一定的要求,通用性不高。面对不同取值范围的测试函数时效果也会大不一样。
  由于算法的结构相对简单,对其进行改进,让其能够适用于更多场景也相对比较容易。

参考文献

Li S , Chen H , Wang M , et al. Slime mould algorithm: A new method for stochastic optimization[J]. Future Generation Computer Systems, 2020, 111 aliasgharheidari.com:300-323. 提取码k3oc

原文代码 提取码k3oc

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

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

目录
上一篇 优化算法笔记(三十二)樽海鞘算法
下一篇 优化算法笔记(三十四)鸽群算法

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

推荐阅读更多精彩内容