多方向螺旋搜索的混沌海鸥优化算法
文章目录
摘要:针对海鸥优化算法(SOA)寻优路径单一、寻优精度较低、易陷入局部最优等问题,提出新的多方向螺旋搜索的混沌海鸥优化算法(Multi-directional Exploring Seagull Optimization Algorithm Based On Chaotic Map MESOA)。首先,利用混沌序列对海鸥种群进行初始化,令海鸥个体分布更加均匀,能够更加准确地接近目标;其次,让海鸥选择不同方向的螺旋飞行路径,使海鸥飞行路径不再单一,增加算法多样性;最后,根据算法收敛情况进行围绕目标的小范围搜索,避免算法过早收敛,提高算法跳出局部最优的能力。
1.海鸥优化算法
基础海鸥优化算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/107535864
2. 改进海鸥优化算法
2.1 Kent映射初始化
原本的海鸥优化算法初始化是在上下界内随机生成海 鸥个体的位置, 这样的初始化可能会使海鸥在空间中位置分 布得不均匀, 导致算法早熟, 陷入局部最优解。为了解决这 一问题,本文提出基于 Kent 混沌序列的初始化形式。
由于混沌映射的随机性、遍历性等性质, 可将其用于群 智能算法种群的初始化中。其原理是利用混沌映射产生的在 [0,1]之间的序列, 再根据混沌因子对海鸥种群进行初始化。 这样可以控制海鸥在最初的分布更加合理, 避免早熟。Kent 映射的数学模型由式 (11) 给出:
x
n
+
1
=
{
x
n
a
0
<
x
n
≤
a
1
−
x
n
(
1
−
a
)
a
<
x
n
<
1
(11)
\begin{aligned} &x_{n+1}= &\left\{\begin{array}{lr} \frac{x_n}{a} & 0<x_n \leq a \\ \frac{1-x_n}{(1-a)} & a<x_n<1 \end{array}\right. \end{aligned}\tag{11}
xn+1={axn(1−a)1−xn0<xn≤aa<xn<1(11)
当
a
=
0.5
a=0.5
a=0.5 时, 系统会呈现短周期状态, 故本文中
a
a
a 的取 值范围是 (0.01,0.5)。利用混沌映射初始化的模型由式 (12) 给出。
x
=
x
min
+
Chaos
∗
(
x
max
−
x
min
)
(12)
x=x_{\min }+\operatorname{Chaos} *\left(x_{\max }-x_{\min }\right) \tag{12}
x=xmin+Chaos∗(xmax−xmin)(12)
其中,
x
min
x_{\min }
xmin 与
x
max
x_{\max }
xmax 分别代表自变量取值的下限和上限。 Chaos为Kent 映射函数产生的混沌因子。
2.2 多方向螺旋飞行路径
在初始的海鸥算法中, 攻击阶段的位置更新方式如按照 公式(6)所示。从式中可以看出, 海鸥在经过迁移过后, 基 于迁移过后的位置依照给定的行动模型寻找攻击位置。由于 行动模型单一化, 海鸥移动时存在飞行死角, 导致有可能错 过最优位置。即搜索过程中找不到最优值, 只能找到局部最 优值的情况。为解决这一问题, 本文提出以下这种新的海鸥 攻击位置更新方式。
P
s
(
t
)
=
{
T
s
(
t
)
∗
x
∗
y
∗
z
+
P
b
s
(
t
)
r
1
<
a
(
T
s
(
t
)
+
x
+
y
+
z
)
∗
P
b
s
(
t
)
r
1
≥
a
(13)
P_s(t)=\left\{\begin{array}{cc} T_s(t) * x * y * z+P_{b s}(t) & r 1<a \\ \left(T_s(t)+x+y+z\right) * P_{b s}(t) & r 1 \geq a \end{array}\right. \tag{13}
Ps(t)={Ts(t)∗x∗y∗z+Pbs(t)(Ts(t)+x+y+z)∗Pbs(t)r1<ar1≥a(13)
其中
r
1
r 1
r1 是在
(
0
,
1
)
(0,1)
(0,1) 之间的随机数,
a
a
a 为海鸥选择更新方 式的阈值, 在多次实验之后得出取值为
0.8
0.8
0.8 最为合适, 此时
T
s
(
t
)
T_s(t)
Ts(t) 为适应多方向螺旋的海鸥迁移位置, 如式 (14) 所示。
T
s
(
t
)
=
C
s
(
t
)
+
M
s
(
t
)
(14)
T_s(t)=C_s(t)+M_s(t) \tag{14}
Ts(t)=Cs(t)+Ms(t)(14)
P
b
s
(
t
)
、
C
s
(
t
)
、
M
s
(
t
)
P_{b s}(t) 、 C_s(t) 、 M_s(t)
Pbs(t)、Cs(t)、Ms(t) 含义已在海鸥优化算法中介绍 过。经过改进的位置更新方式让海鸥根据阈值选择攻击方式, 两种不同的攻击方式使海鸥的飞行轨迹不再单一, 能够搜索 更多的区域。两种不同攻击方式交替进行, 缩小了海鸥飞行 死角, 减少了飞行斍区。以不同的方式, 可以得到不一样的 结果, 即以不同的角度更新最优值, 增加了算法的多样性。
2.3 根据收敛情况进行小范围搜索
基于原始的海鸥算法存在易陷入局部最优值这一问题, 本文提出一种新的位置更新机制。在每次迭代时计算种群中 海鸥适应度的方差, 根据方差的大小来判断是否围绕目标位 置进行小范围的搜索。具体数学表达如式(15)和(16)所 示。
δ
=
∑
i
n
(
(
P
s
(
i
)
−
P
a
v
g
P
b
s
−
P
l
s
)
∧
2
)
(15)
\delta=\sum_i^n\left(\left(\frac{P_s(i)-P_{a v g}}{P_{b s}-P_{l s}}\right)^{\wedge} 2\right) \tag{15}
δ=i∑n((Pbs−PlsPs(i)−Pavg)∧2)(15)
其中
δ
\delta
δ 表示方差,
n
\mathrm{n}
n 为海鸥的种群数量,
P
S
(
i
)
P_S(i)
PS(i) 为第
i
\mathrm{i}
i 个 海鸥种群的适应度,
P
a
v
g
P_{a v g}
Pavg 为海鸥种群的平均适应度,
P
b
s
P_{b s}
Pbs 为种 群中的最优适应度,
P
l
s
P_{l s}
Pls 为种群的最差适应度。
当
δ
<
b
\delta<b
δ<b 时, 为了避免算法过快收敛, 新的位置更新公 式如式 (11):
P
s
(
t
)
=
P
s
(
t
−
1
)
∗
(
1
+
sin
(
R
)
)
(16)
P_s(t)=P_s(t-1) *(1+\sin (\mathrm{R})) \tag{16}
Ps(t)=Ps(t−1)∗(1+sin(R))(16)
其中
P
s
(
t
−
1
)
P_s(t-1)
Ps(t−1) 表示上一次迭代时的位置,
R
\mathrm{R}
R 为在
(
−
2
,
2
)
(-2,2)
(−2,2) 区间内服从正态分布的随机数。
3.实验结果
4.参考文献
[1]张冰洁,何庆,戴松利,杜逆索.多方向螺旋搜索的混沌海鸥优化算法[J/OL].小型微型计算机系统:1-10[2022-01-18].http://kns.cnki.net/kcms/detail/21.1106.TP.20211213.1750.028.html.