欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

粒子群算法简单介绍

最编程 2024-02-11 17:32:23
...

原理

粒子群算法(也称粒子群优化算法(particle swarm optimization, PSO)),模拟鸟群随机搜索食物的行为。粒子群算法中,每个优化问题的潜在解都是搜索空间中的一只鸟,叫做“粒子”。所有的粒子都有一个由被优化的函数决定的适应值(fitness value),每个粒子还有一个速度决定它们“飞行”的方向和距离。

粒子群算法初始化为一群随机的粒子(随机解),然后根据迭代找到最优解。每一次迭代中,粒子通过跟踪两个极值来更新自己:第1个是粒子本身所找到的最优解,这个称为个体极值;第2个是整个种群目前找到的最优解,这个称为全局极值。也可以不用整个种群,而是用其中的一部分作为粒子的邻居,称为局部极值。

假设在一个D维搜索空间中,有N个粒子组成一个群落,其中第i个粒子表示为一个D维的向量:

X_i = (x_{i1}, x_{i2}, \ldots, x_{iD}), i=1,2,\ldots ,N

第i个粒子的速度表示为:

V_i = (v_{i1}, v_{i2}, \ldots, v_{iD}), i=1,2, \dots, N

还要保存每个个体的已经找到的最优解p_{best},和一个整个群落找到的最优解g_{best}

第i个粒子根据下面的公式更新自己的速度和位置:

v_{id} = w \times v_{id} + c_1 r_1 (p_{id}-x_{id}) + c_2 r_2 (p_{gd}-x_{id}) ,(1)

x_{id} = x_{id} + v_{id}

其中,p_{id} 是个体已知最优解,p_{gd} 是种群已知最优解,w 为惯性权重,c_1, c_2 为学习因子(或加速常数 acceleration constant),r_1,r_2 是[0,1]范围内的随机数。

式(1)由三部分组成:

  1. 惯性或动量部分,反应粒子的运动习惯。
  2. 认知部分,粒子有向自身历史最佳位置逼近的优势。
  3. 社会部分,粒子有向群体或领域历史最佳位置逼近的趋势。

特点

  • 粒子群算法是一种高效的并行搜索算法。
  • 粒子群算法保留了基于种群的全局搜索策略,操作模型比较简单,避免了复杂的遗传操作。
  • 保留了每个粒子的个体历史极值。
  • 算法在后期收敛速度缓慢。
  • 粒子群算法对种群大小不十分敏感。