转自https://blog.csdn.net/zuochao_2013/article/details/53431767
一.产生背景
❃粒子群算法(particleswarm optimization,PSO)由Kennedy和Eberhart在1995年提出,该算法对于Hepper的模拟鸟群(鱼群)的模型进行修正,以使粒子能够飞向解空间,并在最好解处降落,从而得到了粒子群优化算法。
❃同遗传算法类似,也是一种基于群体叠代的,但并没有遗传算法用的交叉以及变异,而是粒子在解空间追随最优的粒子进行搜索。
❃PSO的优势在于简单,容易实现,无需梯度信息,参数少,特别是其天然的实数编码特点特别适合于处理实优化问题。同时又有深刻的智能背景,既适合科学研究,又特别适合工程应用。
设想这样一个场景:一群鸟在随机的搜索食物。在这个区域里只有一块食物,所有的鸟都不知道食物在哪。但是它们知道自己当前的位置距离食物还有多远。
那么找到食物的最优策略是什么?
最简单有效的就是搜寻目前离食物最近的鸟的周围区域。
二. 算法介绍
(1)简述
❃每个寻优的问题解都被想像成一只鸟,称为“粒子”。所有粒子都在一个D维空间进行搜索。
❃所有的粒子都由一个fitness-function确定适应值以判断目前的位置好坏。
❃每一个粒子必须赋予记忆功能,能记住所搜寻到的最佳位置。
❃每一个粒子还有一个速度以决定飞行的距离和方向。这个速度根据它本身的飞行经验以及同伴的飞行经验进行动态调整。
(2)基本PSO算法
a. 维空间中,有
个粒子;
粒子位置:
粒子速度:
,
,
粒子经历过的历史最好位置:
群体内(或领域内)所有粒子所经历过的最好位置:
PS:一般来说,粒子的位置和速度都是在连续的实数空间内进行取值。
b.基本PSO公式
粒子 的第
维速度更新公式:
粒子 的第
维位置更新公式:
式中:、
为学习因子或加速系数,一般为正常数。通常等于2;
、
取值范围是
,是该区间均匀分布的伪随机数。
惯性权重,调节对解空间的搜索能力
注意:
生成新的粒子后,需要判断其是否位于定义域内,如果超出边界,则丢弃,重新随机生成一个。
速度也要进行边界判断。
(3)基本PSO算法流程图