智能优化算法:樽海鞘群优化算法-附代码

文章目录

  • 智能优化算法:樽海鞘群优化算法-附代码
    • 1.算法原理
      • 1.1种群初始化
      • 1.2 领导者位置更新
      • 1.3 追随者位置更新
    • 2.算法流程:
    • 3.算法结果
    • 4.参考文献
    • 5.MATLAB 代码
    • 6.python代码

摘要:樽海鞘群算法( salp swarm algorithm,SSA)是Seyedali Mirjalili等于2017年提出的一种新型智能优化算法[1]。 该算法模拟了樽海鞘链的群体行为,是一种较新颖的群智能优化算法。每次迭代中,领导者指导追随者,以一种链式行为,向食物移动。移动过程中,领导者进行全局探索,而追随者则充分进行局部探索,大大减少了陷入局部最优的情况。

1.算法原理

樽海鞘是一种海洋无脊椎动物,身体呈桶状且几乎完全透明,以水中浮游植物为食,通过吸入和喷出海水完成在水中移动。在深海中,樽海鞘以一种链式的群行为进行移动和觅食,这种“奇特”的群行为引起了研究者的兴趣。樽海鞘的链式群行为,通常个体首尾相接,形成一条“链”,依次跟随进行移动。在樽海鞘链中,分为领导者和追随者,领导者朝着食物移动并且指导着紧随其后的追随者的移动,追随者的移动按照严格的“等级”制度,只受前一个樽海鞘影响。这样的运动模式使樽海鞘链有很强的全局探索和局部开发能力。

1.1种群初始化

设搜索空间为 D×ND × ND×N 的欧氏空间,DDD 为空间维数,NNN 为种群数量。空间中樽海鞘的位置用 Xn=[Xn1,Xn2,...,XnD]TX_{n}=[X_{n1},X_{n2},...,X_{nD}]^{T}Xn​=[Xn1​,Xn2​,...,XnD​]T表示,食物的位置用Fn=[Fn1,Fn2,...,FnD]TF_{n}=[F_{n1},F_{n2},...,F_{nD}]^{T}Fn​=[Fn1​,Fn2​,...,FnD​]T表示,n=1,2,3,...,Nn=1,2,3,...,Nn=1,2,3,...,N。搜索空间的上界为ub=[ub1,ub2,...,ubD]ub=[ub_{1},ub_{2},...,ub_{D}]ub=[ub1​,ub2​,...,ubD​],下界为lb=[lb1,lb2,...,lbD]lb=[lb_{1},lb_{2},...,lb_{D}]lb=[lb1​,lb2​,...,lbD​]。
XD×N=rand(D,N).(ub(D,N)−lb(D,N))+lb(D,N)(1)X_{D×N}=rand(D,N).(ub(D,N)-lb(D,N))+lb(D,N)\tag{1} XD×N​=rand(D,N).(ub(D,N)−lb(D,N))+lb(D,N)(1)
种群中领导者用 Xd1X_{d}^{1}Xd1​表示,追随者用 XdiX_{d}^{i}Xdi​表示,i=2,3,4,...,N;d=1,2,3,...Di=2,3,4,...,N;d=1,2,3,...Di=2,3,4,...,N;d=1,2,3,...D

1.2 领导者位置更新

