保持粒子活性的改进粒子群优化算法

基本粒子群优化算法的寻优能力主要依赖粒子之间的相互作用和相互影响,粒子自身没有变异能力。当单个粒子陷入局部极值时,它可以借助其它粒子来逃逸局部极值点;若大部分粒子均被相同的局部极值所限制时,整个算法就会进展缓慢,甚至出现停滞现象。因而基本PSO算法在早期具有较好的收敛速度,但在算法的后期,由于所有粒子都向局部极小或全局极小收敛,此时,每个粒子的pBest、所有粒子的gBest,以及每个粒子的当前位置都会趋向于同一点,粒子的速度也趋向0,粒子群的多样性也就逐渐丧失,致使算法的收敛速度明显变慢,甚至处于停滞状态,因而也就难以获得较好的优化结果。有文献提出了Multi-start PS0,每迭代若干次后,保留粒子群的历史最优位置,粒子全部重新初始化,以提高粒子的多样性,扩大搜索空间,摆脱局部最优点的吸引,保证收敛到全局最优,但粒子群的全部初始化将完全破坏当前粒子的结构,使得收敛速度大大减缓,搜索精度也大大降低。

为了使粒子群在进化过程中既能够快速收敛又不至于丧失群体的多样性,我们可以从单个粒子着手。如果单个粒子能够使自身从失活的状态(即指连续一定代数都没有取得进展的粒子)重新活跃起来,那么由众多单个粒子组成的粒子群就会具有较强的活力,就能够具有较强的能力逃逸出局部极值点,从而获得较快的收敛速度和潜在地找到较优解。

为了保持粒子的活性,首先,通过在迭代过程中比较单个粒子的当前适应值与粒子的自身历史最优pBest来判断粒子是否失活,如果粒子在一定演变代数Iter_num内都没有取得好于粒子的历史最优的适应值,则认为粒子已经失活。然后,为了激活粒子对粒子作如下变异:即要么使粒子以较小的变异概率在其迭代过程中获得的维空间内重新初始化;要么使粒子在其当前位置进行扰动,并将变异或扰动的结果无条件地接受为当前粒子的历史最优。以此来增强全局搜索能力,克服粒子群陷入局部解而难以自拔的缺点,同时又可以加快收敛速度、提高搜索精度。



发表评论

You must be logged in to post a comment.