原理
粒子群算法(也称粒子群优化算法(particle swarm optimization, PSO)),模拟鸟群随机搜索食物的行为。粒子群算法中,每个优化问题的潜在解都是搜索空间中的一只鸟,叫做“粒子”。所有的粒子都有一个由被优化的函数决定的适应值(fitness value),每个粒子还有一个速度决定它们“飞行”的方向和距离。
粒子群算法初始化为一群随机的粒子(随机解),然后根据迭代找到最优解。每一次迭代中,粒子通过跟踪两个极值来更新自己:第1个是粒子本身所找到的最优解,这个称为个体极值;第2个是整个种群目前找到的最优解,这个称为全局极值。也可以不用整个种群,而是用其中的一部分作为粒子的邻居,称为局部极值。
假设在一个D维搜索空间中,有N个粒子组成一个群落,其中第i个粒子表示为一个D维的向量:
第i个粒子的速度表示为:
还要保存每个个体的已经找到的最优解,和一个整个群落找到的最优解。
第i个粒子根据下面的公式更新自己的速度和位置:
其中, 是个体已知最优解, 是种群已知最优解, 为惯性权重,, 为学习因子(或加速常数 acceleration constant),, 是[0,1]范围内的随机数。
式(1)由三部分组成:
- 惯性或动量部分,反应粒子的运动习惯。
- 认知部分,粒子有向自身历史最佳位置逼近的优势。
- 社会部分,粒子有向群体或领域历史最佳位置逼近的趋势。
特点
- 粒子群算法是一种高效的并行搜索算法。
- 粒子群算法保留了基于种群的全局搜索策略,操作模型比较简单,避免了复杂的遗传操作。
- 保留了每个粒子的个体历史极值。
- 算法在后期收敛速度缓慢。
- 粒子群算法对种群大小不十分敏感。
网友评论