当前位置:首页>科技>正文

惯性权重什么意思 关于粒子群算法的问题

2023-06-26 11:43:25 互联网 未知 科技

 惯性权重什么意思 关于粒子群算法的问题

惯性权重什么意思

粒子公式
在找到这两个最优值时,粒子根据如下的公式来更新自己的速度和新的位置:
v[] = w * v[] c1 * rand() * (pbest[] - present[]) c2 * rand() * (gbest[] - present[]) (a)
present[] = present[] v[] (b)
v[] 是粒子的速度, w是惯性权重,persent[] 是当前粒子的位置. pbest[] and gbest[] 如前定义 rand () 是介于(0, 1)之间的随机数. c1, c2 是学习因子. 通常 c1 = c2 = 2.

关于粒子群算法的问题

粒子群的版本甚多,常用的是加有惯性权重w的
v[] = w * v[] c1 * rand() * (pbest[] - present[]) c2 * rand() * (gbest[] - present[])
一般选择惯性权重在迭代过程中线性下降,目的是在迭代的初期,以比较大的权重分配给粒子的原速度,而防止粒子过早的倾向于其本身的局部最优与全局最优,此时的全局搜索能力是可以的。但粒子群是基于牛顿力学的,随着w的减小,速度v的作用会在更新中弱化,对应的是,pbest和gbest的作用得到了加强,这也就意味着,粒子会更加趋向于pbest和gbest的方向移动。这个时候粒子就特别容易陷入局部最优了。

其实陷入局部最优不只是粒子群的问题,进化类的算法都存在这个问题,只不过有些算法随机性强一些,收敛速度慢一些,所以更加容易跳出局部最优(但不是绝对避免)

粒子群算法用matlab做,要把粒子初始化为矩阵要怎么做

可以参考一下这段代码

%------给定初始化条件----------------------------------------------
c1=1.8 %学习因子1
c2=1.8 %学习因子2
WMax=1.6 %惯性权重
WMin=0.8 %惯性权重
MaxDT=100 %最大迭代次数
D=3 %搜索空间维数(未知数个数)
N=30 %初始化群体个体数目
XUp=20/(2^0.5) %初始化位移上限
XDown=-20/(2^0.5) %初始化位移下限
VUp=0.5 %初始化速度上限
VDown=0.0 %初始化速度下限
eps=10^(-6) %设置精度(在已知最小值时候用)
%------初始化种群的个体(可以在这里限定位置和速度的范围)------------

x=((XUp-XDown).*rand(N,2*D) XDown) %随机初始化位置
v=((VUp-VDown).*rand(N,2*D) VDown) %随机初始化速度