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

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

摘要:孔雀优化算法( 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 ) ,  否则  } \begin{aligned} \boldsymbol{x}_{\mathrm{c}, 1} &=\boldsymbol{x}_{\mathrm{c}, 1}(t)+R_{\mathrm{s}} \frac{\boldsymbol{x}_{\mathrm{r}, 1}}{\left\|\boldsymbol{x}_{\mathrm{r}, 1}\right\|} \\ \boldsymbol{x}_{\mathrm{c}, n} &=\left\{\begin{array}{ll} \boldsymbol{x}_{\mathrm{c}, \mathrm{N}}(t)+\sigma R_{\mathrm{s}} \frac{\boldsymbol{x}_{\mathrm{r}, \mathrm{N}}}{\left\|\boldsymbol{x}_{\mathrm{r}, \mathrm{N}}\right\|}, & \text { 若 } r_{\mathrm{N}}<\varepsilon \\ \boldsymbol{x}_{\mathrm{c}, \mathrm{N}}(t), & \text { 否则 } \end{array}\right\} \end{aligned} 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.\begin{array}{l} \boldsymbol{x}_{\mathrm{r}}=2 \operatorname{rand}(1, \operatorname{Dim})-1 \\ R_{\mathrm{s}}(t)=R_{\mathrm{s} 0}-\left(R_{\mathrm{s} 0}-0\right)\left(k / k_{\max }\right)^{0.01} \\ R_{\mathrm{s} 0}=C_{\mathrm{v}}\left(x_{\mathrm{ub}}-x_{\mathrm{lb}}\right) \end{array}\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.\begin{array}{rl} \boldsymbol{x}_{\mathrm{cu}}= & \boldsymbol{x}_{\mathrm{cu}}(t)+\alpha \operatorname{Levy}\left(\boldsymbol{x}_{\mathrm{c}, 1}(t)-\boldsymbol{x}_{\mathrm{cu}}(t)\right)+ \\ & \beta\left(\boldsymbol{x}_{\mathrm{pu}}(t)-\boldsymbol{x}_{\mathrm{cu}}(t)\right) \\ \boldsymbol{x}_{\mathrm{pu}}= & \boldsymbol{x}_{\mathrm{c}, N}(t), \quad r_6 \in B \end{array}\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.\begin{array}{l} \alpha=\alpha_0\left(\alpha_0-\alpha_1\right)\left(k / k_{\max }\right)^2 \\ \beta=\beta_0+\left(\beta_1-\beta_0\right)\left(k / k_{\max }\right)^{0.5} \end{array}\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 \begin{aligned} &\boldsymbol{d}_{\mathrm{N}}=\boldsymbol{x}_{\mathrm{c}, 1}-\boldsymbol{x}_{\mathrm{c}, \mathrm{N}} \\ &\boldsymbol{D}_{\mathrm{N}}=\boldsymbol{x}_{\mathrm{r}, \mathrm{N}}^{\prime}-\frac{\boldsymbol{x}_{\mathrm{r}, \mathrm{N}}^{\prime} \boldsymbol{d}_{\mathrm{N}}}{\boldsymbol{d}_{\mathrm{N}} \boldsymbol{d}_{\mathrm{N}}} \boldsymbol{d}_{\mathrm{N}} \end{aligned} 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代码

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

智能算法研学社(Jack旭)

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

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

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

打赏作者

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

抵扣说明:

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

余额充值