1.4 粒子群算法
粒子群算法是美国学者J. Kennedy和R. Eberhart在1995年通过对鸟类群体行为进行建模与仿真后提出的一种群智能启发式算法。设计一种无质量的粒子来模拟鸟群中的鸟,把每个寻优的问题想象成一只鸟,食物的位置是寻优问题的最优解。粒子群算法容易实现、无须梯度信息、参数少,适于处理实际优化问题;同时具有强大的智能背景,适于科学研究。
1.4.1 基本思想
研究发现鸟群在飞行过程中经常会突然改变方向,或散开或聚集,其行为不可预测,但整体总保持一致性,个体之间也总能保持合适的距离。粒子群算法将鸟类的飞行空间抽象成求解问题的搜索空间,将每只鸟抽象成仅有速度和位置两个属性的粒子,代表一个问题的可能解,将寻找问题最优解的过程看成鸟类寻找食物的过程,从而求解复杂的优化问题。
粒子群算法首先在给定的解空间中随机初始化粒子群,解空间的维数由待优化问题的变量数决定。每个粒子给定初始位置与初始速度,再通过迭代寻优。每个粒子在搜索空间中单独搜寻最优解,将其记为当前个体极值,并将个体极值与整个粒子群里的其他粒子做比较,找到最优的那个个体极值作为整个粒子群的当前全局最优解。粒子群中的所有粒子根据自己找到的当前个体极值和整个粒子群共享的当前全局最优解来调整自己的速度和位置。达到终止条件时,停止搜索,输出最优解。
1.4.2 算法流程
粒子群算法运行的具体流程如下。
步骤1:初始化粒子群,随机产生n个位置为xi=(xi1,xi2,…,xiD),速度为vi=(vi1,vi2,…,viD)的粒子个体;初始化个体极值pbest和全局最优值gbest,并设置最大迭代次数T。
其中,pbest是每个粒子在迭代过程中找到的最优粒子,称为个体极值;gbest是种群个体在迭代过程中找到的最优粒子,称为全局极值。
步骤2:计算粒子的适应度值,并与当前pbest比较;如果较好,则替换pbest。
步骤3:对每个粒子,用它的适应度值和全局极值gbest比较;如果较好,则替换gbest。
步骤4:根据式(1-7)、式(1-8)更新每个粒子的速度和位置。
其中,ω叫作惯性因子,其值为非负。其值较大,全局寻优能力强,局部寻优能力弱;其值较小,全局寻优能力弱,局部寻优能力强。c1和c2为学习因子,也称加速度常数,取[0,2]上的随机数。
步骤5:比较当前迭代次数t是否在最大迭代次数范围内,若t<T,返回步骤2。
步骤6:确定最终最优值并输出。