樽海鞘群算法(SSA)(含MATLAB代码)

先做一个声明:文章是由我的个人公众号中的推送直接复制粘贴而来,因此对智能优化算法感兴趣的朋友,可关注我的个人公众号:启发式算法讨论。我会不定期在公众号里分享不同的智能优化算法,经典的,或者是近几年提出的新型智能优化算法,并附MATLAB代码。

“应粉丝要求,讲一下樽海鞘算法~

昨天调研了一下,搞这个算法的人还挺多,在WOS上也是被高引的文献。有兴趣的同学可以了解一下,这个算法本身是非常简单的,因此也比较容易上手~”

樽海鞘群算法(Salp Swarm Algorithm, SSA)是Mirjalili等人于2017年提出的一种全新的群体智能优化算法。该算法的主要思想来源于樽海鞘的群链生物特征。樽海鞘算法的整个寻优过程起源于樽海鞘链的群聚觅食行为,将樽海鞘群体对最佳食物源搜索的过程类比为对函数寻优。SSA的原始参考文献如下:

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: 163-191.


 

01
灵感来源

樽海鞘是一种身体几乎完全透明的桶状海洋生物。这种透明特性可以很好地保护樽海鞘在海洋中免受天敌捕食,主要以浮游植物为食,依靠吸入喷出海水前进。它们每天可以将成吨的碳从海洋表面运送到深海中,防止这些碳重新进入大气圈,有效地减少了碳进入大气圈成为温室气体的可能性,对大自然来说有很好的清碳作用。樽海鞘这一特殊功能使其在海洋中发挥着不可替代的作用。自然界中的大多数生物以群的方式移动、觅食,但樽海鞘却是首尾相连,组成链的形式进行觅食。樽海鞘在海洋中以群体形成链状结构漂浮生活,樽海鞘链分为两部分:领导者和跟随者。樽海鞘链最前端的个体被认为是领导者,其他个体被认为是跟随者,领导者根据食物源位置指导引领着跟随者移动,如图1所示。

图1 樽海鞘的觅食原理

在SSA中,位于樽海鞘链的第一个樽海鞘为领导者,其余的为跟随者。和其他的群体智能优化算法不同在于,领导者不会影响整个群体的移动,跟随者会根据前一个个体的位置来更新自己的位置。依此类推形成了樽海鞘链。领导者对于排在后面的跟随者的领导作用会越来越弱,在后面的跟随者不会一味的向着领导者移动,保持了种群的多样性。樽海鞘群算法将目前得到的最优解保存下来,并将其赋值给食物源变量,因此即使整个种群恶化,它也不会丢失。SSA只更新领导者相对于食物源的位置,这是目前得到的最佳解,所以领导者一直在探索和开发它周围的空间;跟随者的跟随运动提高了局部搜索的性能,在一定程度上避免了陷入局部最优的情况。

02
算法设计

与往期推送一样,目前我还不会在公众号里编辑数学公式。因此,这部分内容在Word文档里先写好,然后做成图片,最后导入。

03
计算流程

SSA的计算流程伪代码如图2所示:

图2 SSA计算流程

04
实验仿真

同样地,对SSA的性能进行简单测试。将SSA用于函数寻优,它的MATLAB程序严格按照原始参考文献进行编写。此外,种群规模N为50,最大迭代次数T取2000,Benchmark函数采用的是CEC2005测试集。

这里以CEC2005测试集中的单峰函数Sphere (f1)和多峰函数Ackley (f10)为例,展示SSA在30维环境下的收敛效果。如图3所示,这里就不再做进一步的分析了。

(a) f1

(b) f10

图3 SSA的收敛曲线

其次,不妨检验一下SSA对全局勘探和局部开发的平衡能力。如图4所示,是SSA在CEC2005测试函数f3上的勘探和开发占比曲线。

图4 SSA在CEC2005 f3上的勘探和开发百分占比变化曲线

最后,将SSA应用于复杂工程约束优化问题,例如之前推送的两期算法应用内容:

算法应用:基于DBO算法的工程优化设计(第1期)(含MATLAB代码)

算法应用:工程优化设计(第2期)(含MATLAB代码)

这里以焊接梁设计问题为例,展示SSA求解效果。收敛曲线如图5所示。

图5 SSA在焊接梁设计问题上的目标函数收敛曲线

05
MATLAB代码

SSA的MATLAB代码可通过复制下方链接进入获得。代码严格按照原始参考文献编写,附有详细注释。

(公众号里有,关注公众号:启发式算法讨论)

SSA的勘探(Exploration)和开发(Exploitation)占比分析:

(公众号里有,关注公众号:启发式算法讨论)

SSA的工程应用(第1期):压力容器设计、滚动轴承设计、拉伸/压缩弹簧设计、悬臂梁设计、轮系设计、三杆桁架设计。

(公众号里有,关注公众号:启发式算法讨论)

SSA的工程应用(第2期):焊接梁设计、多盘离合器制动器设计问题、步进圆锥滑轮问题、减速机设计问题、行星轮系设计优化问题、机器人夹持器问题。

(公众号里有,关注公众号:启发式算法讨论)

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

algorithmzzy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值