收敛因子和黄金正弦指引机制的蝴蝶优化算法-附代码

收敛因子和黄金正弦指引机制的蝴蝶优化算法


摘要:针对蝴蝶优化算法(butterfly optimization algorithm,BOA)中存在的局部开采和全局探索能力不均衡,易陷入局部最优值,收敛精度低等缺陷,提出收敛因子和黄金正弦指引机制的蝴蝶优化算法(convergence factor and gold sinusoidal guidance mechanism of butterfly optimization algorithm,AGSABOA)。受到鲸鱼优化算法的启发将收敛因子融入算法的全局位置更新处,提高算法全局搜索的多样性;结合黄金正弦指引机制,弥补BOA算法迭代后期种群多样性下降,易陷入局部最优的不足。

1.蝴蝶优化算法

基础蝴蝶优化算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/107855860

2. 改进蝴蝶优化算法

2.1 收敛因子

为进一步增强 BOA 算法的探索能力和提高收玫精度, 受到鲸鱼优化算法的启发, 将鲸鱼优化算法中非线性收玫 因子 a a a 引入基本蝴蝶优化算法的全局位置更新处, 希望迭 代前期 a a a 值较大以增强全局勘探能力且递减速度较快, 而 迭代后期 a a a 值收玫到较小值且递减速度变缓慢, 以实现前 期快速收玫, 提高算法后期的收玫精度。 a a a 随着迭代次数的 增加由 2 减小到 0 。公式如下
a = 2 − t / t max ⁡ (4) a=2-t / t_{\max } \tag{4} a=2t/tmax(4)
式中: t t t 是当前迭代次数, t max ⁡ t_{\max } tmax 是最大迭代次数。
改进后全局位置更新公式如下
x i t + 1 = a x i t + ( r 2 × g ∗ − x i t ) × f i (5) x_{i}^{t+1}=a x_{i}^{t}+\left(r^{2} \times g^{*}-x_{i}^{t}\right) \times f_{i} \tag{5} xit+1=axit+(r2×gxit)×fi(5)

2.2 黄金正弦指引机制

黄金正弦算法 (golden sine algorithm, Golden-SA) [ 8 ] { }^{[8]} [8]
是 Tanyildizi 提出的新型元启发式算法。根据正弦函数定义 中与单位圆的关系, 遍历单位圆上所有正弦值的行为与优 化算法中搜索代理在搜索空间中进行寻优的原理是一致的, 受此启发产生了黄金正弦算法。在该算法中, 创建随机个 体的数量与每个具有均匀分布的搜索代理的数量相同。与 其它元启发式方法相比, Gold-SA 具有更少的依赖于算法 的参数和运算符, Gold-SA 算法通过使当前解空间更接近 目标值的方式来搜索以在每次迭代中得到更好的搜索空间, 搜索空间被黄金比例系数缩小以便获得更小的解空间而不 是整个解空间, 从而有效提升寻优速度。黄金正弦算法的 具体定义及推导过程请参考文献 [ 8 , 11 , 12 ] [8,11,12] [8,11,12]

Gold-SA 算法的主要过程是其解的更新过程, 首先随 机产生 n n n 个个体的位置, 假设优化问题的每个解对应搜索 空间中对应个体的位置, 并用 x i t x_{i}^{t} xit 表示 D D D 维个体空间中第 i i i 个个体的解向量, x i s = ( x i , 1 , x i , 2 , ⋯   , x i , D ) ( i = 1 , 2 , ⋯   , n ; t = x_{i}^{s}=\left(x_{i, 1}, x_{i, 2}, \cdots, x_{i, D}\right)(i=1,2, \cdots, n ; t= xis=(xi,1,xi,2,,xi,D)(i=1,2,,n;t= 1 , 2 , ⋯   , t max ⁡ ) , t max ⁡ \left.1,2, \cdots, t_{\max }\right), t_{\max } 1,2,,tmax),tmax 是最大迭代次数, g ∗ g^{*} g 是第 t t t 次迭代中的最 优位置, 第 i i i 个个体位置更新公式如式 (6) 所示
x i t + 1 = x i t ∗ ∣ sin ⁡ ( r 1 ) ∣ + r 2 ∗ sin ⁡ ( r 1 ) ∗ ∣ θ 1 ∗ g ∗ − θ 2 ∗ x i t ∣ (6) x_{i}^{t+1}=x_{i}^{t} *\left|\sin \left(r_{1}\right)\right|+r_{2} * \sin \left(r_{1}\right) *\left|\theta_{1} * g^{*}-\theta_{2} * x_{i}^{t}\right|\tag{6} xit+1=xitsin(r1)+r2sin(r1) θ1gθ2xit (6)
式中: r 1 r_{1} r1 r 2 r_{2} r2 是随机数, r 1 r_{1} r1 决定算法在下一次迭代中个体的 移动距离, r 1 ∈ [ 0 , 2 π ] , r 2 r_{1} \in[0,2 \pi], r_{2} r1[0,2π],r2 控制下一次迭代中第 i i i 个个体的 位置更新方向, r 2 ∈ [ 0 , π ] ; θ 1 r_{2} \in[0, \pi] ; \theta_{1} r2[0,π];θ1 θ 2 \theta_{2} θ2 是引人黄金比例系数获得 的系数, 它们缩小了搜索空间, 并且指引个体逐步向最优值 靠近, 提高了算法的收玫速度, 黄金分比例系数 τ \tau τ 是一个无
理数 τ = ( 5 − 1 ) / 2 ≈ 0.618033 , ⋯   , θ 1 = a ∗ τ + b ∗ ( 1 − τ ) \tau =(\sqrt{5}-1) / 2 \approx 0.618033, \cdots, \theta_{1}=a * \tau+b *(1-\tau) τ=(5 1)/20.618033,,θ1=aτ+b(1τ), a a a b b b 的初始值取 − π -\pi π π \pi π, 在迭代过程中, a a a b b b 的值会随着目标函数值的变化而变化, θ 1 \theta_{1} θ1 θ 2 \theta_{2} θ2 的值也随之更新。
本文将黄金正弦算法作为局部算子融人基本 B O A \mathrm{BOA} BOA 中, 在迭代后期对整个 BOA算法进行黄金正弦优化, 能够弥补 算法在迭代后期的收玫速度慢, 收玫精度不高的缺陷, 基 本的 B O A \mathrm{BOA} BOA 算法在局部搜索阶段采用随机游走的方式, 搜索 空间比较广泛; 然而元启发式算法的主要目标是探索被认 为是最佳搜索空间的区域, 并确保尽可能完整地扫描这些 区域, 搜索空间的广泛性是解决问题的主要问题。在解决 问题时缩小搜索空间的效果会显著影响寻优效果, 而在 Gold-SA 算法中的参数 r 1 r_{1} r1 r 2 r_{2} r2 能够有效控制位置更新距离 和方向, 逐步缩小搜索空间, 指引蝴蝶个体迅速向最优个 体靠近, 加快种群中信息交流, 降低算法陷人局部最优值 的可能性, 从而提高算法的收玫速度和寻优精度。本文提 出的融合非线性收玫因子和黄金正弦指引机制的蝴蝶优化 算法(AGSABOA)的具体步骤如下。

请添加图片描述

3.实验结果

请添加图片描述

4.参考文献

[1]高文欣,刘升,肖子雅,于建芳.收敛因子和黄金正弦指引机制的蝴蝶优化算法[J].计算机工程与设计,2020,41(12):3384-3389.

5.Matlab代码

6.Python代码

猜你喜欢

转载自blog.csdn.net/u011835903/article/details/126294046