先来唠唠什么是最优化问题,就是在满足一定的约束条件下,找到一组合适参数,使得系统的某些性能指标(最优性度量)达到最值。迭代提供了一种求解最优化问题的基本思路:给定初始点,按照某种特定规则生成点列
。若
是有穷点列,那最后一个点是最优点。若
是无穷点列,则极值点是最优点。好的优化算法能稳定的接近局部极值点,并迅速收敛,直到满足规则时终止。
然后说说PSO的发展史:Reynolds假设每只鸟都遵循一定的行为准则,提出了Boid(Bird-oid)模型。每只人工鸟称为Boid,可以感知周围一定范围内其它Boid的飞行信息,作为决策机构的输入,再结合自身的当前状态(空间位置、飞行方向、飞行速度)作出下一步决策。个体应遵循3条规则:(1)避免碰撞;(2)速度一致;(3)中心集群。由Boid组成的系统完全自下而上地运行。Hepner和Grenander在Boid模型上,进一步加入了“鸟群受栖息地吸引”的特点。开始时,鸟群逐渐形成,并不以特定方向飞行;直到有鸟飞越了栖息地并受其牵引,则其它同伴受临近伙伴与栖息地的影响,逐渐降落在栖息地。Boyd与Richerson的个体学习与文化传承理论也支持了这一论点。他们认为:人们在做决策的过程中会利用个体所拥有的经验和他人的经验两项资讯。1995年,社会心理学博士James Kennedy和电子工程学博士Russel Eberhart提出了粒子群优化算法(PSO)。该算法将鸟群运动模型中的栖息地类比为所求问题解空间中可行解的位置,通过个体信息传递,导引整个群体向可行解方向移动,求解过程逐步发现更优解。鸟被抽象成无质量无体积的“微粒”,通过微粒间相互协作和信息共享,使其运动速度受到自身和群体历史运动状态信息的影响,以自身和群体的历史最优位置来对微粒当前的运动方向和速度施加作用,较好地协调个体与整体间关系,有利于在复杂解空间中寻优。
PSO形成的基础是社会信息共享机制。在PSO中,每个粒子有自身的位置(一个潜在解)和速度,并可随机初始化。寻优过程中,粒子适应值取决于目标函数,每个粒子携带以下信息:(1)当前位置;(2)当前速度;(3)目前为止粒子本身所发现的最优位置(自身经验),称为个体极值 ;(4)目前为止整个种群发现的最优位置(群体经验),称为全局极值 。这样一来,粒子通过两方面的经验指导自身行为。PSO的思想其实非常简单,就是“大家”一起寻优,这个过程不是盲目的,而是依据“前车之鉴”,在信息交互下进行,主要计算只有位置和速度的更新。
考虑一个n维搜索空间,m个粒子组成一个群落,其中第i个粒子的位置(潜在解)可表示为
将其代入到目标函数,根据计算出的适应值来衡量解的优劣。将第i个粒子的速度记为
粒子通过不断调整自己的位置来搜索新解。每个粒子自身搜索到的最优解,种群搜索到的最优解
。下一时刻粒子速度为
其中 是惯性因子。
生成[0,1]内的随机数。可见,决定粒子速度的因素有:原有速度
,原来位置与自身最优的距离
,原来位置与群体最优的距离
.
从社会学的角度考虑,第一项表示对自身运动状态的信任,进行惯性运动;第二项为“认知”部分,表示自我思考;第三项为“社会”部分,表示信息共享与相互合作(粒子通过来自其它粒子的经验,模仿性能好的同伴运动)。寻优过程促进群体向着共同认知方向靠拢。
Algorithm
Step 1:初始化种群规模和解空间维度;为每个粒子给定初始位置和初始速度;每个粒子的设为其初始位置;
中的最优解设置为
.
Step 2:更新粒子速度,对每个粒子进行速度越限检查,确保在间;更新粒子位置
,并进行越限检查,确保在
.
Step 3:根据目标函数计算适应值。
Step 4:对群体中的每个粒子,将Step 3中计算出的适应值与其个体最佳的适应值比较,若优于
,就取代;再与群体最佳
的适应值比较,若优于
,则取代。
Step 5:检查终止条件(达到最大迭代次数或适应值足够好)。若满足,则终止,输出结果;否则,跳转到Step 2。
PSO具有收敛快、易实现、调整参数少等优点,但容易陷入局部最优,实时性和搜索精度有待提高。对PSO的改进主要从两方面着手:从具体应用入手,根据具体情况改进算法,满足应用需求;从PSO理论入手,分析算法的收敛,提高优化性能。