特点:简单、收敛速度快、设置参数少
群体迭代,粒子在解空间追随最优的粒子进行搜索
PSO基础:信息的社会共享
粒子群特性:社会行为 + 个体认知
1:所有粒子都在一个D维空间搜索
2:所有粒子由适应度函数确定适应值,用于判断目前位置的好坏
3:所有粒子有记忆功能,保存最佳位置
4:所有粒子以一个速度决定飞行距离和方向,且速度根据个体认知和社会行为进行动态调整
D维空间,N个粒子
粒子i位置:(可将x_i带入适应度函数f(x)求解适应值)
x i = ( x i 1 , . . . , x i D ) x_i=(x_{i1},...,x_{iD}) xi=(xi1,...,xiD)
粒子i速度:
v i = ( v i 1 , . . . , v i D ) v_i=(v_{i1},...,v_{iD}) vi=(vi1,...,viD)
粒子i的最好位置:
p b e s t i = ( p i 1 , . . . , p i D ) pbest_i=(p_{i1},...,p_{iD}) pbesti=(pi1,...,piD)
种群的最好位置:
g b e s t = ( g 1 , . . . , g D ) gbest=(g_1,...,g_D) gbest=(g1,...,gD)
在第d维的位置变化范围:
[ X m i n , d , X m a x , d ] [X_{min,d},X_{max,d}] [Xmin,d,Xmax,d]
在第d维的速度变化范围:
[ − V m a x , d , V m a x , d ] [-V_{max,d},V_{max,d}] [−Vmax,d,Vmax,d]
上述范围保证了位置和速度约束在预设的边界内部
粒子i在第d维的速度更新:
v i d k = w v i d k + c 1 r 1 ( p b e s t i d − x i d k − 1 ) + c 2 r 2 ( g b e s t d − x i d k − 1 ) v_{id}^k=wv_{id}^k+c_1r_1(pbest_{id}-x_{id}^{k-1})+c_2r_2(gbest_{d}-x_{id}^{k-1}) vidk=wvidk+c1r1(pbestid−xidk−1)+c2r2(gbestd−xidk−1)
粒子i在第d维的位置更新:
x i d k = x i d k − 1 + v i d k − 1 x_{id}^k=x_{id}^{k-1}+v_{id}^{k-1} xidk=xidk−1+vidk−1
c1、c2:加速度常数,调节学习最大步长
r1、r2:随机函数,取值范围[0,1],增加搜索随机性
w:惯性权重,非负,调节搜索范围
粒子的速度更新包括三部分:
1:粒子先前的速度
w v k wv_k wvk
2:认知:粒子当前位置与自己最好位置间的距离
c 1 r 1 ( p b e s t i d − x i d k − 1 ) c_1r_1(pbest_{id}-x_{id}^{k-1}) c1r1(pbestid−xidk−1)
3:社会:粒子当前位置与群体最好位置间的距离
c 2 r 2 ( g b e s t d − x i d k − 1 ) c_2r_2(gbest_{d}-x_{id}^{k-1}) c2r2(gbestd−xidk−1)
1:初始化
初始化群体规模未n,以及随机位置和速度
2:评估
根据适应度函数,评价每个粒子的适应度
3:找到个体最优pbest
比较当前适应度值和个体pbest,更新pbest
4:找到群体最优gbest
比较当前适应度值和群体gbest,更新gbest
5:更新粒子情况
根据公式更新每个粒子的速度和位置
6:终止
如果达到最大迭代次数G_max,或最佳适应度值的增量小于阈值
过小:提前局部最优
过大:优化能力好但收敛速度慢,当群体数目增长到一定水平时,再增长不明显
1:惯性因子w
若w=1,则是基本粒子群算法
若w=0,则失去对粒子本身速度的记忆
2:学习因子c1、c2
若c1=0,则是无私型粒子,会丧失群体多样性,陷入局部最优解
若c2=0,则是自我认知型粒子,会丧失信息社会共享,收敛速度缓慢
若c1!=0且c2!=0,则是完全型粒子,平衡收敛速度和搜索效率
作用:维护探索能力和开发能力的平衡
过大:探索能力增强,但容易飞过全局最优解
过小:开发能力增加,但容易陷入局部最优解
一般变化范围:每个维度变量的10%-20%
1:最大迭代步数
2:可接受的满意解
依赖于问题
特色:参数少,惯性因子和领域定义重要
1:群体内所有个体都是粒子的领域(对应全局粒子群算法)
2:群体内部分个体是粒子的领域(对应局部粒子群算法)
领域拓扑结构,决定,群体pbest
邻域随迭代次数的增加线性变大,最后邻域扩展到整个粒子群
全局粒子群算法:收敛速度快,容易局部最优
局部粒子群算法:收敛速度慢,不容易局部最优
1:函数优化问题
2:TSP问题(路径对应位置,交换子/交换序列对应速度)
3:参数优化
4:组合优化
前期提高全局搜索能力(w较大),找到合适的种子
后期提高局部搜索能力(w较小),提高收敛精度
解决方法:线性递减权值
w = w m a x − ( w m a x − w m i n ) ∗ r u n / r u n m a x w=w_{max}-(w_{max}-w_{min})*run/run_{max} w=wmax−(wmax−wmin)∗run/runmax
w m a x :最大惯性权重, w m i n :最小惯性权重, r u n :当前迭代次数, r u n m a x :总迭代次数 w_{max}:最大惯性权重,w_{min}:最小惯性权重,run:当前迭代次数,run_{max}:总迭代次数 wmax:最大惯性权重,wmin:最小惯性权重,run:当前迭代次数,runmax:总迭代次数
作用:保证收敛性
速度更新公式:
v i d = K [ v i d + f 1 r 1 ( p b e s t i d − x i d ) + f 2 r 2 ( g b e s t d − x i d ) ] v_{id}=K[v_{id}+f_1r_1(pbest_{id}-x_{id})+f_2r_2(gbest_{d}-x_{id})] vid=K[vid+f1r1(pbestid−xid)+f2r2(gbestd−xid)]
K :收缩因子(受到 f 1 和 f 2 限制的 w ), f 1 和 f 2 是预先设定的模型参数 K:收缩因子(受到f_1和f_2限制的w),f_1和f_2是预先设定的模型参数 K:收缩因子(受到f1和f2限制的w),f1和f2是预先设定的模型参数
K = 2 / ∣ 2 − f − t ( f 2 − 4 f ) ∣ K=2/|2-f-\sqrt{t(f^2-4f)}| K=2/∣2−f−t(f2−4f)∣
f = f 1 + f 2 , f > 4 f=f_1+f_2,f>4 f=f1+f2,f>4
基于概率计算的随机搜索进化算法,在结构、研究内容、方法以及步骤上有较大的相似性
1:数学理论基础相对薄弱
2:参数设置没有确切的理论依据,对具体问题和应用环境的依赖性大;
3:比较性研究不足,缺乏用于性能评估的标准测试集;
4:不具备绝对的可信性,存在应用风险
1:真实群居动物的行为特征
2:算法收敛性
3:提高收敛速度,从而解决大规模优化问题
4:各种参数设置问题
5:群智能的并行算法
6:各算法的适用范围
7:与其它算法的混合技术
1:什么是群?什么是群智能?
2:群智能算法的一般框架
3:群智能算法有哪些?
4:PSO的基本思想,粒子、评价函数、粒子学习(跟踪2个极值:个体极值和社会极值)
5:粒子的速度更新公式的含义,各部分对算法性能的作用
6:PSO算法步骤