樽海鞘算法(Salp Swarm Algorithm: SSA)

樽海鞘算法(SSA)是2017年提出的一种元启发式算法,受海洋生物樽海鞘群体行为启发。算法通过初始化种群、适应度评估和更新规则寻找问题最优解。领导者和追随者的更新策略分别基于动态步长和前一个樽海鞘的位置。SSA结构简单,收敛速度快,适用于工程设计问题。

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

1.算法背景

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

2.数学模型

2.1对应关系

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

2.2位置更新

为了方便理解, x j i x^i_j xji上标表示种群的规模,即第几个候选解,下标则表示问题的维度

1.首先是种群初始化
X = [ x 1 1 x 2 1 . . . x d 1 x 1 2 x 2 2 . . . x d 2 . . . . . . . . . . . . x 1 n x 2 n . . . x d n ] 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= x11x12...x1nx21x22...x2n............xd1xd2...xdn
x j i = r a n d ∗ ( u b j − l b j ) + l b j , 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(ubjlbj)+lbj,i{1,2,...,n},j{1,2,...,d}
其中, X X X是一个 n ∗ d n*d nd 的矩阵( n n n代表种群规模,即有多少个候选解; d d d代表问题的维度), u b ub ub 表示问题的上界, l b lb lb 表示问题的下界, r a n d rand rand 表示随机生成的一个0~1的随机数。
举个栗子 y = x 1 2 + x 2 2 y=x_1^2+x_2^2 y=x12+x22,问题的维度是2,假设它上下界 u b = [ 10 , 10 ] ub=[10, 10] ub=[10,10]; l b = [ − 10 , − 10 ] lb=[-10, -10] lb=[10,10](这个范围是根据问题来假设的), 那么 x i x^i xi的最大取值为[10,10],最小取值为[-10, -10],问题的最小值为0(当 x i x^i xi取 [0, 0] 的时候)

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

(2) r 1 = 2 e − ( 4 t T ) 2 r_1=2e^{-(\frac {4t}{T})^2} r1=2e(T4t)2
其中, j j j表示问题的维度, x j ( 1 ) x^{(1)}_j xj(1)表示第一个尊海鞘的第 j j j个维度, F j F_j Fj 表示第 j j j维度的全局最优位置(食物的位置), r 1 r_1 r1 是一个随着算法迭代逐渐减小的值(动态更新步长), t t t 表示当前迭代次数, T T T 表示最大迭代次数,其变化曲线如下图所示; r 2 r_2 r2 是一个0~1的随机数, r 3 r_3 r3 也是一个0~1的随机数,用于控制领导者的在两种更新方式中进行选择。在这里插入图片描述

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

算法流程图:
在这里插入图片描述

3.函数例子

f1
在这里插入图片描述
该函数是一个经典单峰函数,测试的参数取:
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. 注脚的解释 ↩︎ ↩︎ ↩︎

评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

再加一点马力

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

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

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

打赏作者

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

抵扣说明:

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

余额充值