粒子群算法(PSO)初识

粒子群算法PSO是模拟群体智能所建立起来的一种优化算法,用于解决各种优化问题。

抽象问题实例化:

假设一群 鸟在觅食,只有一个地方有 食物,所有鸟儿都看不见食物(不知道食物的具体位置,知道了就不无需觅食了), 但是能闻见食物的气味,知道食物的 远近(即知道食物和自己的距离)。

假设鸟与鸟之间能共享信息(即互相知道每个鸟离食物多远,这个是人工设定鸟群合作),那么最好的策略就是结合自己离食物最近的位置和鸟群中其他鸟距离食物最近的位置这2个因素综合考虑找到最好的 搜索位置。

一、基本概念

PSO核心概念:

1.粒子(particle):一只鸟。

2. 种群(population):鸟群。

3. 位置(position):一个粒子(鸟)当前所在的位置。

4. 经验(best):一个粒子(鸟)自身曾经离食物最近的位置。

5. 速度(velocity):一个粒子(鸟)飞行的速度。

6. 适应度(fitness):一个粒子(鸟)距离食物的远近。

二、粒子算法的过程

粒子群算法步骤:

1)根据问题需要, 随机生成粒子,粒子的数量可自行控制。

2)将粒子组成一个种群。

3)计算粒子的适应度值。(即 )计算粒子距离最优值得远近。

4)更新种群中每个粒子的位置和速度。

5)满足退出条件就退出,不满足 就转向步骤3)。

三、PSO核心——速度更新

从PSO算法流程图中可以看出,核心步骤是更新种群中每个粒子的位置和速度,而速度的更新是核心中的核心。

粒子速度更新公式如下:

v为粒子当前的速度,w为惯性因子(有速度就有运动惯性)。rand()为随机数生成函数,生成0~1之间的随机数。

position为粒子当前的位置,pbest为本粒子历史上最好的位置,gbest为种群中所有粒子中当前最好的位置。

c1和c2表示学习因子,分别向本粒子历史最好位置 和种群中当前最好位置学习。

注: 实际 中设置c1=c2=1,w=0.5

下面从物理原理上解释这个速度更新公式,速度更新公式分为3个部分:

第一部分是惯性保持部分,粒子沿着当前的速度和方向惯性飞行,不会偏移。(牛顿运动学第一定理)

第二部分是自我认识部分,粒子受到自身历史最好位置的吸引力,有回到自身最好位置的意愿。(牛顿运动学第二定理)

第三部分是社会认知部分,粒子处在一个社会中(种群中),社会上有更好的粒子(成功人士),粒子 受到成功人士的 吸引力,有去社会 中成功人士位置的意愿。(牛顿 运动学第二定理)

速度更新公式的物理含义:粒子在自身惯性和2中外力作用下,速度和方向发生改变。

这3部分都有重要含义。没有惯性部分,粒子们将很快向当前的自身最优位置和局部最优位置

靠拢,变成了一个局部算法。有了惯性,不同粒子有在空间中自由飞行的趋势,能够在整个

搜索区域内寻找最优解。而没有自我认知部分,粒子们将向当前的全局最优粒子位置靠拢,

容易陷入局部最优。没有社会认知部分,粒子们各自向自身最优位置靠拢,各自陷入自身最优

位置,整个搜索过程都不收敛了。

有了速度更新公式,位置更新就简单了:

                                

注:t一般默认取1。

猜你喜欢

转载自blog.csdn.net/xueluowutong/article/details/84964701