- 什么是粒子群优化算法
粒子群优化算法(Particle Swarm optimization,PSO)是一种通过模拟鸟群觅食行为而发展起来的一种基于群体协作的随机搜索算法,其基本思想在于通过群体中个体之间的协作和信息共享来寻找最优解。
设想这样一个场景:一群鸟在随机搜索虫子。在这个区域处处分散着虫子。所有的鸟都不知道虫子最集中的地方在哪里。但是它们知道各自目前位置的虫子密度和其他鸟周围的虫子密度。那么找到目标地点的最优策略是什么呢?
最简单有效的策略就是:
1.众鸟一起去搜寻 目前在虫子密度区域最大的鸟 的周围区域。
2.根据自己飞行的经验,来判断虫子密度最大的区域的所在。
- 粒子群算法中的基本概念
粒子:优化问题的候选解
位置:候选解所在的位置
速度:候选解移动的速度(候选解就是在这些粒子中的某个粒子会产生近似解)
适应度:评价粒子优劣的值,一般设置为目标函数值
个体最佳位置:单个粒子迄今为止找到的最佳位置
群体最佳位置:所有粒子迄今为止找到的最佳位置
- 算法简介:在粒子群优化算法中每个粒子就是一只鸟,每个粒子都拥有两个属性,一个是飞翔的速度,一个是当前的位置;在每次迭代中,粒子们会追随当前最优粒子的位置,动态地在解空间中搜索全局最优解。
- 算法流程:先以1维空间的问题为例。
设适应度函数为
其中
适应度函数画图为
第一步初始化:在D维的空间里有共N个粒子,分别对其进行初始化,初始化后的粒子群有以下属性。
在设置迭代的过程中,需要设置
- 迭代次数iter=50。
- 设置在每次迭代过程中粒子的自我学习因子c1,用来调节粒子每次移动的步长受自我位置的影响大小。
- 设置在每次迭代过程中粒子的群体学习因子c2,用来调节粒子每次移动的步长受群体位置的影响大小。
学习因子分别代表每个粒子朝个体极值和全局极值飞行的加速权值,比方说当c1=0时,粒子只朝着全局最优的方向飞行,具有较快的收敛速度,但由于不会总结自身的经验,缺少局部搜索,遇到复杂问题时易陷入局部最优。
- 设在每次迭代过程中,粒子们的惯性因子为w,w是一个非负数,用来体现粒子继承上一刻自己速度的能力。(w值大,全局寻优能力强,局部寻优能力弱;w值小,局部寻优能力强,全局寻优能力弱)
为了克服收敛到局部最优解,并且加快粒子的收敛速度可以考虑采用自适应惯性权重,
dist为各粒子当前位置到全局最佳位置之间的欧几里得距离。欧几里得距也称欧式距离,它是一个通常采用的距离定义,它是在m维空间中两个点之间的真实距离。 在二维和三维空间中的欧式距离的就是两点之间的距离
1,当该粒子所处位置为全局最优位置时,w即取到最大值,可以理解为该粒子应该更偏向于往外跑,而不是局限于当前的最优位置
2,当该粒子处于离全局最优解最远时,w为0,可以理解为此时粒子的位置太差,不应该再根据速度乱跑,而应该尽快向最优位置靠拢
自适应权重在每轮更新粒子速度前,先对自适应权重进行更新,在初始时刻可以把权重设置为0.5。
第二步,计算粒子的适应度函数值,对这里的适应度函数:
,
将第i个粒子当前的位置代入适应度函数可以得到该粒子当前的适应度。
第三步, 在单次迭代中更新每个粒子的个体最佳适应度和粒子群最佳适应度,找出本次迭代的全局最佳位置。
第四步,更新个体的速度和位置
更新公式为
,
在更新个体的速度和位置的过程中,需要限制个体的速度和位置。速度限制:避免掉入局部最优解。位置限制:防止粒子更新到寻优空间外。
第五步:判断是否满足终止条件
终止条件的设置可以有两种方案,1是达到设定的迭代次数
2是与理想寻优结果的差值小于某一界限
在这里要寻找最优值,并且并无理想寻优结果,因此选取第一种终止条件的设定方法,达到设定的迭代次数则终止迭代。
粒子群优化算法流程图: