用 MATLAB编写 PSO算法及实例1
1 粒子群算法PSO从这种模型中得到启示并用于解决优化问题
PSO 中,每个优化问题的潜在解都是搜索空间中的一只鸟,称之为粒子
所有的粒子都有一个由被优化的函数决定的适值 ( fitness value) ,每个粒子还有一个速度决定它们飞翔的方向和距离
然后粒子们就追随当前的最优粒子在解空间中搜索
PSO初始化为一群随机粒子 (随机解 ),然后通过迭代找到最优解
在每一次迭代中,粒子通过跟踪两个极值来更新自己;第一个就是粒子本身所找到的最优解,这个解称为个体极值; 另一个极值是整个种群目前找到的最优解,这个极值是全局极值
另外也可以不用整个种群而只是用其中一部分作为粒子的邻居,那么在所有邻居中的极值就是局部极值
假设在一个维的目标搜索空间中, 有个粒子组成一个群落, 其中第个粒子表示为一个维的向量,
第 个粒子的 “飞行 ”速度也是一个维的向量,记为,
第 个粒子迄今为止搜索到的最优位置称为个体极值,记为,
整个粒子群迄今为止搜索到的最优位置为全局极值,记为在找到这两个最优值时, 粒子根据如下的公式 (1
1)和( 1
2)来更新自己的速度和位置:(1
2)其中:和为学习因子,也称加速常数(acceleration constant),和为[0,1]范围内的均匀随机数
1)右边由三部分组成,第一部分为“惯性 (inertia)”或“动量(momentum)”部分,反映了粒子的运动 “习惯 (habit)”,代表粒子有维持自己DNiD),,,(21iDiiixxxXNi,,2,1iD),,21iiDiivvvV,(3,2,1ii),,,(21iDiibestppppNi,,2,1),,,(21gDggbestpppg)(2211idgdididididxprcxprcvwvidididvxx1c2c1r2r先