@[群智能算法](樽海鞘算法(Salp Swarm Algorithm: SSA))

1.算法背景

樽海鞘群算法(SSA) 1是S.Mirjalili等人于2017年提出的一种元启发式算法。SSA是受海洋中的樽海鞘的成群行为启发的,樽海鞘是一种透明的生物,通过抽水穿过它们的身体在水中移动,它们在捕食时会形成 樽海鞘链 ,以方便种群的快速移动。如下图 1所示,(a)表示樽海鞘个体;(b)表示樽海鞘链。

2.数学模型

2.1对应关系

SSA算法 优化问题
樽海鞘 候选解
海洋范围 搜索空间
食物的浓度 解的质量
排在第一的樽海鞘 全局最优解

2.2位置更新

为了方便理解,xjix^i_jxji​ 的上标表示种群的规模,即第几个候选解,下标则表示问题的维度

1.首先是种群初始化
X=[x11x21...xd1x12x22...xd2............x1nx2n...xdn]X= \left[ \begin{matrix} x^1_1&x^1_2&...&x^1_d \\ x^2_1&x^2_2&...&x^2_d \\ ...&...&...&... \\ x^n_1&x^n_2&...&x^n_d \\ \end{matrix} \right] X=⎣⎡​x11​x12​...x1n​​x21​x22​...x2n​​............​xd1​xd2​...xdn​​⎦⎤​
xji=rand∗(ubj−lbj)+lbj,i∈{1,2,...,n},j∈{1,2,...,d}x^i_j=rand*(ub_j-lb_j)+lb_j,i \in \{1,2,...,n\},j \in \{1,2,...,d\}xji​=rand∗(ubj​−lbj​)+lbj​,i∈{1,2,...,n},j∈{1,2,...,d}
其中,XXX是一个 n∗dn*dn∗d 的矩阵(nnn代表种群规模,即有多少个候选解;ddd代表问题的维度), ububub 表示问题的上界,lblblb 表示问题的下界, randrandrand 表示随机生成的一个0~1的随机数。
举个栗子:y=x12+x22y=x_1^2+x_2^2y=x12​+x22​,问题的维度是2,假设它上下界ub=[10,10]ub=[10, 10]ub=[10,10];lb=[−10,−10]lb=[-10, -10]lb=[−10,−10](这个范围是根据问题来假设的), 那么xix^ixi的最大取值为[10,10],最小取值为[-10, -10],问题的最小值为0(当xix^ixi取 [0, 0] 的时候)

2.樽海鞘的更新
初始化种群后,会对每个樽海鞘进行适应度的评估,并按照适应度值进行排序,适应度最高的,排在第一位。算法会将樽海鞘群分为两组: 领导者追随者 。领导者是链条前部的樽海鞘(排名靠前的樽海鞘),而其余的樽海鞘则是追随者。
领导者更新公式:
(1)

(2)r1=2e−(4tT)2r_1=2e^{-(\frac {4t}{T})^2}r1​=2e−(T4t​)2
其中,jjj表示问题的维度,xj(1)x^{(1)}_jxj(1)​表示第一个尊海鞘的第jjj个维度,FjF_jFj​ 表示第jjj维度的全局最优位置(食物的位置),r1r_1r1​ 是一个随着算法迭代逐渐减小的值(动态更新步长),ttt 表示当前迭代次数,TTT 表示最大迭代次数,其变化曲线如下图所示;r2r_2r2​ 是一个0~1的随机数,r3r_3r3​ 也是一个0~1的随机数,用于控制领导者的在两种更新方式中进行选择。

跟随者更新公式:
(3)xji=12(xji+xji−1)x^i_j=\frac {1}{2}(x^i_j+x^{i-1}_j)xji​=21​(xji​+xji−1​)
这个公式表示,跟随者樽海鞘会向自己前一个樽海鞘移动,移动的距离是自己到对方距离的一半(原文中,这个公式是由牛顿第二定律推出来的,这里不展开推算)。

算法流程图:

3.函数例子



该函数是一个经典单峰函数,测试的参数取:
1.搜索空间维度(dim):30
2.函数的上界(ub):100
3.函数的下界(lb):-100
4.该函数的最优值为(fmin):0
原文1写到,将种群规模设置为30,最大迭代次数为500,能搜索到最优值 0 。

结语:
樽海鞘算法是群智能算法中结构比较简单的算法,容易理解并实现而且收敛速度也比较快。这也是本人第一次写的比较完整一点笔记,花费的时间也有点少,还有很多不会撰写的地方,还是有些麻烦的。。。后面寒假有时间,会再来完善完善的,这也是让自己便优秀的一个过程。
参考文献的第一篇是原论文,第二篇是关于SSA的综述,有兴趣的读者可以先看看综述,这样可以快速的了解SSA算法的发展。

4.参考文献

[1] Mirjalili, S. , Gandomi, A. H. , Mirjalili, S. Z. , Saremi, S. , Faris, H. , & Mirjalili, S. M. . (2017). Salp swarm algorithm: a bio-inspired optimizer for engineering design problems. Advances in Engineering Software, 114(dec.), 163-191.
[2] Abualigah, L. , Shehab, M. , Alshinwan, M. , & Alabool, H. . (2020). Salp swarm algorithm: a comprehensive survey. Neural Computing and Applications, 32(15).


  1. 注脚的解释 ↩︎ ↩︎ ↩︎

