探路者优化算法(PFA)

一、背景知识

探路者算法(Pathfinder Algorithm, PFA)是 2019年由 Yapici 提出的一种新的元启发式算法 。该算法受群体动物的狩猎行为启发,将种群中的个体分为探路者(领导者)和跟随者;算法的寻优过程模拟了种群寻找食物的探索过程,通过探路者、跟随者二种不同种群角色间的交流来实现优化,同时在进化过程中也加强了种群三代间优良信息的保留;PFA 具有容易理解、实现简单、优化性能较好等优点。

二、算法原理

在探路者算法中,种群中的个体分为探路者(pathfinder)和跟随者(follower members),它们共同组成种群团队。探路者个体是团队的领导者,指引算法的全局搜索方向,而种群中的跟随者沿着探路者的方向进行移动。种群中个体的移动使其位置向量发生变化,其对应的工件排列也随之改变,即种群的更新。

(1)探路者位置更新

在种群的更新过程中,探路者是该种群运动方向的探索者,先于跟随者移动,其更新方式如式(1)所示:

\boldsymbol{x}_{\mathrm{p}}^{\mathrm{K}+1}=\boldsymbol{x}_{\mathrm{p}}^{\mathrm{K}}+2 \boldsymbol{r}_1 \cdot\left(\boldsymbol{x}_{\mathrm{p}}^{\mathrm{K}}-\boldsymbol{x}_{\mathrm{p}}^{\mathrm{K}-1}\right)+\boldsymbol{A}                              (1)
\boldsymbol{A}=\boldsymbol{u}_1 \cdot \exp \left\{\frac{-2 \mathrm{~K}}{\mathrm{~K}_{\max }}\right\}                                               (2)

其中,K表示当前迭代次数,Kmax表示最大迭代次数,\boldsymbol{x}_{\mathrm{p}}^{\mathrm{K}}表示当前探路者的位置,\boldsymbol{x}_{\mathrm{p}}^{\mathrm{K}-1} 表示上一代探路者的位置, \boldsymbol{x}_{\mathrm{p}}^{\mathrm{K}+1}表示探路者更新后的位置;A是一组扰动向量,表示探路者移动的多向性和随机性,为探路者位置更新时提供随机移动;多向性由u1的取值决定,u1是一组[−1,1]范围内的随机向量,步长大小与算法迭代的次数有关,其随机性由−2K/Kmax决定。

(2)跟随者位置更新

探路者位置更新完成后,其他追随者根据探路者进行位置更新,更新方式如式(3)所示:

\boldsymbol{x}_{\mathrm{i}}^{\mathrm{K}+1}=\boldsymbol{x}_{\mathrm{i}}^{\mathrm{K}}+\boldsymbol{R}_1 \cdot\left(\boldsymbol{x}_{\mathrm{j}}^{\mathrm{K}}-\boldsymbol{x}_{\mathrm{i}}^{\mathrm{K}}\right)+\boldsymbol{R}_2 \cdot\left(\boldsymbol{x}_{\mathrm{p}}^{\mathrm{K}}-\boldsymbol{x}_{\mathrm{i}}^{\mathrm{K}}\right)+\boldsymbol{\varepsilon}, \mathrm{i} \geq 2         (3)

\boldsymbol{R}_1=\alpha \cdot \boldsymbol{r}_2, \boldsymbol{R}_2=\beta \cdot \boldsymbol{r}_3                                              (4)

\boldsymbol{\varepsilon}=\left(1-\frac{\mathrm{K}}{\mathrm{K}_{\max }}\right) \cdot \boldsymbol{u}_2 \cdot \mathrm{D}_{\mathrm{ij}}                                             (5)

\mathrm{D}_{\mathrm{ij}}=\left\|\mathrm{x}_{\mathrm{i}}-\mathrm{x}_{\mathrm{j}}\right\|                                                          (6)

其中,K表示当前迭代次数,\boldsymbol{x}_{\mathrm{i}}^{\mathrm{K}}表示第i个追随者的当前位置,\boldsymbol{x}_{\mathrm{j}}^{\mathrm{K}}表示第j个追随者的当前的位置,\boldsymbol{x}_{\mathrm{p}}^{\mathrm{K}}表示当前探路者的位置,\boldsymbol{x}_{\mathrm{i}}^{\mathrm{K}+1}表示第i个追随者更新后的位置,跟随者的移动不仅与探路者\boldsymbol{x}_{\mathrm{p}}^{\mathrm{K}}有关,而且受到其他跟随者\boldsymbol{x}_{\mathrm{j}}^{\mathrm{K}}的影响;R1和R2是2组随机向量,分别由α 、r2和β 、r3确定,r2和r3是在[0,1]范围内均匀生成的随机向量,α 表示跟随者之间的相互作用系数,β 表示探路者对跟随者的吸引系数,在每次迭代过程中,α和β 均在区间[1,2]内服从均匀分布,并随机产生;ε是一组扰动向量,表示为所有追随者提供随机移动,u2是一组[−1,1]范围内的随机向量;Dij为第i个追随者和第j个追随者之间的距离。

三、算法流程

Step1.初始化算法参数,种群数量、最大迭代次数、设置位置边界范围与速度边界范围。

Step2.初始化种群,计算适应度,确定探索者和跟随者。

Step3.根据式(1)更新探索者位置

Step4.根据式(3)跟新跟随者位置

Step5.计算适应度值,并更新全局最优值。

Step6.判断是否达到结束条件,如果达到则输出最优值,否则重复步骤Step1-6

四、实验结果

五、MATLAB代码

🍞正在为您运送作品详情

  • 26
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值