在樽海鞘链移动和觅食过程中,领导者的位置更新表示为:
Xd1={Fd+c1((ub−lb)c2+lb),c3≥0.5Fd−c1((ub−lb)c2+lb),c3<0.5(2)X_{d}^{1}=\begin{cases}F_{d}+c_{1}((ub-lb)c_{2}+lb),c_{3}\geq{0.5}\\ F_{d}-c_{1}((ub-lb)c_{2}+lb),c_{3}<0.5\end{cases}\tag{2} Xd1​={Fd​+c1​((ub−lb)c2​+lb),c3​≥0.5Fd​−c1​((ub−lb)c2​+lb),c3​<0.5​(2)
式中: Xd1X_{d}^{1}Xd1​和 FdF_{d}Fd​分别是第 ddd 维中第一个樽海鞘( 领导者) 的位置和食物的位置; ububub 和 lblblb 分别是对应的上下界。其中,c1、c2、c3c_{1}、c_{2}、c_{3}c1​、c2​、c3​是控制参数。

式( 2) 表明,领导者的位置更新仅与食物的位置有关。c1c_{1}c1​是优化算法中的收敛因子,起到平衡全局探索和局部开发的作用,是 SSA 中最重要的控制参数。c1c_{1}c1​的表达式为:
c1=2e−(4lL)2(3)c_{1}=2e^{-(\frac{4l}{L})^{2}}\tag{3} c1​=2e−(L4l​)2(3)
式中: lll 是当前迭代次数; LLL 是最大迭代次数。收敛因子是一个 2-0 的递减函数。

控制参数 c2、c3c_{2}、c_{3}c2​、c3​是[0,1]的随机数,用来增强Xd1X_{d}^{1}Xd1​的随机性,提高链群的全局搜索和个体多样性。

1.3 追随者位置更新

在樽海鞘链移动和觅食的过程中,追随者通过前后个体间的彼此影响,呈链状依次前进。它们的位移符合牛顿运动定律,追随者的运动位移为:
X=12at2+v0t(4)X=\frac{1}{2}at^{2}+v_{0}t\tag{4} X=21​at2+v0​t(4)
式中: ttt 是时间; aaa 是加速度,计算公式为a=(vfinal−v0)/ta=(v_{final}-v_{0})/ta=(vfinal​−v0​)/t;v0v_{0}v0​是初始速度,并且vfianl=(Xdi−Xdi−1)/tv_{fianl}=(X_{d}^{i}-X_{d}^{i-1})/tvfianl​=(Xdi​−Xdi−1​)/t。

考虑到在优化算法中,ttt 是迭代的,设迭代过程中t=1t = 1t=1,并且 v0=0v_{0}= 0v0​=0。那么式( 4) 可以表示为:
X=Xdi−Xdi−12(5)X=\frac{X_{d}^{i}-X_{d}^{i-1}}{2}\tag{5} X=2Xdi​−Xdi−1​​(5)
式中: i≥2i≥2i≥2; XdiX_{d}^{i}Xdi​和 Xdi−1X_{d}^{i-1}Xdi−1​分别是第 ddd 维中彼此紧连的两个樽海鞘的位置。因此,追随者的位置表示为:
Xdi′=Xdi−Xdi−12(6)X_{d}^{i'}=\frac{X_{d}^{i}-X_{d}^{i-1}}{2}\tag{6} Xdi′​=2Xdi​−Xdi−1​​(6)
式中,Xdi′X_{d}^{i'}Xdi′​和XdiX_{d}^{i}Xdi​分别是第 ddd 维中更新后的追随者的位置和更新前追随者的位置。

2.算法流程:

1)初始化种群。根据搜索空间每一维的上界与下界,利用式(1)初始化一个规模为N ×D 的樽海鞘 群。
2)计算初始适应度。计算 N 个樽海鞘的适应度值。
3)选定食物。由于实际定位时我们不知道目标(即食物)的位置,因此,将樽海鞘群按照适应度值进行排序,排在首位的适应度最优的樽海鞘的位置设为当前食物位置。
4)选定领导者与追随者。选定食物位置后,群体中剩余N −1 个樽海鞘,按照樽海鞘群体的排序,将排在前一半的樽海鞘视为领导者,其余樽海鞘视为追随者。
5)位置更新。首先根据式(2)更新领导者的位置,再根据式(6)更新追随者的位置。
6)计算适应度。计算更新后的群体的适应度。将更新后的每个樽海鞘个体的适应度值与当前食物的适应度值进行比较,若更新后樽海鞘的适应度值优于食物,则以适应度值更优的樽海鞘位置作为新的食物的位置。

7)重复步骤4)-步骤6),直到达到一定迭代次数或适应度值达到终止门限,满足终止条件后,输出当前的食物位置作为目标的估计位置。

3.算法结果

4.参考文献

