智能优化算法:适应度相关优化算法 - 附代码

智能优化算法:适应度相关优化算法 - 附代码

文章目录

  • 智能优化算法:适应度相关优化算法 - 附代码
    • 1.算法原理
    • 2.算法流程
    • 3.算法结果
    • 4.参考文献
    • 5.Matlab代码

摘要:Fitness DependentOptimizer(FDO)称为适应度相关优化器(FDO)于2019年被提出。受启发于蜂群繁殖过程及其集体决策过程;FDO被认为是一种基于粒子群优化(PSO)的算法,它通过增加速度(pace)来更新搜索代理的位置。然而,FDO计算速度的方式不同;它使用问题适应度函数值生成权重,这些权重在探索和开发阶段指导搜索代理。

1.算法原理

该算法复制了一群蜜蜂在繁殖过程中的行为。该算法的主要部分取自侦察蜜蜂在许多潜在蜂巢中寻找新的合适蜂巢的过程。每一只搜索新蜂巢的侦察蜂都代表了该算法的潜在解决方案;此外,从几个好的蜂箱中选择最佳蜂箱被认为是收敛到最优性。

首先在搜索空间 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,tfitnesswf(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,tfitnessrfw>0andfw<1{r<0,pace=(xi,tfitnessxi,tfitness)fw1r0,pace=(xi,tfitnessxi,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,tfitnessxi,tfitnesswf(4)

2.算法流程

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}xi,t+1fitness<xi,tfitness,接受更新新蜂群位置和保存pace。否则按照公式(1)更新蜂群位置根据当前pace。

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}xi,t+1fitness<xi,tfitness,接受更新新蜂群位置和保存pace。否则保持当前蜂群位置并不移动。

Step8:是否满足停止条件,满足则退出,输出结果,否则,重复执行Step2-7;

3.算法结果

智能优化算法:适应度相关优化算法 - 附代码_第1张图片

4.参考文献

[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

5.Matlab代码

你可能感兴趣的:(智能优化算法,算法,自动驾驶,机器学习)