当前位置:首页>正文

spso(一种粒子群算法),英文全名是 怎么判断粒子群优化算法有没有局部收敛

2023-07-31 06:07:02 互联网 未知

spso(一种粒子群算法),英文全名是?

Standard Particle Swarm Optimization - 标准粒子群算法

Simple Particle Swarm Optimization - 简化粒子群算法

【英语牛人团】

怎么判断粒子群优化算法有没有局部收敛?

转载请注明:来自百度知道——小七的风
首先说,标准的粒子群算法是通过控制权重系数ω的线性下降来使得种群收敛的,从收敛图上看,如果在多次迭代后(比如100次迭代后)如果最优粒子的适应度值不再变化即认为此时算法已经达到收敛。
理论上,粒子群通过自身的更新机制使得每个粒子在每次的迭代中会向该粒子的历史最优位置以及全局粒子位置的中间(或周围)位置靠近,这样虽然保证了粒子搜索的高效性(假设最优点存在于全局最优点与历史最优点的中间位置)但势必带来了粒子搜索范围的减少,所以容易出现局部收敛,并且已有相关文献证明了这不是一个全局最优的算法。
还有一种简单的做法是证伪,即不去直接证明粒子群是一个全局最优,而是试图去找到一个点,这个点的适应度值比粒子群找到的全局最优点的适应度值更好,这样就间接说明了算法没有找到全局最优点(可以采用纯随机,直到找到比粒子群提供的全局最优点好为止)

关于粒子群算法的问题

粒子群的版本甚多,常用的是加有惯性权重w的
v[] = w * v[] c1 * rand() * (pbest[] - present[]) c2 * rand() * (gbest[] - present[])
一般选择惯性权重在迭代过程中线性下降,目的是在迭代的初期,以比较大的权重分配给粒子的原速度,而防止粒子过早的倾向于其本身的局部最优与全局最优,此时的全局搜索能力是可以的。但粒子群是基于牛顿力学的,随着w的减小,速度v的作用会在更新中弱化,对应的是,pbest和gbest的作用得到了加强,这也就意味着,粒子会更加趋向于pbest和gbest的方向移动。这个时候粒子就特别容易陷入局部最优了。

其实陷入局部最优不只是粒子群的问题,进化类的算法都存在这个问题,只不过有些算法随机性强一些,收敛速度慢一些,所以更加容易跳出局部最优(但不是绝对避免)

粒子群算法是怎么用于字符识别的

字符识别可看做属于模式识别范畴,模式识别即对已有的模式进行识别,即分类。

粒子群本身是一个搜索算法或者优化算法,本质说,它不能用于分类。但是,结合其他的一些分类算法,把分类的问题看成一个问题的优化问题的时候,粒子群就可以用于分类了。

举个粒子,最近邻分类NN,指的是测试集中的样本与训练集中距离最近样本的模式(类别)相同。

现在假定给了训练集A,测试集B。假设类别已知为C类。如果训练集A特征大的时候,势必会影响分类时候的速度,那么我们就可以把训练集简化到每类一个样本(共C个样本),那样分类的时候只需要计算B中每个样本到C个中心点中哪个的距离最小就可以了。

如何利用粒子群算法得到这C个中心点呢??

一般采用聚类的思想,假设我们想找到C个中心点的每个中心点 是 到A中对应自己类别的样本的距离和最小的C个点,那么适应度函数就出来了。即训练样本到中心点样本的距离和。