一、粒子群算法概述

在一个森林中,有很多好吃的食物。森林中,一个鸟群中,每只鸟都想找到最好吃的食物。
第二次培训之粒子群算法
假设在一次种群觅食的过程中,bird Z找到的是目前所有食物中最好的,并且告诉其它鸟这个信息。这个时候bird A会改变自己的运动方向,朝这food A的方向移动。但是bird A一想:

  • 它现在找到也不一定是最好的啊,可能只是它目前找到的最好的
  • 我之前在找的过程中也找到了非常好的,我也没必要方向全部改变到food A那边

(假设自己目前找到的最好的是食物的位置是pbest_x,所有个体目前找到的最好的是gbest_x
于是这个时候,bird A想了一种折中的办法:选取此时自己的方向和bird Z的方向的一个中间方向。在如此不停迭代的过程中,所有个体都慢慢靠向最优的食物,最终找到最优食物。

二、速度和位置的更新

上面说到,bird A会选取一个中间方向。该算法给出的速度、位置更新公式如下:
第二次培训之粒子群算法

公式说明:

  • vikv_i^k表示第ii个个体第kk次觅食的速度,有大小和方向
  • pbest_xipbest\_x_i表示第ii个个体目前找到的最优食物的位置,gbest_xgbest\_x表示种群内所有个体目前找到的最优食物的位置。显然有gbest_x=optim{pbest_xi}gbest\_x = optim \{ pbest\_x_i\}
  • xikx_i^k表示第ii个个体目前的位置

wc1r1c2r2w、c_1、r_1、c_2、r_2均为超参数(即可以自己调节)

  • ww可以解释为惯性系数,表示第ii个个体保持原有速度的程度
  • c1,c2c_1,c_2可以解释为学习因子,表示以多大的程度接受两个方向的变化
  • r1,r2r_1,r_2可以解释为随机因子,范围在[0,1][0,1],一定程度上控制算法的随机性
公式解释

以我自己的理解,就是利用pbest_xipbest\_x_i算一个方向的变化(接受个体的认知),利用gbest_xgbest\_x算一个方向的变化(接受种群的认知),然后将这些方向的变化加到自己现有的速度上,就实现了一个方向的改变。至于系数,无非就是接受这些变化的程度。

三、算法流程图

第二次培训之粒子群算法

常量有哪些?

迭代次数、种群大小、惯性系数、学习因子、随机因子、速度范围、位置范围

相关文章:

猜你喜欢
  • 2022-01-04
  • 2022-12-23
  • 2021-08-05
  • 2021-10-23
  • 2021-07-04
相关资源
相似解决方案