[1]Seyedali Mirjalili,Amir H. Gandomi,Seyedeh Zahra Mirjalili,Shahrzad Saremi,Hossam Faris,Seyed Mohammad Mirjalili. Salp Swarm Algorithm: A bio-inspired optimizer for engineering design problems[J]. Advances in Engineering Software,2017.

[2]陈涛,王梦馨,黄湘松.基于樽海鞘群算法的无源时差定位[J].电子与信息学报,2018,40(07):1591-1597.

[3]王斐,贾晓洪,李丽娟,王忠勇.基于樽海鞘群算法的图像匹配方法[J].弹箭与制导学报,2019,39(05):111-114.

5.MATLAB 代码

樽海鞘群优化算法
改进算法matlab代码

名称 说明或者参考文献
多子群的共生非均匀高斯变异樽海鞘群算法 [1]陈忠云,张达敏,辛梓芸.多子群的共生非均匀高斯变异樽海鞘群算法[J/OL].自动化学报:1-9[2020-11-25].https://doi.org/10.16383/j.aas.c190684.
基于疯狂自适应的樽海鞘群算法 [1]张达敏,陈忠云,辛梓芸,张绘娟,闫威.基于疯狂自适应的樽海鞘群算法[J].控制与决策,2020,35(09):2112-2120.
混沌映射与动态学习的自适应樽海鞘群算法(CDSSA) [1]卓然,王未卿.混沌映射与动态学习的自适应樽海鞘群算法[J].计算机工程与设计,2021,42(07):1963-1972.
基于Levy飞行策略的改进樽海鞘群算法(LECUSSA) [1]张严,秦亮曦.基于Levy飞行策略的改进樽海鞘群算法[J].计算机科学,2020,47(07):154-160.
基于混沌映射的自适应樽海鞘群算法(CASSA) [1]童斌斌,何庆,陈俊.基于混沌映射的自适应樽海鞘群算法[J].传感技术学报,2021,34(01):41-48.
基于衰减因子和动态学习的改进樽海鞘群算法(RDSSA) [1]陈雷,蔺悦,康志龙.基于衰减因子和动态学习的改进樽海鞘群算法[J].控制理论与应用,2020,37(08):1766-1780.
集成随机惯性权重和差分变异操作的樽海鞘群算法(ISSA) [1]张志强,鲁晓锋,隋连升,李军怀.集成随机惯性权重和差分变异操作的樽海鞘群算法[J].计算机科学,2020,47(08):297-301.
面向全局搜索的自适应领导者樽海鞘群算法(ALSSA) [1]刘景森,袁蒙蒙,左方.面向全局搜索的自适应领导者樽海鞘群算法[J/OL].控制与决策:1-10[2021-07-30].https://doi.org/10.13195/j.kzyjc.2020.0090.
一种基于折射反向学习机制与自适应控制因子的改进樽海鞘群算法(RCSSA) [1]范千,陈振健,夏樟华.一种基于折射反向学习机制与自适应控制因子的改进樽海鞘群算法[J].哈尔滨工业大学学报,2020,52(10):183-191.
一种改进的樽海鞘群算法(MSSA) [1]陈连兴,牟永敏.一种改进的樽海鞘群算法[J].计算机应用研究,2021,38(06):1648-1652.
正弦余弦算法的樽海鞘群算法 [1]陈忠云,张达敏,辛梓芸.正弦余弦算法的樽海鞘群算法[J].计算机应用与软件,2020,37(09):209-214.

算法相关应用

名称 说明或者参考文献
基于樽海鞘算法的极限学习机(ELM)回归预测 https://blog.csdn.net/u011835903/article/details/111073635 (原理一样,只是优化算法为樽海鞘算法)
樽海鞘算法优化的PID参数优化 https://blog.csdn.net/u011835903/article/details/109306387(原理一样,只是优化算法为樽海鞘算法)

6.python代码

个人资料介绍

