一种基于非线性惯性权重的海鸥优化算法-附代码

一种基于非线性惯性权重的海鸥优化算法


摘要:针对海鸥算法(SOA)在求解最优化问题中的不足和算法性能依赖于参数的选取等缺点,提出一种基于惯性权重的海鸥优化算法(Inertia Seagull optimization algorithm,I-SOA),采用非线性递减的惯性权重计算附加变量A的值来调整的海鸥的位置,通过莱维飞行和随机指数值增加海鸥飞行的随机性,增强算法搜索寻优的全局能力,避免算法寻优搜索陷入局部优值;

1.海鸥优化算法

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

2. 改进海鸥优化算法

2.1 改进海鸥优化算法惯性权重

海鸥的迁徙行为是海鸥优化算法的一个重要 部分, 其中附加变量 A \mathrm{A} A 用来控制海鸥群位置, 避 免海鸥在飞行的过程中发生个体间的碰撞, 不产生 重复的优化值, 附加变量 A \mathrm{A} A 对解决优化问题以及 平衡算法有着重要作用。常用的 A \mathrm{A} A 的更新方式如 下:
A ( i ) = f c − i ∗ ( f c / m a x g e n ) (11) A(i)=f c-i^{*}(f c / m a x g e n) \tag{11} A(i)=fci(fc/maxgen)(11)

其中, i i i 为当前迭代次数; maxgen 为最大迭代 次数; fc 为频率控制参数, 初始值设置为 2 ; 式 (11) 表示 A \mathrm{A} A 的值由 2 线性递减至 0 。记海鸥优化算法为 SOA。
本文提出的非线性递减控制因子的海鸥优化 算法 (I-SOA), 该方法中 A 的值在递减的过程中 呈现一个非线性的变化趋势, 可以更好的改善全局 寻优能力, 每次迭代既能避免海鸥之间的位置冲突, 也可以更好的平衡探索与开发。该策略可以被形式 化描述,如式 (12) 所示:
A ( t ) = f c − f c ∗ ( 2 ∗ ( t / T ) exp ⁡ ( h ) − ( ( t / T ) ∧ 2 ) ) (12) \mathrm{A}(\mathrm{t})=\mathrm{fc}-\mathrm{fc}^{*}\left(2^{*}(\mathrm{t} / \mathrm{T}) \exp (\mathrm{h})-\left((\mathrm{t} / \mathrm{T})^{\wedge} 2\right)\right) \tag{12} A(t)=fcfc(2(t/T)exp(h)((t/T)2))(12)
其中, t \mathrm{t} t 为算法当前执行迭代次数, T \mathrm{T} T 是算法 执行的最大迭代次数。

2.2 莱维飞行

莱维飞行提供了一种随机游走机制来正确控 制局部搜索, 这种机制被用来进一步缓解 SOA 过 早收玫的缺点, 它是由法国数学家 Paul Levy 提出,
Le ⁡ ( γ ) ≈ μ − 1 − φ μ = D ∣ G ∣ 1 / φ σ 2 = { Γ ( 1 + φ ) φ Γ ( ( 1 + φ ) / 2 ) sin ⁡ ( π φ / 2 ) 2 ( 1 + φ ) / 2 } 2 φ \begin{aligned} &\operatorname{Le}(\gamma) \approx \mu^{-1-\varphi} \\ &\mu=\frac{\mathrm{D}}{|\mathrm{G}|^{1 / \varphi}} \\ &\sigma^{2}=\left\{\frac{\Gamma(1+\varphi)}{\varphi \Gamma((1+\varphi) / 2)} \frac{\sin (\pi \varphi / 2)}{2^{(1+\varphi) / 2}}\right\}^{\frac{2}{\varphi}} \end{aligned} Le(γ)μ1φμ=G1/φDσ2={ φΓ((1+φ)/2)Γ(1+φ)2(1+φ)/2sin(πφ/2)}φ2
其中, 0 < φ ≤ 2 , D 、 G ∼ N ( 0 , σ 2 ) , Γ ( x ) 0<\varphi \leq 2, \mathrm{D} 、 \mathrm{G} \sim \mathrm{N}\left(0, \sigma^{2}\right), \Gamma(\mathrm{x}) 0<φ2,DGN(0,σ2),Γ(x) 是 Gamma 函数, μ \mu μ 表示步长, φ = 2 / 3 \varphi=2 / 3 φ=2/3
增加莱维飞行后更新的海鸥群体更新位置算法部分为:
P → s ( i ) = ( D → s × x × y × z ) × Le ⁡ ( θ ) + P → g s ( i ) (16) \overrightarrow{\mathrm{P}}_{\mathrm{s}}(\mathrm{i})=\left(\overrightarrow{\mathrm{D}}_{\mathrm{s}} \times \mathrm{x} \times \mathrm{y} \times \mathrm{z}\right) \times \operatorname{Le}(\theta)+\overrightarrow{\mathrm{P}}_{\mathrm{gs}}(\mathrm{i}) \tag{16} P s(i)=(D s×x×y×z)×Le(θ)+P gs(i)(16)
请添加图片描述

3.实验结果

请添加图片描述

4.参考文献

[1]秦维娜,张达敏,尹德鑫,蔡朋宸.一种基于非线性惯性权重的海鸥优化算法[J/OL].小型微型计算机系统:1-8[2021-05-06].http://kns.cnki.net/kcms/detail/21.1106.TP.20210330.1445.028.html.

5.Matlab代码

6.Python代码

猜你喜欢

转载自blog.csdn.net/u011835903/article/details/126404167
今日推荐