• 智能优化算法:孔雀优化算法-附代码


    智能优化算法:孔雀优化算法

    摘要:孔雀优化算法( Peafowl Optimization Algorithm, POA), 是由 Jingbo Wang 等于2022 年提出的一种群体智能优化算法。其灵感来源于孔雀的群体行为。

    1.孔雀优化算法

    POA 通过雄孔雀求偶、雌孔雀自适应接近雄孔雀、幼孔雀自适应搜索食物源和雄孔雀交互 4 种寻优机制完成迭代更新,以逐渐逼近问题最优解 . 过程中,所有孔雀根据其适应度值的排序进行角色分配,具有最高适合度值的前 5 只为雄孔雀,剩下的前30% 为雌孔雀,其余为幼孔雀 。

    1.1 雄孔雀求偶

    雄孔雀求偶. 雄孔雀的位置更新机制可描述为
    x c , 1 = x c , 1 ( t ) + R s x r , 1 ∥ x r , 1 ∥ x c , n = { x c , N ( t ) + σ R s x r , N ∥ x r , N ∥ ,  若  r N < ε x c , N ( t ) ,  否则  } xc,1=xc,1(t)+Rsxr,1xr,1xc,n={xc,N(t)+σRsxr,Nxr,N, 若 rN<εxc,N(t), 否则 }

    xc,1xc,n=xc,1(t)+Rsxr,1xr,1={xc,N(t)+σRsxr,Nxr,N,xc,N(t),  rN<ε  }
    xc,1xc,n=xc,1(t)+Rsxr,1xr,1={xc,N(t)+σRsxr,Nxr,N,xc,N(t),  rN<ε 否则 }
    式中: x c , 1 \boldsymbol{x}_{\mathrm{c}, 1} xc,1 x c , N \boldsymbol{x}_{\mathrm{c}, \mathrm{N}} xc,N 分别为第 1 只和第 N N N 只雄孔雀的 位置, N = 2 , 3 , 4 , 5 ; σ N=2,3,4,5 ; \sigma N=2,3,4,5;σ ε \varepsilon ε 为决定雄孔雀位置更新 的算子, 当 N = 2 , 3 , 4 , 5 N=2,3,4,5 N=2,3,4,5 时, σ = 1.5 , 2 , 3 , 5 \sigma=1.5,2,3,5 σ=1.5,2,3,5 ε = 0.9 , 0.8 , 0.6 , 0.3 ; r N \varepsilon=0.9,0.8,0.6,0.3 ; r_{\mathrm{N}} ε=0.9,0.8,0.6,0.3;rN 为随机生成的实数; x r , 1 \boldsymbol{x}_{\mathrm{r}, 1} xr,1 x r , N \boldsymbol{x}_{\mathrm{r}, \mathrm{N}} xr,N 为一组随机向量; R s R_{\mathrm{s}} Rs 为雄孔雀围绕食物源旋转 的半径, 有
    x r = 2 rand ⁡ ( 1 , Dim ⁡ ) − 1 R s ( t ) = R s 0 − ( R s 0 − 0 ) ( k / k max ⁡ ) 0.01 R s 0 = C v ( x u b − x l b ) } \left.xr=2rand(1,Dim)1Rs(t)=Rs0(Rs00)(k/kmax)0.01Rs0=Cv(xubxlb)
    xr=2rand(1,Dim)1Rs(t)=Rs0(Rs00)(k/kmax)0.01Rs0=Cv(xubxlb)
    \right\}
    xr=2rand(1,Dim)1Rs(t)=Rs0(Rs00)(k/kmax)0.01Rs0=Cv(xubxlb)

    式中: Dim 为决策变量的数量; 0 表示孔雀绕圈旋转 的圆心; k k k k max  k_{\text {max }} kmax  分别为当前迭代次数和最大迭代 次数; R s 0 R_{\mathrm{s} 0} Rs0 为初始旋转半径; C v C_{\mathrm{v}} Cv 为雄孔雀旋转因子,设为 0.2 ; x u b 0.2 ; x_{\mathrm{ub}} 0.2;xub x l b x_{\mathrm{lb}} xlb 为决策变量的上下限。
    在该机制下, 适应度值越高的雄孔雀围绕食物 源旋转的概率越大, 且绕圈半径越小, 因此更趋近于 局部最优解. 可见, 雄孔雀位置代表的决策变量解趋 近最优解的能力与其适应度值成正相关, 与绕圈半 径成负相关。

    1.2 雌孔雀自适应接近雄孔雀

    雌孔雀自适应接近雄孔雀. 其位置更新机制为

    x h = x h ( t ) + 3 θ ( x c , N − x h ( t ) ) , \boldsymbol{x}_{\mathrm{h}}=\boldsymbol{x}_{\mathrm{h}}(t)+3 \theta\left(\boldsymbol{x}_{\mathrm{c}, \mathrm{N}}-\boldsymbol{x}_{\mathrm{h}}(t)\right), \quad xh=xh(t)+3θ(xc,Nxh(t)),

    r 5 ∈ A r_5 \in A \quad r5A (28) 式中: x h \boldsymbol{x}_{\mathrm{h}} xh 为雌孔雀的位置; r 5 r_5 r5 [ 0 , 1 ] [0,1] [0,1] 范围内的随 机数; A A A 为决定雌孔雀位置更新的算子, 当 N = 1 N=1 N=1, 2 , 3 , 4 , 5 2,3,4,5 2,3,4,5 时, A A A 分别为 [ 0.6 , 1 ) 、 [ 0.4 , 0.6 ) 、 [ 0.2 [0.6,1) 、[0.4,0.6) 、[0.2 [0.6,1)[0.4,0.6)[0.2, 0.4 ) 、 [ 0.1 , 0.2 ) 、 [ 0 , 0.1 ) 0.4) 、[0.1,0.2) 、[0,0.1) 0.4)[0.1,0.2)[0,0.1); θ \theta θ 为平衡雌孔雀局部探 索和全局搜索的算子, 有
    θ = θ 0 + ( θ 1 − θ 0 ) k / k max ⁡ \theta=\theta_0+\left(\theta_1-\theta_0\right) k / k_{\max } θ=θ0+(θ1θ0)k/kmax
    式中: θ 0 = 0.1 、 θ 1 = 1 \theta_0=0.1 、 \theta_1=1 θ0=0.1θ1=1.
    在该机制下, 当 θ < 1 / 3 \theta<1 / 3 θ<1/3 时 (迭代初期), 雌孔雀 趋向于所选择的雄孔雀, 进行局部勘测; 当 θ > 1 / 3 \theta>1 / 3 θ>1/3 时 (迭代中后期), 雌孔雀倾于向所选雄孔雀相对的 位置移动, 进行全局搜索. 因此, 较小的 θ \theta θ 值有利于 雌孔雀在局部勘测过程中寻找高质量的决策变量 解; 较大的 θ \theta θ 值有利于增强算法的随机性和全局搜 索能力, 避免陷人局部最优.

    1.3 幼孔雀自适应搜索食物源

    幼孔雀自适应搜索食物源. 幼孔雀向雄孔雀移 动的同时借助 Levy 飞行机制在搜索空间进行随机搜索:
    x c u = x c u ( t ) + α Levy ⁡ ( x c , 1 ( t ) − x c u ( t ) ) + β ( x p u ( t ) − x c u ( t ) ) x p u = x c , N ( t ) , r 6 ∈ B } \left.xcu=xcu(t)+αLevy(xc,1(t)xcu(t))+β(xpu(t)xcu(t))xpu=xc,N(t),r6B

    \right\} xcu=xpu=xcu(t)+αLevy(xc,1(t)xcu(t))+β(xpu(t)xcu(t))xc,N(t),r6B
    式中: x c u x_{\mathrm{cu}} xcu x p u x_{\mathrm{pu}} xpu 分别为幼孔雀位置和幼孔雀跟随的 雄孔雀位置; r 6 r_6 r6 [ 0 , 1 ] [0,1] [0,1] 范围内的随机数; B B B 为决定 幼孔雀位置更新的算子, 当 N = 1 , 2 , 3 , 4 , 5 N=1,2,3,4,5 N=1,2,3,4,5 时, B B B
    分别为 [ 0.8 , 1 ) 、 [ 0.6 , 0.8 ) 、 [ 0.4 , 0.6 ) 、 [ 0.2 [0.8,1) 、[0.6,0.8) 、[0.4,0.6) 、[0.2 [0.8,1)[0.6,0.8)[0.4,0.6)[0.2, 0.4 ) 、 [ 0 , 0.2 ) ; α 0.4) 、[0,0.2) ; \alpha 0.4)[0,0.2);α β \beta β 为随迭代次数动态变化的算 子, 有
    α = α 0 ( α 0 − α 1 ) ( k / k max ⁡ ) 2 β = β 0 + ( β 1 − β 0 ) ( k / k max ⁡ ) 0.5 } \left.α=α0(α0α1)(k/kmax)2β=β0+(β1β0)(k/kmax)0.5
    \right\}
    α=α0(α0α1)(k/kmax)2β=β0+(β1β0)(k/kmax)0.5}

    式中 : α 0 = 0.9 、 α 1 = 0.4 、 β 0 = 0.1 、 β 1 = 1 \alpha_0=0.9 、 \alpha_1=0.4 、 \beta_0=0.1 、 \beta_1=1 α0=0.9α1=0.4β0=0.1β1=1.
    在该机制下,当 α > β \alpha>\beta α>β 时 (迭代初期), 幼孔雀主 要进行随机搜索; 当 β > α \beta>\alpha β>α 时 (迭代中后期), 幼孔雀 逐渐向 5 只雄孔雀收玫. 可见, α \alpha α β \beta β 共同指导幼孔 雀的位置更新, 引导劣势解向最优解移动, 并加快收敛速度.

    1.4 雄孔雀交互行为

    雄孔雀交互行为. 拥有最佳食物源的第 1 只雄孔雀被视为领导者, 第 2 ∼ 4 2 \sim 4 24 只雄孔雀逐渐向第 1 只雄孔雀移动:
    x c , N = x c , N ( t ) + θ d N + r N ′ D N ∥ D N ∥ \boldsymbol{x}_{\mathrm{c}, \mathrm{N}}=\boldsymbol{x}_{\mathrm{c}, \mathrm{N}}(t)+\theta \boldsymbol{d}_{\mathrm{N}}+r_N^{\prime} \frac{\boldsymbol{D}_{\mathrm{N}}}{\left\|\boldsymbol{D}_{\mathrm{N}}\right\|} xc,N=xc,N(t)+θdN+rNDNDN
    式中:
    d N = x c , 1 − x c , N D N = x r , N ′ − x r , N ′ d N d N d N d N dN=xc,1xc,NDN=xr,Nxr,NdNdNdNdN

    dN=xc,1xc,NDN=xr,NdNdNxr,NdNdN
    r n ′ r_n^{\prime} rn [ 0 , 1 ] [0,1] [0,1] 范围内的随机数; x r , N ′ \boldsymbol{x}_{\mathrm{r}, \mathrm{N}}^{\prime} xr,N 为随机向量。

    3.实验结果

    请添加图片描述

    4.参考文献

    [1] Jingbo Wang, Bo Yang, Yijun Chen, Kaidi Zeng, Hao Zhang, Hongchun Shu, Yingtong Chen.Novel phasianidae inspired peafowl (Pavo muticus/cristatus) optimization algorithm: Design,evaluation, and SOFC models parameter estimation.Sustainable Energy Technologies and Assessments 2021,50:101825. https://doi.org/10.1016/j.seta.2021.101825

    5.Matlab代码

    6.python代码

  • 相关阅读:
    QT not in executable format:file truncated
    PCB设计---铜箔类型(二)
    博客应用与发展实验记录
    最小体力消耗路径 -- dijkstra算法应用
    v-show与v-if控制图片显隐的本质
    CSS 滚动驱动动画 scroll()
    【PAT甲级 - C++题解】1059 Prime Factors
    论文分享 | SpeechFormer: 利用语音信号的层次化特性提升Transformer在认知性语音信号处理领域中的性能
    C++面试八股文:C++中,函数的参数应该传值还是传引用?
    凌鲨整体架构
  • 原文地址:https://blog.csdn.net/u011835903/article/details/127779440