粒子群优化算法(PSO)是一种进化计算技术(evolutionary computation),1995 年由Eberhart 博士和kennedy 博士提出,源于对鸟群捕食的行为研究。该算法最初是受到飞鸟集群活动的规律性启发,进而利用群体智能建立的一个简化模型。粒子群算法在对动物集群活动行为观察基础上,利用群体中的个体对信息的共享使整个群体的运动在问题求解空间中产生从无序到有序的演化过程,从而获得最优解。

1.1粒子群算法原理
PSO中,每个优化问题的解都是搜索空间中的一只鸟。我们称之为“粒子”。所有的粒子都有一个由被优化的函数决定的适应值(fitness value),每个粒子还有一个速度决定他们飞翔的方向和距离。然后粒子们就追随当前的最优粒子在解空间中搜索。

PSO 初始化为一群随机粒子(随机解)。然后通过迭代找到最优解。在每一次迭代中,粒子通过跟踪两个”极值”来更新自己。第一个就是粒子本身所找到的最优解,这个解叫做个体极值pBest。另一个极值是整个种群目前找到的最优解,这个极值是全局极值gBest。另外也可以不用整个种群而只是用其中一部分作为粒子的邻居,那么在所有邻居中的极值就是局部极值。

鸟群寻找食物的过程中,鸟与鸟之间存在着信息的交换,每只鸟搜索目前离食物最近的鸟的周围区域是找到食物的最简单有效的办法。

粒子群算法(以下简称PSO)就是模拟鸟群觅食行为的一种彷生算法 。 解=粒子=鸟 (鸟的位置象征着离食物的距离,粒子的位置也象征着离最优解的距离,是评价解质量的唯一标准), 找食物=找最优解,一个西瓜=一个粒子找到的历史最优解,一块肉=整个粒子群找到历史最优解 ,

就像鸟的飞行路线会受到自己曾经寻找到的最优食物和鸟群曾经找到过的最优食物的双重影响一样,算法中,每一次迭代,粒子通过两个"极值"(全局历史最优解gBest和个体历史最优解pBest)来更新自己的速度,该速度又是更新粒子位置的关键,而粒子的位置象征着离最优解的距离,也是评价该粒子(解)的唯一标准 。粒子群算法采用常数学习因子,及惯性权重,更新自己的速度和位置。

1.2粒子群算法的核心

该算法的核心是如何根据pBest与gBest来更新粒子的速度和位置,标准粒子群给出了如下的更新公式:

粒子群优化BP神经网络流程 粒子群优化算法pso_最优解

其中 , t:代数 , X是位置,V是速度,w是惯性权重,c是学习因子,r是随机数

粒子群优化BP神经网络流程 粒子群优化算法pso_极值_02

如上图所示,假设这是一个在2维平面内寻找最优解的待求解问题,某一时间的某一粒子Xt处在原点位置。则该粒子更新后的速度如上图所示 。 更新公式可以分为三个部门:

Part.1 : "惯性"或"动量"部分,反映粒子有维持自己先前速度的趋势

Part.2 : "认知"部门, 反映粒子有向自身历史最优位置逼近的趋势

Part.3 : "社会"部门, 反映粒子有向去群体历史最优位置逼近的趋势

1.3、
算法步骤

1、 随机初始化种群中各微粒的位置和速度;

2、 评价个粒子的适应度,将各粒子的位置和适应度储存在各微粒的pbest(QbiQib)中,将所有pbest中适应度最优的个体的位置和适应度存储在gbest(QbgQgb)中。

3、 更新粒子的速度和位移。

4、 对每个微粒,与其前一个最优位置比较,如果较好,则将其作为当前的最优位置。

5、 比较当前所有的pbest和上一迭代周期的gbest,更新gbest。

6、 若满足停止条件(达到要求精度或迭代次数),搜索停止,输出结果,否则,返回2。

1.4
粒子群算法参数介绍

标准粒子群算法中,有以下几个参数:

1、fitness,待优化的目标函数
finess 是待优化的目标函数,如何构造函数是用粒子群算法的前提,构造函数的结构直接决定了计算结果的好坏,特别是在多目标优化的问题中。

2、粒子数目:N

3、学习因子1:c1

4、学习因子2:c2
学习因子一般取2,c1决定着其局部搜寻能力,c2决定着其全局搜寻能力。

5、惯性权重:w
惯性权重大,便于全局搜索,惯性权重小,便于局部搜索。

6、最大迭代系数:M
最大迭代系数一般取1000—10000,具体看精度要求。

7、自变量的个数:D
自变量的个数有目标函数决定。