PSO粒子群算法

它是通过一个适应度函数来选取一个目标函数的最优参数组合

用什么适应度函数就得具体问题具体分析了

下面来讲解下他的过程

 鸟被抽象为没有质量和体积的微粒(点),并延伸到N维空间,粒子i在N维空间的位置表示为矢量Xi=(x1,x2,…,xN),飞行速度表示为矢量Vi=(v1,v2,…,vN)。每个粒子都有一个由目标函数决定的适应值(fitness value),并且知道自己到目前为止发现的最好位置(pbest)和现在的位置Xi。这个可以看作是粒子自己的飞行经验。除此之外,每个粒子还知道到目前为止整个群体中所有粒子发现的最好位置(gbest)(gbest是pbest中的最好值),这个可以看作是粒子同伴的经验。粒子就是通过自己的经验和同伴中最好的经验来决定下一步的运动


详细过程:https://blog.csdn.net/myarrow/article/details/51507671

————————————————

首先以一个求两个参数的函数最小值举例,他的目标函数就是这个函数了,他的适应度函数就是最小值;

算法流程:

1.初始化

设置最大迭代次数(迭代次数过小则结果不收敛,迭代次数过大则浪费时间);粒子群规模,即初始化多少个微粒;个体学习因子c1,群体学习因子c2(基本都设为2);惯性因子w(基本上设定0.4-0.9);

初始化N个微粒的速度、位置,随机生成的,两个数组都是N*2的。

PSO粒子群算法_第1张图片

2.设定适应度函数

3.更新粒子速度、位置

PSO粒子群算法_第2张图片

 就像下图所示,微粒1知道目前的最好位置是绿色圈位置,但是它自己也有自己的想法,想着:我往他那个方向移动,但是同时我又在我自己周围寻找更优的位置,(这个优就是以适应度函数来评判),不管更新自己的局部最优位置,如果更优,则同时更新全局最优位置。到达迭代次数后,那个全局最优位置即为所求参数组合。

 PSO粒子群算法_第3张图片

 

 

你可能感兴趣的:(算法,算法)