粒子群算法原理及在函数优化中的应用(附程序)

粒子群算法原理及在函数优化中的应用(附程序)

粒子群算法原理及其在函数优化中的应用

1 粒子群优化(PSO)算法基本原理

1.1 标准粒子群算法

假设在一个D维的目标搜索空间中,有m个代表问题潜在解的粒子组成一个种群x [x1,x2,...,xm],第i个粒子的信息可用D维向量表示为

xi [xi1,xi2,...,xiD]T,其速度为vi [vi1,vi2,...,viD]T。算法首先初始化m个随机粒子,然后通过迭代找到最优解。每一次迭代中,粒子通过跟踪2个极值进行信息交流,一个是第i个粒子本身找到的最优解,称之为个体极值,即

pi [pi1,pi2,...,piD]T;另一个是所有粒子目前找到的最优解,称之为群体极值,即pg [pg1,pg2,...,pgD]T。粒子在更新上述2个极值后,根据式(1)和式(2)更新自己的速度和位置。

vti 1 wvti c1r1(pti xti) c2r2(ptg xit)

(1)

xti 1 xti vti 1 (2)

式中,t代表当前迭代次数,r1,r2是在[0,1]之间服从均匀分布的随机数,c1,c2

称为学习因子,分别调节粒子向个体极值和群体极值方向飞行的步长,w为惯性权重,一般在0.1~0.9之间取值。在标准的PSO算法中,惯性权重w被设为常数,通常取w 0.5。在实际应用中,x需保证在一定的范围内,即x的每一维的变化范围均为[Xmin,Xmax],这在函数优化问题中相当于自变量的定义域。

1.2 算法实现步骤

步骤1:表示出PSO算法中的适应度函数fitness(x);(编程时最好以函数的形式保存,便于多次调用。)

步骤2:初始化PSO算法中各个参数(如粒子个数,惯性权重,学习因子,最大迭代次数等),在自变量x定义域内随机初始化x,代入fitness(x)求得适应度值,通过比较确定起始个体极值pi和全局极值pg。

步骤3:通过循环迭代更新x、pi和pg: ①确定惯性权重w的取值(当w不是常数时)。

②根据式(1)更新粒子的速度vik 1,若速度中的某一维超过了Vmax,则取为

Vmax。

③根据式(2)更新自变量x,若x的取值超过其定义域,则在其定义域内重新

你可能喜欢

  • 机器学习
  • 遗传算法原理
  • 进化计算
  • 蚁群算法原理
  • 遗传算法解决TSP问题
  • 效用函数
  • 期望效用理论

粒子群算法原理及在函数优化中的应用(附程序)相关文档

最新文档

返回顶部