美文网首页
优化算法笔记(三十二)樽海鞘算法

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

作者: stronghorse | 来源:发表于2022-03-30 13:22 被阅读0次

    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,仅供参考

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

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

    相关文章

      网友评论

          本文标题:优化算法笔记(三十二)樽海鞘算法

          本文链接:https://www.haomeiwen.com/subject/leppjrtx.html