优化算法笔记(三十二)樽海鞘算法

2022-03-30  本文已影响0人  stronghorse

1. 算法简介

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



  之前没见过这玩意,从百度百科截个图。樽海鞘看起来像是透明的鱼但又不是鱼,是一种无脊椎动物,不知道它能不能吃,味道如何 :)。
樽海鞘算法借鉴了樽海鞘聚集的生活习性,算法提出于2017年,距今也有几年时间了。在有性时期和无性时期,樽海鞘有着不同的行为,无性时期,樽海鞘们会组成长链。
  为了模拟樽海鞘的习性,在樽海鞘算法中,将群体分为了两部分,头部和尾部,头部寻找食物,而尾部则跟随头部。

2. 算法流程

樽海鞘算法中每只樽海鞘的位置为X=(x^1,x^2,...,x^D) ,该位置的优劣由其适应度函数F(X)计算得出。
  种群在解空间内随机初始化后,会根据其适应度函数,从优到劣排序,随后将种群按顺序分为两组,第一组为leader,第二组为follower。Leader会在全局最优位置附近寻找新位置,而follower则是紧跟着自己的前一个个体。

2.1 leader的行为

种群中有1/2的个体为leader,它们会在当前全局最优位置附近搜索,其具体实现如下:


  其中C2为[0,1]内均匀随机数,x_{min},x_{max}为解空间的上界和下界。
  C1取值范围为[2/e^4,2]的图像如下:

  每个个体会随机选择公式(2)(3)其中的一个进行移动。公式(2)(3)的含义很明显,已最优位置为起点,以解空间内随机位置为步长和方向走了一步。
  结合图像公式(2)(3)可以看出leader其实是在做全局搜索,搜索范围比较大。即使迭代到最后C1取值最小时仍有0.0366,乘以较大的步长,应该也是一个不小的值,故其搜索范围较大。

2.2 follower行为

跟随者的行为特别简单,就是移动到排在自己前面的个体和自己的中点位置。



  从公式(4)可以得知,该部分个体在群体较为分散时作用不太大,当群体集中时能够快速提高算法的精度,属于小范围局部搜索。

2.3 流程图

该算法没有贪心步骤,樽海鞘的新位置即使差于原位置,它依然会移动到新位置。加之follower的行为,它的运动图像一定非常的有意思。

3. 实验

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

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

  从图像可以看出群体组成的樽海鞘链还是有比较明显的辨识度的。群体收敛速度虽然一般但是明显是找到了最优位置。

最优值 1.1132229918179271E-10
最差值 2.9571940843091835E-9
平均值 6.819800231198109E-10

从结果可以看出算法非常的稳定,得到的结果也有非常高的精度。
  该算法没有使用贪心算法,依旧能快速收敛。这主要由于全局最优位置其实是一个单调变优的位置,随着迭代次数的增加,C1的值会越来越小,leader的搜索范围也会逐渐集中到最优位置附近。

4. 总结

樽海鞘算法模拟了樽海鞘的聚集成链的生活习性而提出的优化算法。算法将群体分为leader和follower,leader以全局最优为中心进行搜索,为算法提供了全局搜索能力,保证种群收敛,follower跟随自己的前一个个体,为算法提供了局部搜索能力,保证算法精度。
  可以看出樽海鞘算法的模型十分简单,实现过程也简单明了,同时算法也有的不错的效果。可能唯一的不足之处就是算法后期缺少跳出局部最优的步骤,不过前期的搜索范围还是比较广泛的,(如果问题不太复杂)陷入局部最优的概率应该也不大。

参考文献
Mirjalili S , Gandomi A H , Mirjalili S Z , et al. Salp swarm algorithm: a bio-inspired optimizer for engineering design problems[J]. Advances in Engineering Software, 2017, 114(dec.):163-191. 提取码:175q
原文代码 提取码:175q

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

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

目录
上一篇 优化算法笔记(三十一)阿基米德算法
下一篇 优化算法笔记(三十三)黏菌算法

上一篇下一篇

猜你喜欢

热点阅读