1.介绍
我这里就不去生动形象的举什么鸟类捕食的例子了,直接给出流程,基本的粒子群算法很简单,只用明确它每次迭代优化的方法就好了。同样PSO也是一个无约束的迭代求解的最优化算法,我们的目标是(这里的min只是举例子,真实情况不一定是求最小值,可能是求一个特定的f(x)):
N就是x所在的搜索空间的维度,我们的目标是要找到一个使得我们能达到目标,一般f(x)被称为适应函数,初始化的时候我们是要随机生成M(自己定)个x值(即种群),每个x值会初始化一个变化速度v,这个变化速度是一个向量,它的维度和x是一样的,因为你肯定在不同的维度有不同的变化,之后就是随机初始化全局最优(什么叫全局最优?就是这M个x中令适应函数更接近目标的x就是全局最优值)和个体最优(什么叫个体最优?我么的算法在不断的迭代的,对于种群中的每个x我们都会记录他的适应函数值,最好的那个值对应的x就是个体最优),然后我们在每一次迭代中都会向全局最优值和个体最优值学习,这里的学习会有一个学习权重,代表着它们是更相信种群还是更愿意保持自己的优势,那学习它们的什么呢?当然是学习它们的位置和变化速度了,这就是我最开始说的你需要明白的每次迭代优化的方法,下面详细介绍流程和更新公式。
2.流程
输入:目标求解函数f(x),以及种群大小M,目标求解值K,c1,c2,w
输出:当f(x)=K时x的取值
step1:初始化M个x(种群)的x值(N维)和速度v(N维)
step2:对于每个x计算适应度值f(x),并得到每个粒子的个体最优pbest和种群当代的最强粒子gbest
step3:对于每个粒子,将本次迭代的适应度值和pbest比较,如果比它大就更新pbest,同理更新gbest
step4:按下列公式更新每个x的值和它的变化速度(w是惯性指数,即粒子保持自身的系数):