8.粒子群算法(理论部分)

本文主要介绍基础粒子群算法的主要理论,并简单介绍自适应权重分配与压缩因子的用法(即速度更新公式的三个系数改进)。
实际上粒子群算法经历了数十年发展,衍生出的改进算法多种多样,这里就不再过多介绍。下面开始正文部分:

一.定义
粒子群优化算法(Particle Swarm optimization,PSO)又翻译为粒子群算法、微粒群算法、或微粒群优化算法。是通过模拟鸟群觅食行为而发展起来的一种基于群体协作的随机搜索算法。通常认为它是群集智能 (Swarm intelligence, SI) 的一种。它可以被纳入多主体优化系统(Multiagent Optimization System, MAOS)。粒子群优化算法是由Eberhart博士和kennedy博士发明。

二.数学原理:
粒子群算法主要利用了如下原理:
群体中的每个个体都可以从临近个体的以往经验中受益。涵盖三个方面
刺激的评价
与近邻的比较
对领先近邻的模仿。
(1)公式:
我们假设每个个体为一个D维空间的一个理想点,按照一定的速度飞行,这个速度是根据自身与同伴飞行经验动态调整的。假设D个粒子组成的集合为Xi(i从1到D),它经历过的最好位置组成的集合为Pi(i从1到D),也成为Pbest。在群体中经历过最好位置的索引号用符号g表示,即Pg也称Gbest粒子i的速度用Vi表示,对于每一代,其第d维的变化方程如下:
在这里插入图片描述

第一行为速度更新公式:
个人认为,速度这个向量类似梯度下降算法中的微分,让群体整体一步步趋近于全局最优解,又因为粒子群算法中鸟群的数量较大,因此可以避免陷入局部最优。
第二行为位置更新公式:
因为单位时间一定,所以单位时间内,新移动的距离为Vi。

(2).参数的介绍:

其中,w为惯性权重c1 c2为加速度常数,分别是个体学习因子社会学习因子,rand1与rand2为两个在[0,1]范围内的随机数。粒子总数为M在这里插入图片描述
表示第k次迭代的粒子i飞行速度矢量的第d维分量
在这里插入图片描述
表示第k次迭代的粒子i位置矢量的第d维分量
在这里插入图片描述
表示粒子i的最好位置Pbesti的第d维分量Pgd为群体最好位置Gbest的第d维分量
F(x)为粒子处于x处的适应度值,一般取目标函数值。同时,粒子的速度是受限的,存在一个最大速度Vmax限制其上限。
时间间隔是固定的,因此每单位时间的移动距离即为v
上面两个式子中,包含三个部分:

①粒子先前的速度
②粒子的本身思考,可理解为粒子i当前位置与自己最好位置间的距离
③群体间和合作与信息共享,可理解为粒子i当前位置与群体最好位置间的距离

三.流程图 :
在这里插入图片描述
四.参数的进一步探究:
(1)规模m:其大小正比于问题的维数,m一般是问题维数的1.5倍左右。
(2)最大速度Vmax:我们一般需要设置速度上限Vmax,Vmax太大会导致粒子飞过好解,太小会导致对局部最优区间外的区域探索不足,陷入局部最优。通过限制Vmax,我们可以防止计算溢出、实现人工学习和态度转变、决定问题空间搜索的粒度。
(3)权重因子:包括惯性权重w、加速常数c1c2。w使粒子保持运动惯性,使其具有扩展搜索空间的趋势,有能力探索新的区域。而c1c2代表将每个粒子推向pbest与gbest位置的统计加速项的权重,较低的加速常数允许粒子在被拉回前可以在目标区域外徘徊,高的加速常数会导致粒子突然冲向或越过目标区域,形成较大的适应值波动。
①假设w为0,此时,若某粒子处于全局最优的位置,那么他会保持静止,其他粒子会飞向其本身最佳位置pbest与全局最佳位置gbest的加权中心。此时只能进行局部的搜索。
②假设c1 c2 均=0,此时,将极其不利于粒子的搜索。w>1,会造成加速运动,很容易越过最优解;w<1,会造成减速运动,可能未检索到最优解就会衰减至停止;w=0,飞行速度与方向不变,同样不利于区域搜索。
③假设c1为0,此时,表示粒子不存在个体认知能力,在粒子的相互作用下,虽然会探索新的解空间,但对于复杂的问题来说很容易陷入局部最优。
④假设c2为0,此时,表示粒子不存在社会认知能力,不存在社交能力,也即是进行m次单个粒子的搜索,其探索能力大大下降。
(摘自《群智能优化算法理论与应用》 p76-79)

五.改进
在早期的实验中,经常取w为1,c1c2为2。但是为了优化搜索效果,我们可以改进w c1 c2三个参数。针对w,较常见的有线性递减、非线性递减、自适应变化等,这里介绍自适应惯性权重。针对c1 c2,这里介绍压缩因子的改进方法。
(1)自适应惯性权重(求最小值)
.在这里插入图片描述
自适应惯性权重(求最大值)
在这里插入图片描述

惯性权重w应处于某范围内,WmaxWmin是我们设定好的上限下限,如0.9与0.4。fd_average所有粒子在第d次迭代的平均适应度fd_min所有粒子在第d次迭代的最小适应度,它是一个固定的值。如果求最小值,有三个粒子,他们的适应度为5、6、7。那么w分别为0.4、0.9、0.9。

一个较大的惯性权重,全局搜索能力往往更强(可理解为粒子惯性移动较大,较容易搜索到更远的位置)。而对于较小的惯性权重,局部搜索能力往往较强(可理解为粒子惯性移动距离小,粒子更容易在其周围区域搜索)。对于求最小值的情况来说,若某粒子适应度大于平均适应度,则w取最大(离最优解较远,倾向于全局搜索);某粒子适应度小于平均,那么w随粒子适应度的增大而增大(离最优解越近,则越趋向于局部搜索)。求最大值情况同理。

(2)压缩因子
公式:(相当于在原有公式上乘个φ)
在这里插入图片描述
suganthan的实验表明,c1与c2为常数时可以得到较好地解,但不一定为2。cleac与kennedy引入收缩因子φ,保证其收敛性,C=c1+c2且C>4,将φ乘入整个公式,就变成了
在这里插入图片描述

示例与代码见后续