智能优化算法:人工水母搜索算法
摘要:人工水母搜索算法(artificial Jellyfish Search (JS) optimizer)是于2020年提出的一种基于新型优化算法。具有寻优能力强,收敛速度快等特点。
1.算法原理
人工水母搜索算法模拟水母的搜寻行为,涉及到它们跟随洋流,它们在水母群中的运动(主动运动和被动运动),这些运动之间切换的时间控制机制,以及它们汇聚成水母簇的过程。算法中,存在以上两种假定:水母要么跟随洋流,要么在群体内部移动,而“时间控制机制”控制着这些移动类型之间的转换。水母在海洋中移动寻找食物。他们更容易被吸引到食物供应量更大的地方
1.1 洋流
洋流含有大量的营养物质,所以水母被吸引过来。洋流的方向是由海洋中每只水母向目前位于最佳位置的水母的所有向量的平均值决定的,由公式(1)-(3)所示。
t
r
e
n
d
⃗
=
∑
t
r
e
n
d
i
⃗
n
p
o
p
(1)
\vec{trend}=\frac{\sum \vec{trend_i}}{n_{pop}} \tag{1}
trend=npop∑trendi(1)
t r e n d ⃗ = X ∗ − d f (2) \vec{trend}=X^*-df \tag{2} trend=X∗−df(2)
d f = e c u (3) df=e_cu \tag{3} df=ecu(3)
其中:
n
p
o
p
n_{pop}
npop为水母数量。
X
∗
X^*
X∗为当前水母种群的最优位置,为
e
c
e_c
ec控制吸引力的因子由式(4)确定,
u
u
u为所有水母的平均位置,
d
f
df
df为目前水母最佳位置和所有水母的平均位置之间的差异由式(5)确定。
e
c
=
β
∗
r
a
n
d
(
0
,
1
)
(4)
e_c=\beta*rand(0,1)\tag{4}
ec=β∗rand(0,1)(4)
d f = β ∗ r a n d ( 0 , 1 ) ∗ u (5) df=\beta*rand(0,1)*u \tag{5} df=β∗rand(0,1)∗u(5)
每只水母的新位置:
X
i
(
t
+
1
)
=
X
i
(
t
)
+
r
a
n
d
(
0
,
1
)
∗
t
r
e
n
d
⃗
(6)
X_i(t+1)=X_i(t)+rand(0,1)*\vec{trend}\tag{6}
Xi(t+1)=Xi(t)+rand(0,1)∗trend(6)
即:
X
i
(
t
+
1
)
=
X
i
(
t
)
+
r
a
n
d
(
0
,
1
)
∗
(
X
∗
−
β
∗
r
a
n
d
(
0
,
1
)
∗
u
)
(7)
X_i(t+1)=X_i(t)+rand(0,1)*(X^*-\beta*rand(0,1)*u)\tag{7}
Xi(t+1)=Xi(t)+rand(0,1)∗(X∗−β∗rand(0,1)∗u)(7)
其中
β
=
3
\beta=3
β=3,分配系数。
1.2 水母群
类型A运动是水母围绕它们自己的位置运动,每个水母的相应更新位置:
X
i
(
t
+
1
)
=
X
i
(
t
)
+
γ
∗
r
a
n
d
(
0
,
1
)
∗
(
U
b
−
L
b
)
(8)
X_i(t+1)=X_i(t)+\gamma *rand(0,1)*(U_b-L_b)\tag{8}
Xi(t+1)=Xi(t)+γ∗rand(0,1)∗(Ub−Lb)(8)
其中:
U
b
U_b
Ub 和
L
b
L_b
Lb是搜索空间的上界和下界,
γ
=
0.1
γ=0.1
γ=0.1为运动系数。
为了模拟B型水母的运动,我们随机选取一只水母(j)作为感兴趣的水母(i)至选定的水母(j)的矢量,以确定其运动方向。当选定的海蜇(j)所在地点的食物数量超过(i)有关海蜇所在地点的食物数量时,(i)有关海蜇所在地点的食物数量超过(i)有关海蜇所在地点的食物数量时,(j)有关海蜇所能获得的食物数量低于(i)有关海蜇所能获得的食物数量时,(j)有关海蜇所能获得的食物数量便会直接远离(j)有关海蜇。因此,每只水母都朝着更好的方向移动,寻找群体中的食物。水母的运动方向和更新的位置:
S
t
e
p
⃗
=
X
i
(
t
+
1
)
−
X
i
(
t
)
(9)
\vec{Step}=X_i(t+1)-X_i(t) \tag{9}
Step=Xi(t+1)−Xi(t)(9)
w h e r e S t e p ⃗ = r a n d ( 0 , 1 ) ∗ D i r e c t i o n ⃗ (10) where\, \vec{Step}=rand(0,1)*\vec{Direction} \tag{10} whereStep=rand(0,1)∗Direction(10)
D i r e c t i o n ⃗ = { X j ( t ) − X i ( t ) , f ( X i ) ≥ f ( X j ) X i ( t ) − X j ( t ) , e l s e (11) \vec{Direction}=\begin{cases} X_j(t)-X_i(t),f(X_i)\geq f(X_j)\\ X_i(t)-X_j(t),else\end{cases} \tag{11} Direction={Xj(t)−Xi(t),f(Xi)≥f(Xj)Xi(t)−Xj(t),else(11)
X i ( t + 1 ) = X i ( t ) + S t e p ⃗ (12) X_i(t+1)=X_i(t)+\vec{Step}\tag{12} Xi(t+1)=Xi(t)+Step(12)
1.3 时间控制机制
时间控制公式如下:
c
(
t
)
=
∣
(
1
−
t
M
a
x
i
t
e
r
)
∗
(
2
∗
r
a
n
d
(
0
,
1
)
−
1
)
∣
(13)
c(t)=|(1-\frac{t}{Max_{iter}})*(2*rand(0,1)-1)|\tag{13}
c(t)=∣(1−Maxitert)∗(2∗rand(0,1)−1)∣(13)
其中:
t
t
t为迭代次数,
M
a
x
i
t
e
r
Max_{iter}
Maxiter为最大迭代次数。
1.4 种群初始化
水母位置初始化
X
i
+
1
=
η
X
i
(
1
−
X
i
)
,
0
≤
X
0
≤
1
(14)
X_{i+1}=\eta X_i(1-X_i),0\leq X_0\leq1 \tag{14}
Xi+1=ηXi(1−Xi),0≤X0≤1(14)
其中:
X
i
X_i
Xi为第i类水母的Logistic逻辑混沌值;
X
0
X_0
X0为水母的初始位置范围[0,1]但不等于0,0.25,0.75,0.5,1.0,
η
=
4.0
\eta=4.0
η=4.0。
1.5 边界条件
海洋分布在世界各地。地球大约是球形的,所以当水母移出有界的搜索区域时,它会回到相反的界限:
{
X
i
,
d
′
=
(
X
i
,
d
−
U
b
,
d
)
+
L
b
(
d
)
,
i
f
X
i
,
d
>
U
b
,
d
X
i
,
d
′
=
(
X
i
,
d
−
L
b
,
d
)
+
U
b
(
d
)
,
i
f
X
i
,
d
<
L
b
,
d
(15)
\begin{cases} X'_{i,d} =(X_{i,d}-U_{b,d})+L_b(d) ,if\, X_{i,d}>U_{b,d}\\ X'_{i,d}=(X_{i,d}-L_{b,d})+U_b(d),if\, X_{i,d}<L_{b,d} \end{cases}\tag{15}
{Xi,d′=(Xi,d−Ub,d)+Lb(d),ifXi,d>Ub,dXi,d′=(Xi,d−Lb,d)+Ub(d),ifXi,d<Lb,d(15)
X
i
,
d
X_{i,d}
Xi,d为第
i
i
i只水母在
d
d
d维的位置,
X
’
i
,
d
X’_{i,d}
X’i,d为更新后的水母位置,
U
b
,
d
U_{b,d}
Ub,d和
L
b
,
d
L_{b,d}
Lb,d为搜索空间的上下限。
算法流程:
步骤1:初始化算法水母种群。
步骤2:评估适应度值确定初始最优位置。
步骤3:更新时间控制参数 c ( t ) c(t) c(t)。
步骤4:根据洋流更新水母位置.
步骤5:更加运动类型分别更新类型A和B的水母位置。
步骤6:重新评估适应度值及更新水母最优位置。
步骤7:判断是否满足最大迭代次数,若满足,则输出最优位置和全局最优解,否则,返回步骤3重新迭代计算。
2.算法结果
3.参考文献
[1] Jui-Sheng Chou et al., A novel metaheuristic optimizer inspired by behavior of jellyfish in ocean. Applied Mathematics and Computation.