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

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∗(ubj−lbj)+lbj,i∈{1,2,...,n},j∈{1,2,...,d}
其中,
X
X
X是一个
n
∗
d
n*d
n∗d 的矩阵(
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+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).
樽海鞘算法(SSA)是2017年提出的一种元启发式算法,受海洋生物樽海鞘群体行为启发。算法通过初始化种群、适应度评估和更新规则寻找问题最优解。领导者和追随者的更新策略分别基于动态步长和前一个樽海鞘的位置。SSA结构简单,收敛速度快,适用于工程设计问题。

591

被折叠的 条评论
为什么被折叠?



