第二十三弹——人工水母搜索算法

[复制链接]
nightgo 发表于 2023-7-26 19:03:40|来自:北京 | 显示全部楼层 |阅读模式
引言

本期我们介绍人工水母搜索算法(artificial Jellyfish Search (JS) optimizer)。该算法由台湾的Jui-Sheng Chou等人于2020年提出,主要模拟了水母随洋流飘动、水母群体内部运动的特性,并引入时间控制机制。JS算法在对比实验上获得了较好的效果,因此具有广泛的应用前景。下图1~图3为我和好友于2019年8月在山东省青岛市青岛极地海洋世界拍摄的小水母纪念照:



图1 可可爱爱的蓝色小水母(怪不得海绵宝宝里总有这个指尖陀螺的形状)



图2 可可爱爱的红色小水母



图3 可可爱爱的紫色小水母

人工水母搜索算法

众所周知,海洋里啥都有。水母作为一种软体生物,凭借着自身在群体内的运动以及跟随洋流形成水母水华,使得这些物种几乎能够出现在海洋的任何地方。在介绍算法公式之前,先说一下原文中的两条设定:
(1).水母要么跟随洋流,要么在群体内部移动,而“时间控制机制”控制着这些移动类型之间的转换。
(2).水母在海洋中移动寻找食物。他们更容易被吸引到食物供应量更大的地方。
洋流
洋流中含有大量的营养物质,所以水母被它吸引。洋流的方向(算法收敛趋势)是通过计算每个水母到当前位置最优水母的平均矢量位置确定的:


其中npop为水母群体规模,X*为最优水母的位置,ec是吸引力控制因子,μ为所有水母的平均位置,df为最优水母位置与所有水母平均位置之间的差值。原文假设水母在所有维度上呈正态空间分布,所有水母均可能在平均位置周围±βσ(σ是分布的标准偏差,β=3为分布系数)的距离内分布(大家快想想概率论),所以有如下定义:





图4 水母在海洋中的分布

因此我们将之前的公式简化可得:


洋流的计算公式即为:


于是,每只水母的位置更新公式为:


我们把它拆开即为:


水母群
水母的运动主要分为被动运动(A型)、主动运动(B型)。最初当水母群刚刚形成时,大多数水母要随大流,故表现出A型运动。随着时间的推移,水母逐渐发挥自身主观能动性,所以它们越来越多地表现出B型运动。A型运动是水母围绕其自身位置的运动:


其中,Ub、Lb分别为搜索空间的上、下限,γ=0.1为运动系数。水母群形成一定规模后,大家就开始积极进取,向找到更多食物的同伴靠近,这也就是B型运动:







图5 水母的B型运动

时间控制机制
前文说过,当某一段洋流包含丰富的食物时,水母们会相互聚集群进行觅食。当温度或风改变洋流时,水母群会向另一条洋流移动,形成另一个水母群。因此作者引入了时间控制机制来模拟这个由被动到主动的过程。为了调节水母跟随洋流和在水母群内部移动之间的运动,时间控制机制包括时间控制函数c(t)和常数Co=0.5:


当c(t)大于Co时,水母会跟随洋流运动,即B型运动;当c(t)小于Co时,水母仅在种群内部移动,为A型运动。图6为c(t)的迭代过程:



图6 c(t)的迭代变化过程

因此,可以得到水母的运动方式与时间变化的关系图:



图7 水母的运动方式与控制时间的关系

种群初始化
一般而言,大多数算法都采用了随机初始化策略。但是JS算法不同,它引入了Logistic混沌映射作为初始化的方式:


其中, X0∉{0.0, 0.25, 0.75, 0.5, 1.0},η=4。总感觉这么做有点作弊的嫌疑。。。
边界限制
对于越界现象,大多数算法直接采用了边界吸收策略,不过JS算法中考虑到地球它是个圆的,所以就采用了一种边界缓冲策略:


图8为该方式的示意图:



图8 JS算法中的边界缓冲策略

至此,可以得到算法迭代伪代码:


性能测试

就原文来看,JS算法的效果还是不错的:



图9 JS算法与WOA算法在标准测试函数上的对比

为了满足我的好奇心,我决定将JS算法与采取“随机初始化、边界吸收”的改版JS算法(reJS)在部分标准测试函数上做一下对比。取种群规模为30,最大迭代次数为500,运算10次后记录运算平均值(MEAN)、运算方差(STD)、运算最优值(BEST)、运算最劣值(WORST):



图10 两算法在Sphere函数上的性能展示



图11 两算法在Quartic函数上的性能展示



图12 两算法在Rastrigin函数上的性能展示



图13 两算法在Ackley函数上的性能展示



表1 两算法在四种标准测试函数上的测试结果

就图10~图13可看出JS算法在迭代前期的收敛速度在大多函数上较reJS算法并不具有显著优势;由表1中数据可知在多数算法上JS算法的鲁棒性与reJS算法五五开,不过“BEST”这项指标是优于后者的。所以可以这么理解:Logistic混沌映射在某些情况下对搜索域的遍历虽不及随机分布策略,但能够较好地维持算法鲁棒性;边界缓冲策略避免了个体集中于搜索域边界的情况,进而提升种群多样性。
总结

总的来讲,JS算法在标准测试函数、CEC2005、各种桁架优化问题上表现出的性能都不错,所以发展潜力非常大,只不过我认为引入Logistic混沌映射、边界缓冲策略后再去和其他算法作对比,确实有点不太合适,毕竟在这些方法都是在改进算法时用到的,这样一来不就成了第一版就是升级版哈哈~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
全部回复5 显示全部楼层
songxiao530 发表于 2023-7-26 19:04:14|来自:北京 | 显示全部楼层
初学小白,感觉这和粒子群优化算法很像啊,两者有什么本质区别吗
peeperp 发表于 2023-7-26 19:05:12|来自:北京 | 显示全部楼层
是有几分相似,他们的核心公式都是x(i+1)=x(i)+?,只不过问号这一部分一个是粒子的飞行速度,一个是在对应条件下的运动类型。粒子群只是最优粒子引导,而水母群考虑到了种群内大多个体的位置,充分利用种群资源,因此就在一定程度上减少了算法的停滞期。其他的像是初始化部分,时间控制(判断条件),边界缓冲就是锦上添花了~
winpe 发表于 2023-7-26 19:05:46|来自:北京 | 显示全部楼层
感谢解惑
感谢
wwwrxt 发表于 2023-7-26 19:06:15|来自:北京 | 显示全部楼层
毒刺水母算法
风雨路人 发表于 2023-7-26 19:07:07|来自:北京 | 显示全部楼层
博主您好,请问您是用python复现的吗,我自己尝试复现了一下,精度很差,不知问题出在哪里,能否分享下您的代码,感谢

快速回帖

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则