前言

   学习粒子群算法有7个多月了,总结一下。温故而知新,希望可以再进一步。毕竟人蠢,理解能力有限,仅供参考!

  先说背景:1995年,由Kennedy和Eberhart提出,有鸟群觅食行为、进化理论和人工生命的影子。



1 粒子群算法(PSO)概述

    首先,给出Particle Swarm Optimization 概念:一种基于群体的进化计算技术,将可能解视作一个粒子,粒子有位置向量、速度向量和适应度值,粒子间会相互协作,在搜索空间里搜索全局最优值。这种算法主要用于非线性方程的求解。
    
    数学描述:
    (1)适应度函数。粒子群优化算法的适应度函数选取比较简单,一般情况下可以直接把所要求解问题的目标函数作为适应度函数。不过,也可以对目标函数进行适当的变换。 

   (2) 粒子速度公式:
      v[i] = v[i] + c1 * r1 * (pbest[i] - present[i]) + c2 * r2 * (gbest - present[i])    
   
   引入权重w后
,改进的速度公式(比较常用):
     v[i] = w * v[i] + c1 * r1 * (pbest[i] - present[i]) + c2 * r2 * (gbest - present[i])    

   (3) 粒子位置公式:present[i] = present[i] + v[i]
 
   符号解释:
    c1、c2:加速常数(学习因子);
    r1、r2 :随机数;
    v[i]:第i个粒子的速度;
    present[i]:粒子的当前位置;
    pbest[i]:单个粒子最优位置;
    gbest:全局粒子最优位置;
    w:权重。

2 PSO的具体步骤

    step1:初始化一个规模为M的粒子群,设定初始位置和深度

    step2:计算每个粒子的适应度值

    step3:将粒子的适应度值和其最好位置P(is)的适应度值比较,取最好的值

    step4:比较每个粒子的适应度值和全局最好位置P(gs)的适应度值,取最好的作为全局最优值

    step5:根据速度公式和位置公式,更新粒子速度及位置

    step6:满足终止条件则输出,否者返回step2(条件:输出结果可满足预定的最小适应阈值

3 PSO的改进方法及不同版本

    粒子群的改进策略如下:

    (1)引入惯性权重,提高全局搜索能力;

    (2)带邻域操作,克服在搜索后期随着搜索增加结果无改进的缺点;

    (3)应用拉伸技术,避免陷入局部最小值;

    (4)采用适应度定标的方法,提高粒子间适应度差异;

    (5)协同,将粒子群再分成K个相互独立的子群在不同维度上搜索。


    粒子群的种类

    (1)原始粒子群算法

    (2)标准粒子群算法

    (3)基于动态邻居和广义学习的粒子群算法

    (4)基于K均值聚类的动态多种群粒子群算法

    (5)多群体协同进化粒子群优化算法

    (6)自适应网格和拥挤距离的多目标粒子群算法

    (7)基于ε优的自适应多目标粒子群算法

    (8)..............






更多推荐