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


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


    摘要:针对海鸥算法(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 φ

    Le(γ)μ1φμ=D|G|1/φσ2={Γ(1+φ)φΓ((1+φ)/2)sin(πφ/2)2(1+φ)/2}2φ" role="presentation" style="position: relative;">Le(γ)μ1φμ=D|G|1/φσ2={Γ(1+φ)φΓ((1+φ)/2)sin(πφ/2)2(1+φ)/2}2φ
    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代码

  • 相关阅读:
    Dajngo01_Django框架基础与环境搭建
    Vue组件之双向绑定v-model
    Java linux 部署命令
    Word控件Spire.Doc 【页面设置】教程(5) 如何在 C# 中删除分页符
    Throwable异常
    swift UITextField 设置leftView不生效
    java-net-php-python-ssm电子班牌系统计算机毕业设计程序
    c#常用的数据结构
    1.【刷爆LeetCode】替换空格(多方法、多思路解决)
    设置docker启动项目
  • 原文地址:https://blog.csdn.net/u011835903/article/details/126404167