智能优化算法:樽海鞘群优化算法-附代码相关推荐

  1. 【学习笔记】【算法】【智能优化】粒子群优化(PSO)

    [学习笔记][算法][智能优化]粒子群优化(PSO) 文章目录 [学习笔记][算法][智能优化]粒子群优化(PSO) 1 算法背景 1.1 背景 1.2 基础知识 2 算法原理 2.1 基本原理 2. ...

  2. 基于粒子群算法优化的Elman神经网络数据预测-附代码

    基于粒子群算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于粒子群算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电 ...

  3. 智能微电网粒子群优化算法,可解决微电网经济性运行出力问题

    智能微电网粒子群优化算法:本程序适合于综合能源系统模型优化求解,可解决电气冷热优化求解问题,微电网包含蓄电池.微型燃气轮机以及和电网的交互,考虑24小时分时电价,以微电网运行经济性为目标,采用粒子群算 ...

  4. 基于布谷鸟算法优化的Elman神经网络数据预测-附代码

    基于布谷鸟算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于布谷鸟算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电 ...

  5. 基于鲸鱼算法优化的Elman神经网络数据预测-附代码

    基于鲸鱼算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于鲸鱼算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...

  6. 基于海鸥算法优化的Elman神经网络数据预测-附代码

    基于海鸥算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于海鸥算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...

  7. 基于遗传算法优化的Elman神经网络数据预测-附代码

    基于遗传算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于遗传算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...

  8. python 随机森林调参_Python机器学习实践:随机森林算法训练及调参-附代码

    原标题:Python机器学习实践:随机森林算法训练及调参-附代码 文章发布于公号[数智物语] (ID:decision_engine),关注公号不错过每一篇干货. 来源 | 博客园 作者 | 战争热诚 ...

  9. 基于蜣螂优化的Elman神经网络数据预测-附代码

    基于蜣螂算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于蜣螂算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...

  10. 【AI超级美发师】深度学习算法打造染发特效(附代码)

    [新智元导读]如今,在类似天天P图.美图秀秀等手机APP中,给指定照片或视频中的人物更换头发颜色已经是再正常不过的事情了.那么本文便介绍了该功能背后如AI头发分割模块.头发换色.颜色增强与修正模块等技 ...

最新文章

  1. JS可以写操作系统?Windows 95被装进Electron App
  2. Linux-diff和diff3命令
  3. MySQL 查询重复数据,删除重复数据保留id最小的一条作为唯一数据
  4. python的应用不是以下哪种_python的实际应用有哪些?
  5. 数据脱敏和加密_Apache ShardingSphere数据脱敏全解决方案详解
  6. JavaScript实现继承的几种方式
  7. C#: Writing a CookieContainer to Disk and Loading Back In For Use
  8. oracle排序后第一条,Oracle排序取第一条数据
  9. 使用cookies查询商品详情
  10. jQuery - slice( start, [end] ) Method
  11. Redraiment猜想----米勒拉宾+分块打表
  12. debian/ubuntu 64bit 安装 android sdk时adb无法编译的问题
  13. 量化投资发展史上的那些“决定性瞬间”
  14. 一次性奖金是否选择并入综合所得测算表
  15. 使用axios方式实现Ajax请求
  16. ESP32用Arduino编程实现CAN总线通讯
  17. python删除空值的行_python删除列为空的行的实现方法
  18. Docker删除Exited镜像
  19. 吴恩达首款产品Woebot现已推出,到底用了多难的AI技术?
  20. ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.26‘ not found (required

热门文章

  1. Dreamweaver简单的表格附加代码
  2. 二叉树的前中后序遍历的非递归形式【Java】
  3. 被称为“Google 最大黑科技”,开发谷歌大脑,这位 AI 掌门人到底有多牛?
  4. 谷歌大脑新工作:把注意力放在MLP上!
  5. FusionChartsFree参数说明
  6. VC编程实现运行Excel宏 Run
  7. Google Earth自动生成地形
  8. GNN-频域-2016:ChebNet【频谱图卷积】【切比雪夫多项式(ChebShev Polynomial)】【应用切比雪夫多项式加速特征矩阵求解】【GCN来源于对ChebNet的进一步简化与近似】
  9. matlab电磁场 有限元,电磁场有限元Matlab解法.pdf
  10. cad字体安装_史上最全CAD字体库,3000+种字体!没有人能安装全!