基于蜂鸟优化算法的函数寻优算法

一、理论基础

蜂鸟优化算法(Hummingbirds optimization algorithm, HOA)的灵感来源于蜂鸟的觅食过程。该算法包括两个阶段:自搜索阶段和引导搜索阶段。通过这两个阶段,可以平衡算法的探索和开发能力。
如上所述,HOA包括两个阶段:自搜索阶段和向导搜索阶段。HOA中的蜂鸟代表搜索者,它们的位置对应于优化问题的可行解。食物来源的质量是适应度函数的值,最佳食物来源是最优解。HOA的初始化通过以下公式完成: P i = u b − r a n d ⋅ ( u b − l b ) (1) P_i=ub-rand\cdot(ub-lb)\tag{1} Pi=ubrand(ublb)(1)其中, P i P_i Pi是蜂鸟在种群中的位置( i ∈ { 1 , 2 , ⋯   , N } i\in\{1,2,\cdots,N\} i{1,2,,N}, N N N是种群规模); u b ub ub l b lb lb分别表示搜索空间中变量的上界和下界; r a n d rand rand是介于0到1的随机数。

1、自搜索阶段

当蜂鸟不断找到更好的食物来源( P i t ≠ P i t − 1 P_i^t≠P_i^{t-1} Pit=Pit1),这意味着当前搜索区域很有希望。因此,蜂鸟将进一步开发该区域。蜂鸟的新位置可通过以下公式获得: P i t + 1 = P i t + r a n d ⋅ ( P i t − P i t − 1 ) (2) P_i^{t+1}=P_i^t+rand\cdot(P_i^t-P_i^{t-1})\tag{2} Pit+1=Pit+rand(PitPit1)(2)其中, P i t P_i^t Pit P i t − 1 P_i^{t-1} Pit1分别表示在 t t t t − 1 t-1 t1次迭代时的位置;如果 P i t + 1 P_i^{t+1} Pit+1得到更好的适应值,则接受该位置,否则保持不变。
当蜂鸟不断搜索,但未能找到更好的结果( P i t = P i t − 1 P_i^t=P_i^{t-1} Pit=Pit1)时,这意味着蜂鸟将从经验中知道当前区域不值得继续开发。在这种情况下,蜂鸟会随机改变搜索方向。本算法基于莱维飞行实现。莱维飞行是一种重要的非高斯随机游动,其随机步长服从重尾概率分布。由于方差的无限和快速增长,这种飞行模式最重要的特点是它可以在不确定的环境中尽可能地搜索空间。莱维飞行的搜索效率比常规随机行走更高。图1展示了莱维飞行运动和随机游走运动1000步的二维运动轨迹。
在这里插入图片描述

图1 莱维飞行运动和随机游走运动的二维运动轨迹比较

