文章目录
1. 算法简介
粒子群优化算法( Particle Swarm Optimization, PSO) 作为进化计算的一个分支,是由Eberhart 和Kennedy 于1995 年提出的一种全局搜索算法,同时它也是一种模拟自然界的生物活动以及群体智能的随机搜索算法。
该算法融入了个体认知和社会影响这些心理学的理论,粒子群算法是一种群体智能算法
其基本定义术语对照如下所示
鸟群觅食 | 粒子群优化算法 |
---|---|
鸟群 | 搜索空间的一组有效解(表现为种群规模N) |
觅食空间 | 问题的搜索空间(表现为维数D) |
飞行速度 | 解的速度向量 v i = [ v i 1 , v i 2 , ⋯ , v i D ] \boldsymbol{v}_i=\left[v_i^1, v_i^2, \cdots, v_i^D\right] vi=[vi1,vi2,⋯,viD] |
所在位置 | 解的位置向量 x i = [ x i 1 , x i 2 , ⋯ , x i D ] \boldsymbol{x}_i=\left[x_i^1, x_i^2, \cdots, x_i^D\right] xi=[xi1,xi2,⋯,xiD] |
个体认知与群体协作 | 每个粒子 i i i根据自身历史最优位置和群体的全局最优位置更新速度和位置 |
找到食物 | 算法结束, 输出全局最优解 |
2. 算法基本流程
粒子群优化算法(PSO) 要求每个个体(粒子)在进化的过程中维护两个向量,就是解的速度向量 v i = [ v i 1 , v i 2 , ⋯ , v i D ] \boldsymbol{v}_i=\left[v_i^1, v_i^2, \cdots, v_i^D\right] vi=[vi1,vi2,⋯,viD]、解的位置向量 x i = [ x i 1 , x i 2 , ⋯ , x i D ] \boldsymbol{x}_i=\left[x_i^1, x_i^2, \cdots, x_i^D\right] xi=[xi1,xi2,⋯,xiD]
pBest:果粒子到达了某个使得适应值更好的位置,则将该位置记录到该粒子的历史最优向量中,
- 是一个位置向量(而非速度向量)
- 每个粒子自己有一个
gBest:全局解的最优位置向量,算法仅仅通过速度的更新公式和位置更新公式来对算法进行求解
总体来说,分为以下几个步骤
- 初始化
- 计算适应度函数值
- 更新最优适应度函数值(自己的 + 全局的)
- 更新每个粒子的速度以及位置
- 看看是否满足约束条件,满足结束,否则跳转2
PSO算法的算法流程图和伪代码如下所示
算法流程图
伪代码
//功能: 粒子群优化算法伪代码
//说明: 本例以求问题最小值为目标
//参数: N为群体规模
procedure PSO
for each particle i
Initialize velocity Vi and position Xi for
particle i
Evaluate par ticlei and set pBesti= Xi
end for
gBest= min {pBesti}
while not stop
for i = l to N
Update the velocity and position of
particle i
Evaluate particle i
if fit (Xi )< fit (pBesti)
pBesti= Xi
if fit (pBesti) < fit (gBest)
gBest= pBesti;
end for
end while
print gBest
end procedure
3. 算法改进研究
PSO算法改进的5个难点问题
- 算法的理论研究
- 算法的参数研究
- 算法的拓扑结构研究
- PSO 与其他算法的混合
- 算法的应用
3.1 算法理论研究的改进
作者 | 特点 |
---|---|
Clerc 与Kennedy | 设计了一个称为压缩因子的参数。在使用了此参数之后, PSO 能够更快地收敛 |
Trelea | 指出PSO 最终稳定地收敛千空间中的某一个点,但不能保证是全局最优点 |
Kadirkamanathan 等人 | 在动态环境中对PSO 的行为进行研究,由静态分析深入到了动态分析 |
F. van den Bergh 等人 | 对PSO 的飞行轨迹进行了跟踪,深入到了动态的系统分析和收敛性研究 |
3.2 算法拓扑结构的改进
3.2.1 静态拓扑结构的改进
Kennedy 和Eberhart提出了PSO算法应该有群体版本和局部版本之间的区别,分别是:
- PSO(Global Version PSO,GPSO)
- PSOC Local Version PSO, LPSO)
与群体版本不同的是,他们将大群体分为了多个小群体,并且每个小群体都有自己的里斯最好位置
LPSO 中能够被用作更新向导的位置将要比GPSO 要多(群体中不止一个lBest)
所以LPSO 的多样性更好,往往能够在处理复杂的问题时表现出比GPSO 更好的性能。
下面是不同静态拓扑结构之间的对比
拓扑名称 | 结构特点 |
---|---|
星型结构 | 任意两个粒子都相互连接, 如图a所示 |
环型结构 | 每个粒子和左右两个粒子相连,如图b所示 |
齿形结构 | 邻域中仅有一个粒子作为“焦点”,和其他粒子相连,如图c 所示 |
冯· 诺依曼结构 | 每个粒子和平面网格中的上下左右四个粒子相连,如图d所示 |
3.2.2 动态拓扑结构的改变
名称 | 特点 |
---|---|
逐步增长法 | 根据进化代数将其邻居从粒子自身逐渐扩大到整个群体 |
最小距离法 | 每一代中选择m 个“距离”最近的粒子作为邻居 |
重新组合法 | 随机分成多个小种群进化了一定代数后重新随机组合,继续进化 |
随机选择法 | 随机为每个粒子选择K 个粒子(包括自身)作为邻域 |
3.3 离散版本改进
- 二进制编码PSO
- 整数编码PSO
第十九弹——23种标准测试函数解析~图像&公式&代码
Optimization Test Problems
写在最后
各位看官,都看到这里了,麻烦动动手指头给博主来个点赞8,您的支持作者最大的创作动力哟!
才疏学浅,若有纰漏,恳请斧正
本文章仅用于各位作为学习交流之用,不作任何商业用途,若涉及版权问题请速与作者联系,望悉知