融合黄金正弦算法和纵横交叉策略的秃鹰搜索算法(GSCBES)-附代码

融合黄金正弦算法和纵横交叉策略的秃鹰搜索算法(GSCBES)


摘要:针对传统秃鹰搜索算法(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=q1X(i,d)+(1qi)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=q2X(j,d)+(1q2)X(i,d)+c2(X(j,d)X(i,d))(17)
式中: q 1 、 q 2 \mathrm{q}_1 、 \mathrm{q}_2 q1q2 均为 [ 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,dhcMj,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=qX(i, d1)+(1q)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)(PiPi+1))+b2w(t)x(i)(PiPmean )(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 r1r2 参数能够缩小搜索空间, 指引 秃鹰个体快速向种群最优个体靠近, 降低算法陷人局部最优的可能, 具体的位置更新公式如下:
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)(randPbest +x(i)(Pic1Pmean ))+r2sin(r1)y(i)(x1Pix2c2Pbest )(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 ublb

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.

5.Matlab代码

6.python代码

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智能算法研学社(Jack旭)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值