粒子群算法(Particle Swarm Optimization,PSO)

干货 | 【算法】粒子群算法Particle Swarm Optimization超详细解析+代码实例讲解

定义

  • 粒子群算法,也称粒子群优化算法或鸟群觅食算法(PSO)属于进化算法的一种,是一种并行算法,它从随机解出发,通过迭代寻找最优解,通过适应度来评价解的品质,通过追随当前搜索到的最优值来寻找全局最优。具有实现容易、精度高、收敛快等优点
  • 在初始化阶段,PSO生成一群随机粒子(即随机解),然后通过迭代找到最优解。在每一次迭代中,粒子通过跟踪两个"极值"来更新自己。第一个极值就是粒子本身所找到的历史最优解,这个解叫做个体极值pBest。另一个极值是整个种群找到的历史最优解,这个极值是全局极值gBest。

粒子抽象

  • 粒子群算法通过设计一种无质量的粒子来模拟鸟群中的鸟,粒子仅具有两个属性:速度和位置,速度代表移动的快慢和方向。
  • PSO初始化为一群随机粒子(随机解)。然后通过迭代找到最优解。在每一次的迭代中,粒子通过跟踪两个“极值”(pbest,gbest)来更新自己。在找到这两个最优值后,粒子通过下面的公式来更新自己的速度和位置。
    速度和位置的更新
  1. 公式(1)的第①部分称为【记忆项】,表示上次速度大小和方向的影响;
  2. 公式(1)的第②部分称为【自身认知项】,是从当前点指向粒子自身最好点的一个矢量,表示粒子的动作来源于自己经验的部分;
  3. 公式(1)的第③部分称为【群体认知项】,是一个从当前点指向种群最好点的矢量,反映了粒子间的协同合作和知识共享。粒子就是通过自己的经验和同伴中最好的经验来决定下一步的运动。
速度变化

算法流程

  1. 初始化一群微粒(群体规模为N),包括随机位置和速度;
  2. 评价每个微粒的适应度;
  3. 对每个微粒,将其适应值与其经过的最好位置pbest作比较,如果较好,则将其作为当前的最好位置pbest;
  4. 对每个微粒,将其适应值与其经过的最好位置gbest作比较,如果较好,则将其作为当前的最好位置gbest;
  5. 根据公式(2)、(3)调整微粒速度和位置;
  6. 未达到结束条件则转第2步。

迭代终止条件根据具体问题一般选为最大迭代次数Gk或(和)微粒群迄今为止搜索到的最优位置满足预定最小适应阈值。
流程图

PSO流程图

你可能感兴趣的:(粒子群算法(Particle Swarm Optimization,PSO))