融合黄金正弦算法和纵横交叉策略的秃鹰搜索算法(GSCBES)
文章目录
- 融合黄金正弦算法和纵横交叉策略的秃鹰搜索算法(GSCBES)
- 1.秃鹰优化算法
- 2.改进秃鹰优化算法
- 2.1 基于纵横交叉策略
- 2.2 基于惯性权重的位置更新
- 2.3 黄金正弦捕食机制
- 3.实验结果
- 4.参考文献
- 5.Matlab代码
- 6.python代码
摘要:针对传统秃鹰搜索算法(BES)存在容易陷入局部最优、收敛速度慢等缺点,提出一种融合黄金正弦算法(Gold-SA)和纵横交叉策略的秃鹰搜索算法(GSCBES)。首先,在传统BES的搜索阶段设置基于惯性权重的位置更新公式;然后,在捕食猎物阶段引入Gold-SA;最后,引入纵横交叉策略对全局最优和种群进行修正。
1.秃鹰优化算法
基础秃鹰优化算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/113775430
2.改进秃鹰优化算法
2.1 基于纵横交叉策略
在秃鹰优化算法中, 尤其是在空间选择这一阶段, 是利用随机搜 索的先验信息乘以 α \alpha α 来更新位置的,然后在前一个搜索区域附近选 择另一个不同搜索区域, 这种选择方式就有可能会出现若前一个搜 索区域已经为局部最优, 而下一次的搜索就会陷人局部最优, 就会导 致算法收玫精度降低。为了防止秃鹰个体陷人“早熟”的现象, 本文 在个体俯冲捕食阶段之后引人了纵横交叉策略 [ 7 ] { }^{[7]} [7], 该算法在不显著 影响收玫速度的情况下提高全局搜索能力, 利用水平交叉和垂直交 叉这两个搜索因子, 使其在解决复杂优化问题中, 能够提高收玫速度 和求解精度。
水平交叉
水平交叉指的是对两个不同秃鹰之间在所有维度上操作的算术 交叉, 使得不同个体之间能够相互学习, 增大全局搜索能力, 防止种 群过早收玫, 从而提高收玫速度和搜索精度。在执行水平交叉策略 之前, 将秃鹰个体两两不重复的设置为父代个体
X
(
i
)
X(i)
X(i) 和
X
(
j
)
X(j)
X(j), 并以交 叉概率
P
1
P_1
P1 进行算术交叉, 为了尽可能多地找到解决方案, 通常交叉概 率设置为 1 。父代交叉后通过式(16) (17) 产生子代个体:
M
i
,
d
h
c
=
q
1
⋅
X
(
i
,
d
)
+
(
1
−
q
i
)
⋅
X
(
j
,
d
)
+
c
1
⋅
(
X
(
i
,
d
)
−
X
(
j
,
d
)
)
(16)
\begin{aligned} & M_{i, d}^{h c}=\mathrm{q}_1 \cdot X(i, d)+\left(1-\mathrm{q}_i\right) \cdot X(j, d) +\mathrm{c}_1 \cdot(X(i, d)-X(j, d)) \end{aligned}\tag{16}
Mi,dhc=q1⋅X(i,d)+(1−qi)⋅X(j,d)+c1⋅(X(i,d)−X(j,d))(16)
M
j
,
d
h
c
=
q
2
⋅
X
(
j
,
d
)
+
(
1
−
q
2
)
⋅
X
(
i
,
d
)
+
c
2
⋅
(
X
(
j
,
d
)
−
X
(
i
,
d
)
)
(17)
\begin{aligned} & M_{j, d}^{h c}=\mathrm{q}_2 \cdot X(j, d)+\left(1-\mathrm{q}_2\right) \cdot X(i, d) +\mathrm{c}_2 \cdot(X(j, d)-X(i, d)) \end{aligned}\tag{17}
Mj,dhc=q2⋅X(j,d)+(1−q2)⋅X(i,d)+c2⋅(X(j,d)−X(i,d))(17)
式中:
q
1
、
q
2
\mathrm{q}_1 、 \mathrm{q}_2
q1、q2 均为
[
0
,
1
]
[0,1]
[0,1] 之间的随机数;
c
1
\mathrm{c}_1
c1 和
c
2
\mathrm{c}_2
c2 均为
[
−
1
,
1
]
[-1,1]
[−1,1] 之间的随机 数;
X
(
i
,
d
)
、
X
(
j
,
d
)
X(i, d) 、 X(j, d)
X(i,d)、X(j,d) 分别表示为第
d
\mathrm{d}
d 维的父代
X
(
i
)
X(i)
X(i) 和
X
(
j
)
;
M
i
,
d
h
c
、
M
j
,
d
h
c
X(j) ; M_{i, d}^{h c} 、 M_{j, d}^{h c}
X(j);Mi,dhc、Mj,dhc 分 别表示为父代
X
(
i
)
、
X
(
j
)
X(i) 、 X(j)
X(i)、X(j) 在第
d
\mathrm{d}
d 维交叉后产生的子代。生成的子代与 父代之间进行竞争, 最终保留最优个体。
垂直交叉
标准的 BES 在迭代后期易陷人局部最优, 往往是因为种群在更 新过程中某些个体在某一维度陷人局部最优所造成的。垂直交叉是 在两个不同维度之间对所有个体进行运算的算术交叉,在整个迭代 过程中, 垂直交叉搜索的父种群是来自水平交叉的优势解的种群, 这 就能够防止种群陷人局部最优, 同时每个垂直交叉操作只产生一个 子代, 以便为停滞维度提供跳出局部最优的机会, 而不破坏另一个可 能是全局最优的维度。对个体
i
\mathrm{i}
i 的第
d
1
\mathrm{d}_1
d1 维和第
d
2
\mathrm{d}_2
d2 维进行垂直交叉, 通 过式 (18)得到后代个体:
M
d
1
v
c
=
q
⋅
X
(
i
,
d
1
)
+
(
1
−
q
)
⋅
X
(
i
,
d
2
)
(18)
M_{d_1}^{v c}=\mathrm{q} \cdot X\left(i, \mathrm{~d}_1\right)+(1-\mathrm{q}) \cdot X\left(i, \mathrm{~d}_2\right)\tag{18}
Md1vc=q⋅X(i, d1)+(1−q)⋅X(i, d2)(18)
式中:
q
q
q 为
[
0
,
1
]
[0,1]
[0,1] 区间上的随机数:
M
d
1
v
c
M_{d_1}^{v c}
Md1vc 为父代
X
(
i
)
X(i)
X(i) 在第
d
1
\mathrm{d}_1
d1 维和第
d
2
\mathrm{d}_2
d2 维 进行垂直交叉产生的子代。垂直交叉产生的子代个体与父代进行竞 争,保留适应度较优的个体。
2.2 基于惯性权重的位置更新
本文提出一种基于惯性权重的秃鹰位置更新公式,用 于更新搜索阶段的位置公式,赋予秃鹰能够调整全局和局部搜索的 能力, 对标准 BES算法的性能有了很大的提高。
ω
(
t
)
=
ω
init
−
(
ω
init
−
ω
f
i
n
)
∗
e
t
t
max
(20)
\omega(\mathrm{t})=\omega_{\text {init }}-\left(\omega_{\text {init }}-\omega_{f i n}\right) * \mathrm{e}^{\frac{t}{t_{\max }}}\tag{20}
ω(t)=ωinit −(ωinit −ωfin)∗etmaxt(20)
P
i
,
new
=
b
1
⋅
ω
(
t
)
⋅
(
P
i
+
y
(
i
)
∗
(
P
i
−
P
i
+
1
)
)
+
b
2
⋅
w
(
t
)
⋅
x
(
i
)
∗
(
P
i
−
P
mean
)
(21)
\begin{aligned} & P_{i, \text { new }}=b_1 \cdot \omega(\mathrm{t}) \cdot\left(P_i+y(\mathrm{i}) *\left(P_i-P_{i+1}\right)\right)+\mathrm{b}_2 \cdot w(\mathrm{t}) \cdot x(\mathrm{i}) *\left(P_i-\mathrm{P}_{\text {mean }}\right) \end{aligned}\tag{21}
Pi, new =b1⋅ω(t)⋅(Pi+y(i)∗(Pi−Pi+1))+b2⋅w(t)⋅x(i)∗(Pi−Pmean )(21)
式中,
b
1
∈
[
0
,
1
]
b_1 \in[0,1]
b1∈[0,1] 为群体交流系数;
b
2
∈
[
0
,
1
]
b_2 \in[0,1]
b2∈[0,1] 为个体记忆系数;
t
max
t_{\text {max }}
tmax 为 最大迭代次数;
ω
i
n
i
\omega_{\mathrm{ini}}
ωini 为惯性权重初始值;
ω
end
\omega_{\text {end }}
ωend 为惯性权重最终值。通常
ω
ini
\omega_{\text {ini }}
ωini 取
0.9
,
ω
end
0.9, \omega_{\text {end }}
0.9,ωend 取 0.4 。
2.3 黄金正弦捕食机制
本文将 黄金正弦算法作为局部算子引人到俯冲捕食阶段的位置更新公式 中, 使算法的寻优空间能够全面, 加快算法的寻优速度以及求解精 度。同时利用 Golden-SA算法中的
r
1
、
r
2
\mathrm{r}_1 、 \mathrm{r}_2
r1、r2 参数能够缩小搜索空间, 指引 秃鹰个体快速向种群最优个体靠近, 降低算法陷人局部最优的可能, 具体的位置更新公式如下:
P
i
,
new
=
∣
sin
(
r
1
)
∣
∗
(
rand
∗
P
best
+
x
(
i
)
∗
(
P
i
−
c
1
∗
P
mean
)
)
+
r
2
∗
sin
(
r
1
)
∗
y
(
i
)
∗
∣
(
x
1
∗
P
i
−
x
2
∗
c
2
∗
P
best
)
∣
(22)
\begin{aligned} & P_{i, \text { new }}=\left|\sin \left(\mathrm{r}_1\right)\right| *\left(\operatorname{rand} * P_{\text {best }}+x(\mathrm{i}) *\left(P_i-\mathrm{c}_1 * \mathrm{P}_{\text {mean }}\right)\right) \\ & +\mathrm{r}_2 * \sin \left(\mathrm{r}_1\right) * \mathrm{y}(\mathrm{i}) *\left|\left(x_1 * P_i-x_2 * c_2 * P_{\text {best }}\right)\right| \end{aligned}\tag{22}
Pi, new =∣sin(r1)∣∗(rand∗Pbest +x(i)∗(Pi−c1∗Pmean ))+r2∗sin(r1)∗y(i)∗∣(x1∗Pi−x2∗c2∗Pbest )∣(22)
式中:
r
1
\mathrm{r}_1
r1 为
[
0
,
2
π
]
[0,2 \pi]
[0,2π] 区间内的随机数;
r
2
\mathrm{r}_2
r2 为
[
0
,
π
]
[0, \pi]
[0,π] 区间内的随机数;
x
1
=
x_1=
x1=
−
π
+
(
1
−
τ
)
∗
2
π
,
x
2
=
−
π
+
τ
∗
2
π
-\pi+(1-\tau) * 2 \pi, x_2=-\pi+\tau * 2 \pi
−π+(1−τ)∗2π,x2=−π+τ∗2π 是根据黄 金分割系数
τ
(
τ
=
\tau(\tau=
τ(τ=
(
5
−
1
)
/
2
)
(\sqrt{5}-1) / 2)
(5−1)/2) 而得到的系数。这些系数缩小了搜索空间, 允许当前值 接近理想值。
GSCBES的步骤如下所示:
Step1: 设置 GSCBES 的相关参数, 种群规模 N \mathrm{N} N, 最大迭代次数 t max t_{\text {max }} tmax , 搜索维度 dim \operatorname{dim} dim, 搜索范围 u b 、 l b u b 、 l b ub、lb 。
Step2: 计算种群中每个秃鹰个体的适应度值, 并根据目标函数值 的大小进行排序, 标记出全局最优值 P b e s t P_{b e s t} Pbest 。
Step3: 根据全局最优值 P best \mathrm{P}_{\text {best }} Pbest 的位置进行搜索空间的选择, 同时利 用式(1)进行位置更新。
Step 4 : 选取完搜索空间之后使用螺旋移动搜索, 秃鹰个体在搜索 空间搜索猎物,利用式(21)进行位置更新。
Step5: 秃鹰俯冲捕食, 利用式 (22)进行位置更新。
Step6:引人纵横交叉策略, 防止算法陷人局部最优。
Step7: 判断是否达到结束条件, 如果达到则输出最优结果, 否则 重复步骤Step2 Step6。
3.实验结果
4.参考文献
[1]赵沛雯,张达敏,张琳娜,邹诚诚.融合黄金正弦算法和纵横交叉策略的秃鹰搜索算法[J].计算机应用,2023,43(01):192-201.