智能优化算法:樽海鞘群优化算法-附代码
文章目录
摘要:樽海鞘群算法( salp swarm algorithm,SSA)是Seyedali Mirjalili等于2017年提出的一种新型智能优化算法[1]。 该算法模拟了樽海鞘链的群体行为,是一种较新颖的群智能优化算法。每次迭代中,领导者指导追随者,以一种链式行为,向食物移动。移动过程中,领导者进行全局探索,而追随者则充分进行局部探索,大大减少了陷入局部最优的情况。
1.算法原理
樽海鞘是一种海洋无脊椎动物,身体呈桶状且几乎完全透明,以水中浮游植物为食,通过吸入和喷出海水完成在水中移动。在深海中,樽海鞘以一种链式的群行为进行移动和觅食,这种“奇特”的群行为引起了研究者的兴趣。樽海鞘的链式群行为,通常个体首尾相接,形成一条“链”,依次跟随进行移动。在樽海鞘链中,分为领导者和追随者,领导者朝着食物移动并且指导着紧随其后的追随者的移动,追随者的移动按照严格的“等级”制度,只受前一个樽海鞘影响。这样的运动模式使樽海鞘链有很强的全局探索和局部开发能力。
1.1种群初始化
设搜索空间为
D
×
N
D × N
D×N 的欧氏空间,
D
D
D 为空间维数,
N
N
N 为种群数量。空间中樽海鞘的位置用
X
n
=
[
X
n
1
,
X
n
2
,
.
.
.
,
X
n
D
]
T
X_{n}=[X_{n1},X_{n2},...,X_{nD}]^{T}
Xn=[Xn1,Xn2,...,XnD]T表示,食物的位置用
F
n
=
[
F
n
1
,
F
n
2
,
.
.
.
,
F
n
D
]
T
F_{n}=[F_{n1},F_{n2},...,F_{nD}]^{T}
Fn=[Fn1,Fn2,...,FnD]T表示,
n
=
1
,
2
,
3
,
.
.
.
,
N
n=1,2,3,...,N
n=1,2,3,...,N。搜索空间的上界为
u
b
=
[
u
b
1
,
u
b
2
,
.
.
.
,
u
b
D
]
ub=[ub_{1},ub_{2},...,ub_{D}]
ub=[ub1,ub2,...,ubD],下界为
l
b
=
[
l
b
1
,
l
b
2
,
.
.
.
,
l
b
D
]
lb=[lb_{1},lb_{2},...,lb_{D}]
lb=[lb1,lb2,...,lbD]。
X
D
×
N
=
r
a
n
d
(
D
,
N
)
.
(
u
b
(
D
,
N
)
−
l
b
(
D
,
N
)
)
+
l
b
(
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)
种群中领导者用
X
d
1
X_{d}^{1}
Xd1表示,追随者用
X
d
i
X_{d}^{i}
Xdi表示,
i
=
2
,
3
,
4
,
.
.
.
,
N
;
d
=
1
,
2
,
3
,
.
.
.
D
i=2,3,4,...,N;d=1,2,3,...D
i=2,3,4,...,N;d=1,2,3,...D
1.2 领导者位置更新
在樽海鞘链移动和觅食过程中,领导者的位置更新表示为:
X
d
1
=
{
F
d
+
c
1
(
(
u
b
−
l
b
)
c
2
+
l
b
)
,
c
3
≥
0.5
F
d
−
c
1
(
(
u
b
−
l
b
)
c
2
+
l
b
)
,
c
3
<
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)
式中:
X
d
1
X_{d}^{1}
Xd1和
F
d
F_{d}
Fd分别是第
d
d
d 维中第一个樽海鞘( 领导者) 的位置和食物的位置;
u
b
ub
ub 和
l
b
lb
lb 分别是对应的上下界。其中,
c
1
、
c
2
、
c
3
c_{1}、c_{2}、c_{3}
c1、c2、c3是控制参数。
式( 2) 表明,领导者的位置更新仅与食物的位置有关。
c
1
c_{1}
c1是优化算法中的收敛因子,起到平衡全局探索和局部开发的作用,是 SSA 中最重要的控制参数。
c
1
c_{1}
c1的表达式为:
c
1
=
2
e
−
(
4
l
L
)
2
(3)
c_{1}=2e^{-(\frac{4l}{L})^{2}}\tag{3}
c1=2e−(L4l)2(3)
式中:
l
l
l 是当前迭代次数;
L
L
L 是最大迭代次数。收敛因子是一个 2-0 的递减函数。
控制参数 c 2 、 c 3 c_{2}、c_{3} c2、c3是[0,1]的随机数,用来增强 X d 1 X_{d}^{1} Xd1的随机性,提高链群的全局搜索和个体多样性。
1.3 追随者位置更新
在樽海鞘链移动和觅食的过程中,追随者通过前后个体间的彼此影响,呈链状依次前进。它们的位移符合牛顿运动定律,追随者的运动位移为:
X
=
1
2
a
t
2
+
v
0
t
(4)
X=\frac{1}{2}at^{2}+v_{0}t\tag{4}
X=21at2+v0t(4)
式中:
t
t
t 是时间;
a
a
a 是加速度,计算公式为
a
=
(
v
f
i
n
a
l
−
v
0
)
/
t
a=(v_{final}-v_{0})/t
a=(vfinal−v0)/t;
v
0
v_{0}
v0是初始速度,并且
v
f
i
a
n
l
=
(
X
d
i
−
X
d
i
−
1
)
/
t
v_{fianl}=(X_{d}^{i}-X_{d}^{i-1})/t
vfianl=(Xdi−Xdi−1)/t。
考虑到在优化算法中,
t
t
t 是迭代的,设迭代过程中
t
=
1
t = 1
t=1,并且
v
0
=
0
v_{0}= 0
v0=0。那么式( 4) 可以表示为:
X
=
X
d
i
−
X
d
i
−
1
2
(5)
X=\frac{X_{d}^{i}-X_{d}^{i-1}}{2}\tag{5}
X=2Xdi−Xdi−1(5)
式中:
i
≥
2
i≥2
i≥2;
X
d
i
X_{d}^{i}
Xdi和
X
d
i
−
1
X_{d}^{i-1}
Xdi−1分别是第
d
d
d 维中彼此紧连的两个樽海鞘的位置。因此,追随者的位置表示为:
X
d
i
′
=
X
d
i
−
X
d
i
−
1
2
(6)
X_{d}^{i'}=\frac{X_{d}^{i}-X_{d}^{i-1}}{2}\tag{6}
Xdi′=2Xdi−Xdi−1(6)
式中,
X
d
i
′
X_{d}^{i'}
Xdi′和
X
d
i
X_{d}^{i}
Xdi分别是第
d
d
d 维中更新后的追随者的位置和更新前追随者的位置。
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代码
个人资料介绍