粒子群优化算法又翻译为粒子群算法、微粒群算法、或微粒孙织杀极曾创务重群优化算法。
粒子群优化算法(Particle Swarm optimization,PSO)又翻译为粒子群算法、微粒群算法龙、或微粒群优化算法。是通过模拟鸟群觅食行为而发展起来的一种基于群体协作的随机搜索算法。通来自常认为它是群集智能 (Swa握领安工府轮rm intelligence, SI) 的一种。它可以被纳入多主体优化系统(Multiagent Optimizat360百科ion System, MAOS)。粒子群优化算法是由Eberhart博士和kennedy博士发明。
能振北北娘 PSO模拟鸟群的捕食行为。一群鸟在随机搜索食物,在这个区域里只有一块食物。所有的鸟都不知道食物在那里。但是他们知道当前的位置离食物还有多远。那么找到食物的最优策略是什么呢。最简单有效的就是搜寻离食物最近的鸟的周围区域。
PSO从这种模型中得到启示并用于解决优化问题。PSO中,每个优化问题的解都是搜索空间中的一只鸟。我们称之为"粒子"。所有的粒子都有一迅复个由被优化的函数决定的适应值(卷反五土伟降fitnessvalue),每个粒子还有一个速度状往斤皮稳决定他们飞翔的方向和距离。然后粒子们就追随当前的最优粒子在解空间中搜索。
PSO晶家反婷厂初始化为一群随机队留号粒子(随机解),然后通过迭代找到最优解,在每一次迭代中,粒子通过跟踪两个"极值"来更新自己。第一个就是粒子本身所找到的最优解,这个解叫做个体极值pBest,另一个极值是整个种群找到的最优解,这个极值是全局极值gBest。另外也可以不用整个种群而数鸡只是用其中一部分最优然议毛念与必术粒子的邻居,那么在所有邻居中的极值就是局部极值。
在找速到这两个最优值时,粒子根据如下的公式来更新自己秋香的速度和新的位置
(a找食)
(b)
v[] 是粒子的初社速度,present[] 是当前粒子的位置。p超基曲应best[] 和 gbest[] 如前定义。rand() 是介于(0,1)之间的随机数。c1,c2是学习因子。通常c1=c2=2。
For each particle
____Initialize pa氧简极含门克rticle
END
Do
____For each particle
________Calculate fitness value
________If the fitness value is 强菜带better than the best fitnes洋弦比里周油吧去s value (pBest) in history
____________set current value as the new pBest
____End
____Choose the particle with the best fitness value of all the particles as the gBest
____For each particle
________Calculate particle velocity according equation (a)
________Update particle position according equation (b)
____End
While maximum iterations or minimum error criteria is not attained
在每一维粒子的速度都会被限制在一个最大速度Vmax,如果某一维更新后的速度超过用户设定的Vmax,那么这一维的速度就被限定为Vmax。
①种群随机初始进满带脸低计兰化。
②对种群内的每一个个体计算适应值(fitness value)。适应值与最优解的距离直接有关。
③种群根据适应值进行来自复制。
④如果终止条件满足的话,就停止,否则转步骤② 。
从以上步骤,我们可以看到PSO和遗传算法有很多共话同之处。两者都随机初始化种群,而且都使用适应值来评价系统,而且都根据适应值来进行一定的随机搜索。两个系统都不是保证绍干责一定找到最优解。但是,PSO没有遗传操作如交360百科叉(crossover)和变异(mutation),而是根据自色永认急己的速度来决定搜索。粒子还有一个重要的特点,就是有记忆。
与遗传算法比较,PSO的信息共享机制是很不同的。在遗传算法中,染色体(chromosomes)互相共享信息,所以整个种群的移动是比较均匀的向最优区域移动。在PSO中, 只有gBest (or政哥负矛紧沉什目养lBest) 给出信息给其他的粒子, 这是单向的信息流动。整零眼个搜索更新过程是跟随当前最优解的过程。与遗传算法比较, 在大多数的情况下,所有的粒子可能更快的收敛于最优解。
演化计算的优势,在于可以处理一些传统方法不能处理的。例子例如不可导的节点传递函数或者没有梯度信排息存在。
但是缺点在于:
1.在某些问题上性能并不是特别好。
2.网络权重的编码而且遗传算子的选择有时比较麻烦。
最近已经有一些站念列利用PSO来代替反向传播算法来训练神经网县权斗速短林乱络的论文。研究表明PSO 是一种很有潜力的神经网络算法。PSO速度比较快而且可以得到比较好的结气待轮果。而且还没有遗议觉序陈却传算法碰到的问题。
人工神经温呀网络(ANN)是模拟大脑分析过程的简单数学模型,林采此身反向传播算法是最流行的神经网络训练算法。近来也有很多研究开始利用演化计算(e盐volutionary computation历念)技术来研究人工神经网络的各个方面。
演化计算可以用来研究神经网络的三个方面:网络连接权重,网络结构(网络拓扑结八著极依右投纪十凯构,传递函数),网络学习算法。
不过大多件数这方面的工作都集中在网络连卷黑单期防穿接权重,和网络拓扑结构上。在GA中,网络权重和/或拓扑结构一般编码为染色体(Chromosome),适应函数(fitness function)的选择一般根据研究目的确定。例如在分类问题中,错误分类的比率可以用来作为适应值。
这里用一个简单的例子说明PSO训练神经网络的过程。这个例子使用分类问题的基准函数 (Benchmark function)IRIS数据集。(Iris 是一种鸢尾属植物) 在数据记录中,每组数据包含Iris花的四种属性:萼片长度,萼片宽度,花瓣长度,和花瓣宽度,三种不同的花各有50组数据. 这样总共有150组数据或模式。
我们用3层的神经网络来做分类。有四个输入和三个输出。所以神经网络的输入层有4个节点,输出层有3个节点我们也可以动态调节隐含层节点的数目,不过这里我们假定隐含层有6个节点。我们也可以训练神经网络中其他的参数。不过这里我们只是来确定网络权重。粒子就表示神经网络的一组权重,应该是4*6+6*3=42个参数。权重的范围设定为[-100,100] (这只是一个例子,在实际情况中可能需要试验调整).在完成编码以后,我们需要确定适应函数。对于分类问题,我们把所有的数据送入神经网络,网络的权重有粒子的参数决定。然后记录所有的错误分类的数目作为那个粒子的适应值。我们就利用PSO来训练神经网络来获得尽可能低的错误分类数目。PSO本身并没有很多的参数需要调整。所以在实验中只需要调整隐含层的节点数目和权重的范围以取得较好的分类效果。
从上面的例子我们可以看到应用PSO解决优化问题的过程中有两个重要的步骤: 问题解的编码和适应度函数PSO的一个优势就是采用实数编码, 不需要像遗传算法一样是二进制编码(或者采用针对实数的遗传操作.例如对于问题 f(x) = x1^2 + x2^2+x3^2 求解,粒子可以直接编码为 (x1, x2, x3), 而适应度函数就是f(x). 接着我们就可以利用前面的过程去寻优.这个寻优过程是一个迭代过程, 中止条件一般为设置为达到最大循环数或者最小错误
PSO中并没有许多需要调节的参数,下面列出了这些参数以及经验设置
粒子数: 一般取 20–40. 其实对于大部分的问题10个粒子已经足够可以取得好的结果, 不过对于比较难的问题或者特定类别的问题, 粒子数可以取到100 或 200
粒子的长度: 这是由优化问题决定, 就是问题解的长度
粒子的范围: 由优化问题决定,每一维可是设定不同的范围
Vmax: 最大速度,决定粒子在一个循环中最大的移动距离,通常设定为粒子的范围宽度,例如上面的例子里,粒子 (x1, x2, x3) x1 属于 [-10, 10], 那么 Vmax 的大小就是 20
学习因子: c1 和 c2 通常等于 2. 不过在文献中也有其他的取值. 但是一般 c1 等于 c2 并且范围在0和4之间
中止条件: 最大循环数以及最小错误要求. 例如, 在上面的神经网络训练例子中, 最小错误可以设定为1个错误分类, 最大循环设定为2000, 这个中止条件由具体的问题确定.
全局PSO和局部PSO: 我们介绍了两种版本的粒子群优化算法: 全局版和局部版. 前者速度快不过有时会陷入局部最优. 后者收敛速度慢一点不过很难陷入局部最优. 在实际应用中, 可以先用全局PSO找到大致的结果,再用局部PSO进行搜索.
另外的一个参数是惯性权重, 由Shi 和Eberhart提出, 有兴趣的可以参考他们1998年的论文(题目: A modified particle swarm optimizer)。