智能优化算法——粒子群算法
粒子群算法(也叫鸟群觅食算法)[Particle Swarm Optimization,PSO]
群体迭代,粒子在解空间追随最优的粒子进行搜索
优点:原理简单,收敛速度快,设置参数少
缺点:易早熟收敛至局部最优,迭代后期收敛速度慢
1、发展
是一种进化计算技术,1995年由Kennedy和Eberhart于1995年提出。
来源于对鸟群捕食行为的研究,模拟鸟集群飞行觅食的行为,鸟之间通过集体的协作使群体达到最优目的,是一种基于Swarm Intelligence的优化方法。
2、基本思想
设想一个场景:一群鸟在随机搜索食物
已知:在这块区域中只有一块食物;所有的鸟都不知道食物在哪里;但他们能感受到当前的位置离食物还有多远
那么:找到食物的最优策略是什么?
搜索目前离食物最近的鸟的周围区域,根据自己的飞行经验判断食物的所在
PSO的基础:信息的社会共享
斜体样式
3、算法介绍
每个寻优的问题解都被想象成一只鸟,称为“粒子”,所有粒子都在一个D维空间进行搜索;
所有的粒子都由一个fitness function 确定适应值以判断目前位置的好坏;
每个粒子必须赋予记忆功能,能记住所搜寻到的最佳位置;
每一个粒子还有一个速度以决定飞行的距离和方向。这个速度根据它本身的飞行经验以及同伴的飞行经验进行动态调整。
4、算法流程
(1)Initial:
初始化粒子群体(群体规模为n),包括随机位置和速度
(2)Evaluation:
根据fitness function,评价每个粒子的适应度
(3)Find the Pbest:
对每个粒子,将其当前适应值与其个体历史最佳位置(pbest)对应的适应度作比较,如果当前的适应度值更高,则将用当前位置更新历史最佳位置pbest
(4)Find the Gbest
对每个粒子,将其当前适应值与全局最佳位置(gbest)对应的适应值作比较,如果当前的适应值更高,则将用当前粒子的位置更新全局最佳位置gbest
(5)Update the Velocity
根据公式更新每个粒子的速度和位置
(6)如果未满足结束条件,则返回步骤2,通常算法迭代到最大迭代次数Gmax或者最佳适应度值的增量小于某个给定的阈值时算法停止
流程图
5、粒子群算法的构成要素
群体大小 m
m是一个整型参数
m 很小:很可能陷入局部最优
m很大:PSO的优化能力很好
当群体数目增长至一定水平时,再增长将不再有显著的作用
权重因子(较为重要)
惯性因子ω = 1 基本粒子群算法
学习因子c1,c2都不为0,称为完全型粒子群算法
完全型粒子群算法更容易保持收敛速度和搜索效果的均衡,是较好的选择
惯性因子 ω = 0 失去对粒子本身的速度的记忆
在进化前期w应该大一些,保证每个粒子独立飞行充分搜索空间,后期小一点,多向其他粒子学习
学习因子c1 = 0 无私型粒子群算法,迅速丧失群体多样性,容易陷入局部最优而无法跳出。
学习因子c2=0 自我认知型粒子群算法 完全没有信息的社会共享导致算法收敛速度缓慢
c1,c2分别向个体极值和全局极值最大飞行步长。前期c1应该大一些,后期c2大一些,以便平衡粒子的全局搜索能力和局部搜索能力。
最大速度
作用:在于维护算法的探索能力与开发能力的平衡
Vm较大时,探索能力增强,但是粒子容易飞过最优解
Vm较小时,开发能力增强,但是容易陷入局部最优
Vm 一般设为每维变量变化范围的10%~20%
邻域的拓扑结构(较为重要)
两种:
一种是将群体内所有个体都作为粒子的邻域;
另一种是只将群体中的部分个体作为粒子的邻域
邻域拓扑结构 决定 群体历史最优位置
由此,将粒子群算法分为:
(1)全局粒子群算法
粒子自身历史最优值;粒子群体的全局最优值
(2)局部粒子群算法
粒子自身历史最优值;粒子领域内粒子的最优值
邻域随迭代次数的增加线性变大,最后邻域扩展到整个粒子群
全局粒子群收敛速度快,但易陷入局部最优;
局部粒子群收敛速度慢,但是很难陷入局部最优
停止准则
一般有两种:
最大迭代步数
可接受的满意解
粒子空间初始化
较好的选择粒子的初始化空间,将大大缩短收敛时间,依赖于具体问题
6、PSO应用
系统设计、多目标优化、分类、模式识别、调度、信号处理、决策、机器人应用等
具体实例:模糊控制器设计、车间作业调度、机器人实时路径规划、自动目标检测、时频分析等
存在的问题:
(1)数学基础薄弱,在收敛性理论、计算性能、实现技术和参数的设置等方面缺乏严密的数学基础,其应用大多数依靠经验和实验;
(2)PSO的研究成果大部分集中在算法设计上,对算法的性能、收敛性、收敛速度、参数选取及参数的鲁棒性等理论性的研究则很少,其理论分析的内容和深度都很浅,理论研究大大滞后于PSO在工程中的研究。
(3)PSO的算法研究要利用不同问题的特点设计出相应的有效算法,应注重高效的算法开发,提出合理的核心更新公式以及有效的均衡全局搜索与局部改进的策略。
改进:
(1)实现参数的自适应变化
(2)引入一些其他的机制,比如随机的因素,速度,位置的边界变化-后期压缩最大速度等等
(3)结合其他智能优化算法:与进化算法、模糊逻辑、生物智能等或策略相结合,帮助粒子跳出局部最优,改善收敛速度。