樽海鞘算法(Salp Swarm Algorithm: SSA)相关推荐

  1. 【樽海鞘算法】基于樽海鞘算法求解单目标问题附matlab代码(Salp Swarm Algorithm,SSA)

    1 简介 2 部分代码 %_________________________________________________________________________________% Salp ...

  2. 【优化求解】基于鸟群算法(Bird Swarm Algorithm)求解单目标最优matlab代码

    1 简介 鸟群算法( bird swarm alogrithm,BSA) 是由 Meng 等人于 2015 年提出的一种基于鸟群行为的群智能优化算法,其思想源于鸟群的飞行.觅食和警戒三个主要群体行为, ...

  3. 基于分解的改进型双目樽海鞘算法在有多辆自动导引车的柔性制造蜂窝环境中的绿色调度问题

    文献翻译来源 [1]An improved bi-objective salp swarm algorithm based on decomposition for green scheduling ...

  4. 基于MATLAB樽海鞘算法SSA(麻雀算法(十一)也简称SSA)的Eggholeer函数优化,测试函数的100种优化方法之十二

    樽海鞘算法优化 Eggholder测试函数 樽海鞘算法SSA(麻雀算法也简称SSA,如果想了解麻雀算法,看方法十一)模拟了樽海鞘的聚集成链的生活习性而提出的优化算法,是近几年刚推出的新算法之一.算法将 ...

  5. 智能优化算法之松鼠算法(Squirrel search algorithm)

    文章目录 背景 Squirrel search algorithm(SSA) SSA Random initialization(随机初始化) Fitness evaluation(适应值评价) So ...

  6. 【智能优化算法】鸡群算法 (Chicken Swarm Optimization, CSO),2014

    前言 鸡群算法 (Chicken Swarm Optimization,CSO) 是一种新颖的仿生学算法,充分继承群智能优化特点,创新采用个体分类.协作优化,最大程度挖掘最优解,又能很好避免早熟现象. ...

  7. HBA-蜜獾算法(Honey Badger Algorithm,HBA)(算法源码可复制)

    蜜獾算法(Honey Badger Algorithm,HBA)是于2021年提出的一种新型智能优化算法,该算法主要通过模拟蜜獾智能觅食行为来进行寻优,具有寻优能力强,收敛速度快等特点 论文题目:Ho ...

  8. 《OpenCV3编程入门》学习笔记8 图像轮廓与图像分割修复(五)分水岭算法(watershed algorithm)

    8.5 分水岭算法(watershed algorithm) 1.基于拓扑理论的数学形态学的分割方法. 2.基本思想:把图像看作测地学上的拓扑地貌,图像中每一点像素的灰度值表示该点的海拔高度,每一个局 ...

  9. 感知哈希算法(perceptual hash algorithm),

    感知哈希算法(perceptual hash algorithm),它的作用是对每张图像生成一个"指纹"(fingerprint)字符串,然后比较不同图像的指纹.结果越接近,就说明 ...

  10. 谷歌的网页排序算法(PageRank Algorithm)

    本文将介绍谷歌的网页排序算法(PageRank Algorithm),以及它如何从250亿份网页中捞到与你的搜索条件匹配的结果.它的匹配效果如此之好,以至于"谷歌"(google) ...

最新文章

  1. 【Python】重载模块
  2. python中算法(sklearn)的最优超参数寻优:skopt贝叶斯搜索
  3. linux oracle 脚本,Linux的Oracle服务脚本
  4. 汇编语言第二课作业2.1
  5. java实现图片对比功能_Java 照片对比功能的实现
  6. 2019-02-24-算法-进化
  7. javaone_JavaOne 2014:会议与合同利益冲突
  8. react中的核心概念
  9. 语言用符号打印出落叶的图案_普通语言学概要(第一章第二节,语言是符号系统)...
  10. java+mysql企业进销存管理系统
  11. 电脑html5播放黑屏,电脑看视频黑屏,教您电脑看视频黑屏有声音怎么办
  12. html父子页面关系,html元素的父子关系的使用
  13. 有域名得git是怎么弄得_部署到Github Pages上的博客,自定义域名,和免费域名如何申请...
  14. 阿里巴巴使用的Rax源码
  15. Spring中的 @Lazy注解简析
  16. Yolov5训练自己的数据集+TensorRT加速+Qt部署
  17. 机电团队怎么使用软件系统快速实施 部署
  18. 一种基于加密域的数字图像水印算法的设计与实现(附Matlab源码)
  19. nmn吃第一天有什么感觉,吃完nmn的反应,一点点体会
  20. python三剑客是什么意思_linux三剑客是什么意思

热门文章

  1. NanoHTTPD 获取请求ip
  2. 如何查看dSYM文件的UUID?
  3. 《我和PIC单片机:基于PIC18》——导读
  4. 计算机实验报告protel,Protel 99 SE使用基础 实验报告.doc
  5. 2022-2028年中国电力载波通信行业市场行情动态及竞争战略分析报告
  6. JavaFX屏幕截图工具ScreenCapture
  7. 枪林弹雨显示服务器正在维修,枪林弹雨Patcher 已停止工作解决方法教程
  8. Java applet详解
  9. Arduino与Proteus仿真实例-74LS138译码器驱动仿真
  10. 系统报.NET Framework 3.5缺失无法安装问题解决方案