该算法复制了一群蜜蜂在繁殖过程中的行为。该算法的主要部分取自侦察蜜蜂在许多潜在蜂巢中寻找新的合适蜂巢的过程。每一只搜索新蜂巢的侦察蜂都代表了该算法的潜在解决方案;此外,从几个好的蜂箱中选择最佳蜂箱被认为是收敛到最优性。
首先在搜索空间 X i ( i = 1 , 2 , . . . , n ) X_i(i=1,2,...,n) Xi(i=1,2,...,n);每个侦察蜂位置代表一个新发现的蜂巢(解决方案)。侦察蜜蜂通过随机搜索更多的位置来寻找更好的蜂巢;每次发现一个更好的蜂巢,之前发现的蜂巢就会被忽略;因此,每次算法确定一个新的、更好的解决方案时,先前发现的解决方案将被忽略。此外,如果当前的移动没有引导人工侦察蜂找到更好的解决方案(蜂巢),它将继续其先前的方向,希望先前的方向将侦察蜂带到更好的解决方案。但是,如果前面的方向没有带来更好的解决方案,那么它将继续使用当前的解决方案,这是迄今为止找到的最佳解决方案。
在自然界中,侦察蜜蜂随机寻找蜂巢。在该算法中,人工侦察员最初使用随机行走和适应度权重机制的组合随机搜索景观。因此,每当一只人工侦察蜂通过增加当前位置的速度移动时,侦察员希望探索更好的解决方案。人工侦察蜜蜂的运动表现如下:
X i , t + 1 = X i , t + p a c e (1) X_{i,t+1}=X_{i,t}+pace \tag{1} Xi,t+1=Xi,t+pace(1)
其中, i i i表示当前搜索代理,t表示当前迭代,X表示人工侦察蜂(搜索代理),pace表示人工侦察蜂的移动速度和方向。配速主要取决于健身体重。然而,速度的方向完全依赖于随机机制。因此,最小化问题的可计算为:
f w = ∣ x i , t f i t n e s s ∗ x i , t f i t n e s s ∣ − w f (2) f_w = |\frac{x_{i,tfitness}^*}{x_{i,tfitness}}|-wf\tag{2} fw=∣xi,tfitnessxi,tfitness∗∣−wf(2)
x i , t f i t n e s s ∗ x_{i,tfitness}^* xi,tfitness∗是迄今为止发现的最佳全局解的适应度函数值。 x i , t f i t n e s s x_{i,tfitness} xi,tfitness是当前解的适应度函数值, w f wf wf是权重因子,其值为0或1,用于控制 w f wf wf。如果它等于1,则表示收敛程度高,覆盖率低。尽管如此,如果 f w = 0 fw=0 fw=0,则它不会影响方程(2),因此可以忽略它,设置 f w = 0 fw=0 fw=0可提供更稳定的搜索。然而,情况并非总是如此;有时,恰恰相反,因为适应度函数值完全依赖于优化问题。然而, f w fw fw值应在[0,1]范围内;但是,在某些情况下, f w = 1 fw=1 fw=1,例如,当前解决方案是全局最佳解决方案,或者当前和全局最佳解决方案相同或具有相同的适应值。此外,有可能 f w = 0 fw=0 fw=0,当 x i , t f i t n e s s ∗ = 0 x_{i,tfitness}^*=0 xi,tfitness∗=0。最后,当 x i , t f i t n e s s = 0 x_{i,tfitness}=0 xi,tfitness=0时,应避免出现零分母。因此,可按公式(3)来更新解位置。
{ f w = 1 o r f w = 0 o r x i , t f i t n e s s ∗ = 0 , p a c e = x i , t f i t n e s s ∗ ∗ r f w > 0 a n d f w < 1 { r < 0 , p a c e = ( x i , t f i t n e s s − x i , t f i t n e s s ∗ ) ∗ f w − 1 r ≥ 0 , p a c e = ( x i , t f i t n e s s ∗ − x i , t f i t n e s s ) ∗ f w (3) \begin{cases}fw=1\,or\,fw=0\,or\,x_{i,tfitness}^*=0,pace=x_{i,tfitness}^**r\\ fw>0\,and\,fw<1 \begin{cases}r<0,pace=(x_{i,tfitness}-x_{i,tfitness}^*)*fw-1 \\ r\geq0,pace=(x_{i,tfitness}^*-x_{i,tfitness})*fw \end{cases} \end{cases}\tag{3} ⎩⎪⎨⎪⎧fw=1orfw=0orxi,tfitness∗=0,pace=xi,tfitness∗∗rfw>0andfw<1{r<0,pace=(xi,tfitness−xi,tfitness∗)∗fw−1r≥0,pace=(xi,tfitness∗−xi,tfitness)∗fw(3)
这里, r r r是一个随机数[−1,1]范围。选择Levy随机行走方式。对于求解最大优化问题时,等式(2)由等式(4)替换。
f w = ∣ x i , t f i t n e s s x i , t f i t n e s s ∗ ∣ − w f (4) f_w = |\frac{x_{i,tfitness}}{x_{i,tfitness}^*}|-wf\tag{4} fw=∣xi,tfitness∗xi,tfitness∣−wf(4)
Step1: 初始化蜂群种群,种群数量,迭代次数。
Step2:计算适应度值,并排序确定初始蜂群最优解和最优位置。
Step3:如果 x i , t f i t n e s s = 0 x_{i,tfitness}=0 xi,tfitness=0,适应度权重 f w = 0 fw = 0 fw=0,否则按照公式(2)更新适应度值。
Step4:如果按照公式(3)更新适应度值,计算pace。
Step5:利用式(1)更新蜂群位置 X i , t + 1 X_{i,t+1} Xi,t+1。
Step6:若 x i , t + 1 f i t n e s s < x i , t f i t n e s s x_{i,t+1fitness}
Step7:若 x i , t + 1 f i t n e s s < x i , t f i t n e s s x_{i,t+1fitness}
Step8:是否满足停止条件,满足则退出,输出结果,否则,重复执行Step2-7;
[1] J. M. Abdullah and T. A. Rashid, “Fitness Dependent Optimizer: Inspired by the Bee Swarming Reproductive Process,” in IEEE Access. doi: 10.1109/ACCESS.2019.2907012