如图1所示,我们可以观察到莱维飞行产生比随机游走更大的跳跃,从而更广泛地探索搜索空间。因此,它更适合大规模搜索。
蜂鸟的新位置是通过执行莱维飞行生成的,如下所述: P i t + 1 = P i t + α ⊕ Levy ( β ) (3) P_i^{t+1}=P_i^t+\alpha\oplus\text{Levy}(\beta)\tag{3} Pit+1=Pit+αLevy(β)(3)其中, α \alpha α是比例因子, ⊕ \oplus 表示点对点乘法。如果 P i t + 1 P_i^{t+1} Pit+1得到更好的适应值,则接受该位置,否则保持不变。
α \alpha α Levy ( β ) \text{Levy}(\beta) Levy(β)如下所示: { α = α 0 ( P i t − P best t ) Levy ( β ) = μ ∣ v ∣ 1 / β (4) \begin{dcases}\alpha=\alpha_0(P_i^t-P_{\text{best}}^t)\\\text{Levy}(\beta)=\frac{\mu}{|v|^{1/\beta}}\end{dcases}\tag{4} α=α0(PitPbestt)Levy(β)=v1/βμ(4)其中, P best t P_{\text{best}}^t Pbestt表示全局最佳位置; α 0 \alpha_0 α0为一常数; μ \mu μ v v v分别满足正态分布 N ( 0 , σ μ 2 ) N(0,\sigma_{\mu}^2) N(0,σμ2) N ( 0 , σ v 2 ) N(0,\sigma_v^2) N(0,σv2),并且 σ μ = [ Γ ( 1 + β ) s i n ( π β 2 ) Γ ( 1 + β 2 ) β × 2 β − 1 2 ] 1 β ,   σ v = 1 \sigma_{\mu}=\left[\frac{\Gamma(1+\beta)sin(\frac{\pi\beta}{2})}{\Gamma(\frac{1+\beta}{2})\beta×2^{\frac{\beta-1}{2}}}\right]^{\frac1\beta},\,\sigma_v=1 σμ=[Γ(21+β)β×22β1Γ(1+β)sin(2πβ)]β1,σv=1,这里的 Γ ( z ) \Gamma(z) Γ(z)表示伽马函数; α 0 = 0.01 ,   β = 1.5 \alpha_0=0.01,\,\beta=1.5 α0=0.01,β=1.5
在自搜索阶段,蜂鸟一般根据原始梯度信息进行学习,这可以加快算法的收敛速度。然而,当算法陷入局部最优时,蜂鸟在搜索空间中通过莱维飞行进行广泛搜索,可以增强算法的全局搜索能力。

2、引导搜索阶段

在这一阶段,蜂鸟通过占领行为在环境中搜索。目前占领该领土的HOA中最好的个体被称为领导鸟,其他个体被称为跟随鸟,区域的位置与当前最佳个体的位置相同。占领领土后,领导鸟不停地在其领土周围巡逻。该过程可描述如下: P T , t + 1 = P T , t + r d ⋅ λ (5) P^{T,t+1}=P^{T,t}+r_d\cdot\lambda\tag{5} PT,t+1=PT,t+rdλ(5)其中, P T , t P^{T,t} PT,t是在第 t t t次迭代时的领导鸟位置; r d r_d rd是介于-1和1之间的随机值,可以调整个体的搜索方向; λ \lambda λ是一个比例因子,使领地鸟在其当前位置周围轻微移动,此处, λ = 0.1 ( u b − l b ) \lambda=0.1(ub-lb) λ=0.1(ublb)。如果 P T , t + 1 P^{T,t+1} PT,t+1的适应度值更优,将取代 P T , t P^{T,t} PT,t。式(5)的目的是给最佳个体添加一个轻微的扰动,使其能够在其邻域内执行精确搜索。该方法可以帮助最优个体跳出局部最优,从而避免算法进化的停滞。
与领导鸟不同,跟随鸟的运动分为两种状态。
状态1 领导鸟找不到正在接近的跟随鸟。在这种情况下,跟随鸟将移动到领导鸟。其新位置更新如下: P j F , t + 1 = P j F , t + r a n d ⋅ ( P T , t − M F ⋅ P j F , t ) (6) P_j^{F,t+1}=P_j^{F,t}+rand\cdot(P^{T,t}-MF\cdot P_j^{F,t})\tag{6} PjF,t+1=PjF,t+rand(PT,tMFPjF,t)(6)其中, P j F , t P_j^{F,t} PjF,t是第 j j j只跟随鸟的位置; M F = r o u n d [ 1 + r a n d { 2 − 1 } ] MF=round[1+rand\{2−1\}] MF=round[1+rand{21}]是一种突变因子,可以决定是否改变跟随鸟的位置,该因子的值为1或2,这也是一个启发式步骤,以相同的概率随机选择。随着种群在搜索空间中逐渐收敛, P j F , t P_j^{F,t} PjF,t将接近 P T , t P^{T,t} PT,t。在迭代的后期,假设 P j F , t ≈ P T , t P_j^{F,t}≈P^{T,t} PjF,tPT,t,式(6)可以转化为以下形式: M F = 1 { P j F , t + 1 = P j F , t + r a n d ⋅ ( P j F , t − P j F , t ) P j F , t + 1 = P j F , t (7) MF=1\begin{dcases}P_j^{F,t+1}=P_j^{F,t}+rand\cdot(P_j^{F,t}-P_j^{F,t})\\P_j^{F,t+1}=P_j^{F,t}\end{dcases}\tag{7} MF=1{PjF,t+1=PjF,t+rand(PjF,tPjF,t)PjF,t+1=PjF,t(7) M F = 2 { P j F , t + 1 = P j F , t + r a n d ⋅ ( P j F , t − 2 P j F , t ) P j F , t + 1 = P j F , t − r a n d ⋅ P j F , t (8) MF=2\begin{dcases}P_j^{F,t+1}=P_j^{F,t}+rand\cdot(P_j^{F,t}-2P_j^{F,t})\\P_j^{F,t+1}=P_j^{F,t}-rand\cdot P_j^{F,t}\end{dcases}\tag{8} MF=2{PjF,t+1=PjF,t+rand(PjF,t2PjF,t)PjF,t+1=PjF,trandPjF,t(8)从式(7)中可以发现,当 M F = 1 MF=1 MF=1时, P j F , t + 1 P_j^{F,t+1} PjF,t+1将始终是 P j F , t P_j^{F,t} PjF,t。同时,式(8)表明总体仍然是探索性的,并且允许远离空间收敛解进行探索。基于以上分析, M F MF MF能有效平衡算法的局部搜索能力和全局搜索能力。
状态2 领导鸟发现靠近自己的跟随鸟并发出警告,跟随鸟吓坏了,飞到周围区域。在此过程中,从跟随鸟中随机选择一个个体。如果被选中的个体有一个更好的位置,其他跟随鸟就会飞向它。但是,如果所选个体的位置更差,则远离该个体。该过程由以下公式描述: { P j F , t + 1 = P j F , t + r a n d ⋅ ( P k F , t − P j F , t ) , fit P k F , t ≤ fit P j F , t P j F , t + 1 = P j F , t − r a n d ⋅ ( P k F , t − P j F , t ) , otherwise (9) \begin{dcases}P_j^{F,t+1}=P_j^{F,t}+rand\cdot(P_k^{F,t}-P_j^{F,t}),\quad \text{fit}P_k^{F,t}≤\text{fit}P_j^{F,t}\\P_j^{F,t+1}=P_j^{F,t}-rand\cdot(P_k^{F,t}-P_j^{F,t}),\quad \text{otherwise}\end{dcases}\tag{9} {PjF,t+1=PjF,t+rand(PkF,tPjF,t),fitPkF,tfitPjF,tPjF,t+1=PjF,trand(PkF,tPjF,t),otherwise(9)其中, j , k ∈ { 1 , 2 , ⋯   , N − 1 } , j ≠ k j,k\in\{1,2,\cdots,N-1\},j≠k j,k{1,2,,N1},j=k
结合这两种状态,跟随鸟的运动模式可描述如下:
在这里插入图片描述其中, P F t PF^t PFt表示领导鸟类发现跟随鸟的概率。在这项工作中, P F t PF^t PFt由下式确定: P F t = rank ( fit P j F , t ) N − 1 (10) PF^t=\frac{\text{rank}(\text{fit}P_j^{F,t})}{N-1}\tag{10} PFt=N1rank(fitPjF,t)(10)其中, fit ( P j F , t ) \text{fit}(P_j^{F,t}) fit(PjF,t)表示 P j F , t P_j^{F,t} PjF,t的适应度值, rank ( fit P j F , t ) \text{rank}(\text{fit}P_j^{F,t}) rank(fitPjF,t)表示 P j F , t P_j^{F,t} PjF,t位置的跟随鸟在所有跟随鸟个体中的排名, P F t PF^t PFt强调个体越优秀,其值越高。它使好的个体以更大的概率跟随最好的个体,而差的个体以更大的概率跟随随机选择的个体。从优化的角度出发,该算法利用当前最佳个体来指导种群,可以快速减少搜索范围,提高种群的开发能力。利用随机选取的个体作为引导信息,增强了算法的全局搜索能力。总体而言,引导搜索阶段可以吸收不同个体的信息,从而更好地平衡算法的开发和探索能力,使算法更适合于求解优化问题。
为了避免陷入局部最优,在搜索过程中引入了一种角色转换机制:如果跟随鸟找到的区域比其他跟随鸟和领导鸟当前占据的区域更好,它将被转换为新领导鸟,在下一次迭代中,原始领导鸟将转换为跟随鸟。
此外,HOA中的个体可以在搜索空间外搜索。因此,本文增加了一个边界控制策略,其具体过程如下: P i , d t = u b − r a n d ⋅ ( u b − l b ) , P i , d t < l b    or    P i , d t > u b (11) P_{i,d}^t=ub-rand\cdot(ub-lb),\quad P_{i,d}^t<lb\,\,\text{or}\,\,P_{i,d}^t>ub\tag{11} Pi,dt=ubrand(ublb),Pi,dt<lborPi,dt>ub(11)其中, P i , d t P_{i,d}^t Pi,dt表示在第 t t t次迭代时第 i i i个个体的第 d d d维位置。

3、HOA伪代码

综上所述,HOA的伪代码可以如Algorithm 1所示。
在这里插入图片描述

二、仿真实验与分析

为了验证HOA的寻优性能,将其与CS、MFO、GWO、SCA进行对比,以文献[1]中表1的10个测试函数为例。仿真实验中,5种算法的运行次数、种群规模、空间维度和最大迭代次数都保持一致,即 N = 50 , d i m = 30 , M a x _ i t e r = 1000 N=50,dim=30,Max\_iter=1000 N=50,dim=30,Max_iter=1000,每种算法分别独立运行30次。结果显示如下:
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

函数:F1
CS:最差值: 1.7082e-68,最优值:1.0354e-72,平均值:1.3513e-69,标准差:3.7285e-69,秩和检验:1.2118e-12
MFO:最差值: 10000,最优值:1.8362e-06,平均值:666.667,标准差:2537.0812,秩和检验:1.2118e-12
GWO:最差值: 1.4192e-69,最优值:4.2377e-73,平均值:2.4082e-70,标准差:3.6911e-70,秩和检验:1.2118e-12
SCA:最差值: 0.08315,最优值:5.8813e-08,平均值:0.0039346,标准差:0.015425,秩和检验:1.2118e-12
HOA:最差值: 0,最优值:0,平均值:0,标准差:0,秩和检验:NaN
函数:F2
CS:最差值: 4.7958e-40,最优值:4.9388e-42,平均值:5.4683e-41,标准差:8.7182e-41,秩和检验:3.0199e-11
MFO:最差值: 90,最优值:0.00016816,平均值:36.0003,标准差:24.9962,秩和检验:3.0199e-11
GWO:最差值: 2.6269e-40,最优值:5.846e-42,平均值:3.9129e-41,标准差:4.8662e-41,秩和检验:3.0199e-11
SCA:最差值: 9.5888e-05,最优值:5.5332e-09,平均值:9.9122e-06,标准差:1.898e-05,秩和检验:3.0199e-11
HOA:最差值: 6.3278e-267,最优值:2.37e-272,平均值:4.3889e-268,标准差:0,秩和检验:1
函数:F3
CS:最差值: 4.5761e-18,最优值:9.086e-25,平均值:2.9637e-19,标准差:8.7305e-19,秩和检验:1.2118e-12
MFO:最差值: 41692.273,最优值:196.5354,平均值:13286.1121,标准差:11825.2752,秩和检验:1.2118e-12
GWO:最差值: 2.9704e-18,最优值:1.2485e-25,平均值:1.8533e-19,标准差:6.4705e-19,秩和检验:1.2118e-12
SCA:最差值: 8825.7675,最优值:18.6384,平均值:1636.8476,标准差:1896.8851,秩和检验:1.2118e-12
HOA:最差值: 0,最优值:0,平均值:0,标准差:0,秩和检验:NaN
函数:F4
CS:最差值: 27.9223,最优值:25.16,平均值:26.7554,标准差:0.74228,秩和检验:3.0199e-11
MFO:最差值: 79943264.1626,最优值:7.4123,平均值:2680205.8771,标准差:14592701.2554,秩和检验:3.0199e-11
GWO:最差值: 27.9274,最优值:24.9636,平均值:26.5733,标准差:0.70031,秩和检验:3.0199e-11
SCA:最差值: 3405.2522,最优值:27.5515,平均值:209.4378,标准差:625.7707,秩和检验:3.0199e-11
HOA:最差值: 0.30804,最优值:4.2545e-05,平均值:0.013906,标准差:0.055961,秩和检验:1
函数:F5
CS:最差值: 0.0012602,最优值:9.6337e-05,平均值:0.00048251,标准差:0.00030185,秩和检验:3.6897e-11
MFO:最差值: 40.2845,最优值:0.0261,平均值:2.3815,标准差:7.4442,秩和检验:3.0199e-11
GWO:最差值: 0.0011916,最优值:7.228e-05,平均值:0.00053348,标准差:0.00029625,秩和检验:5.4941e-11
SCA:最差值: 0.11169,最优值:0.0037239,平均值:0.02616,标准差:0.023164,秩和检验:3.0199e-11
HOA:最差值: 0.00011579,最优值:5.8105e-06,平均值:3.9899e-05,标准差:2.9471e-05,秩和检验:1
函数:F6
CS:最差值: -4137.4221,最优值:-8238.4542,平均值:-6191.6395,标准差:818.3749,秩和检验:7.1988e-05
MFO:最差值: -7079.6462,最优值:-10590.9578,平均值:-8973.6422,标准差:987.8097,秩和检验:2.6695e-09
GWO:最差值: -5124.0828,最优值:-8867.2261,平均值:-6505.1993,标准差:856.7587,秩和检验:0.004033
SCA:最差值: -3488.793,最优值:-4930.967,平均值:-4171.9326,标准差:337.2795,秩和检验:3.0199e-11
HOA:最差值: -5593.9309,最优值:-8375.1972,平均值:-7066.096,标准差:694.5579,秩和检验:1
函数:F7
CS:最差值: 12.2691,最优值:0,平均值:0.71166,标准差:2.4675,秩和检验:0.021577
MFO:最差值: 214.0571,最优值:65.6672,平均值:139.8195,标准差:40.1454,秩和检验:1.2118e-12
GWO:最差值: 4.7771,最优值:0,平均值:0.15924,标准差:0.87217,秩和检验:0.081493
SCA:最差值: 122.7787,最优值:6.7502e-08,平均值:13.2624,标准差:29.0252,秩和检验:1.2118e-12
HOA:最差值: 0,最优值:0,平均值:0,标准差:0,秩和检验:NaN
函数:F8
CS:最差值: 1.5099e-14,最优值:7.9936e-15,平均值:1.3323e-14,标准差:2.5973e-15,秩和检验:6.3567e-13
MFO:最差值: 19.96,最优值:0.00044734,平均值:9.735,标准差:9.4937,秩和检验:1.7203e-12
GWO:最差值: 1.5099e-14,最优值:7.9936e-15,平均值:1.3796e-14,标准差:2.1847e-15,秩和检验:4.5263e-13
SCA:最差值: 20.293,最优值:4.0053e-05,平均值:12.2262,标准差:8.8103,秩和检验:1.7203e-12
HOA:最差值: 4.4409e-15,最优值:8.8818e-16,平均值:1.0066e-15,标准差:6.4863e-16,秩和检验:1
函数:F9
CS:最差值: 0.020812,最优值:0,平均值:0.0027206,标准差:0.0058897,秩和检验:0.011035
MFO:最差值: 90.5128,最优值:9.262e-05,平均值:6.0497,标准差:22.9526,秩和检验:1.2118e-12
GWO:最差值: 0.010368,最优值:0,平均值:0.00034559,标准差:0.0018929,秩和检验:0.33371
SCA:最差值: 0.92502,最优值:0.00014036,平均值:0.1754,标准差:0.23512,秩和检验:1.2118e-12
HOA:最差值: 0,最优值:0,平均值:0,标准差:0,秩和检验:NaN
函数:F10
CS:最差值: 0.039499,最优值:6.7736e-07,平均值:0.021404,标准差:0.010642,秩和检验:9.7555e-10
MFO:最差值: 1.7784,最优值:3.0631e-06,平均值:0.40395,标准差:0.54849,秩和检验:0.11882
GWO:最差值: 0.078213,最优值:0.0037763,平均值:0.027297,标准差:0.015055,秩和检验:9.9186e-11
SCA:最差值: 35.6323,最优值:0.41856,平均值:2.568,标准差:6.8949,秩和检验:3.0199e-11
HOA:最差值: 0.0077483,最优值:3.1823e-05,平均值:0.0024015,标准差:0.002286,秩和检验:1

结果表明,HOA算法的性能优于其他经典和最先进的算法。

代码下载链接:https://download.csdn.net/download/weixin_43821559/85389823

三、参考文献

[1] ZHANG Zhuoran, HUANG Changqiang, HUANG Hanqiao, et al. An optimization method: hummingbirds optimization algorithm[J]. Journal of Systems Engineering and Electronics, 2018, 29(2): 386-404.

  • 7
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

心️升明月

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

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

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

打赏作者

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

抵扣说明:

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

余额充值