基本粒子群算法的原理和 matlab 程序
作者—— niewei120(nuaa)
一、粒子群算法的基本原理
粒子群优化算法源自对鸟群捕食行为的研究,最初由 Kennedy 和 Eberhart 提出,是一种通
用的启发式搜索技术。 一群鸟在区域中随机搜索食物, 所有鸟知道自己当前位置离食物多远,
那么搜索的最简单有效的策略就是搜寻目前离食物最近的鸟的周围区域。 PSO 算法利用这
种模型得到启示并应用于解决优化问题。 PSO 算法中,每个优化问题的解都是粒子在搜索
空间中的位置, 所有的粒子都有一个被优化的目标函数所决定的适应值, 粒子还有一个速度
值决定它们飞翔的方向和距离,然后粒子群就追随当前的最优粒子在解空间中搜索。
PSO 算法 首先在给定的解空间中随机初始化粒子群 ,待 优化问题的变量数 决定了 解空间的
维数 。每个粒子有了初始位置与初始速度。然后 通过迭代寻优。在每一次迭代中, 每个粒子
通过跟踪两个 “极值” 来更新自己在解空间中的空间位置与飞翔速度 。第一个极值就是单个
粒子本身在迭代过程中找到的最优解粒子,这个粒子叫做个体极值 。另一个极值是种群所
有粒子在迭代过程中所找到的最优解粒子, 这个粒子是全局极值。 上述的方法叫全局粒子群
算法。如果不用种群所有粒子而只用其中一部分作为该粒子的邻居粒子, 那么在所有邻居粒
子中的极值就是局部极值,该方法称为局部 PSO 算法。
速度、位置的更新方程表示为:
每个粒子自身搜索到的历史最优值 p
i
,p
i
=(p
i1
,p
i2
,....,p
iQ
),i=1,2,3,....,n 。所有粒子搜索
到的最优值 p
g
,p
g
=(p
g1
,p
g2
,....,p
gQ
),注意这里的 p
g
只有一个。
是保持原来速度的系数,所以叫做惯性权重。
是粒子跟踪自己历史最优值的权重系数,它表示粒子自身的认识,所以叫 “认知 ”。通常
设置为 2。
是粒子跟踪群体最优值的权重系数, 它表示粒子对整个群体知识的认识, 所以叫做 “社会
知识 ”,经常叫做 “社会 ”。通常设置为 2。
是[0,1] 区间内均匀分布的随机数。
是对位置更新的时候,在速度前面加的一个系数,这个系数我们叫做约束因子。通常设
置为 1
。