粒子群算法(粒子群算法实例)
如果有更好的建议或者想看更多关于综合百科技术大全及相关资讯,可以多多关注茶馆百科网。

#本文目录一览
1、粒子群优化算法2、粒子群算法(一):粒子群算法概述3、粒子群算法4、什么是粒子群算法?粒子群算法的思想源于对鸟/鱼群捕食行为的研究,模拟鸟集群飞行觅食的行为,鸟之间通过集体的协作使群体达到更优目的,是一种基于SwarmIntelligence的优化***。它没有遗传算法的“交叉”(Crossover)和“变异”(Mutation)操作,它通过追随当前搜索到的更优值来寻找全局更优。粒子群算法与其他现代优化***相比的一个明显特色就是所需要调整的参数很少、简单易行,收敛速度快,已成为现代优化***领域研究的热点。
设想这样一个场景:一群鸟在随机搜索食物。已知在这块区域里只有一块食物;所有的鸟都不知道食物在哪里;但它们能感受到当前的位置离食物还有多远。那么找到食物的更优策略是什么呢?
1.搜寻目前离食物最近的鸟的周围区域
2.根据自己飞行的经验判断食物的所在。
PSO正是从这种模型中得到了启发,PSO的基础是信息的社会共享
每个寻优的问题解都被想像成一只鸟,称为“粒子”。所有粒子都在一个D维空间进行搜索。
所有的粒子都由一个fitnessfunction确定适应值以判断目前的位置好坏。
每一个粒子必须赋予记忆功能,能记住所搜寻到的更佳位置。
每一个粒子还有一个速度以决定飞行的距离和方向。这个速度根据它本身的飞行经验以及同伴的飞行经验进行动态调整。
粒子速度更新公式包含三部分:之一部分为“惯性部分”,即对粒子先前速度的记忆;第二部分为“自我认知”部分,可理解为粒子i当前位置与自己更好位置之间的距离;第三部分为“社会经验”部分,表示粒子间的信息共享与合作,可理解为粒子i当前位置与群体更好位置之间的距离。
第1步 在初始化范围内,对粒子群进行随机初始化,包括随机位置和速度
第2步 根据fitnessfunction,计算每个粒子的适应值
第3步 对每个粒子,将其当前适应值与其个体历史更佳位置(pbest)对应的适应值作比较,如果当前的适应值更高,则用当前位置更新粒子个体的历史更优位置pbest
第4步 对每个粒子,将其当前适应值与全局更佳位置(gbest)对应的适应值作比较,如果当前的适应值更高,则用当前位置更新粒子群体的历史更优位置gbest
第5步 更新粒子的速度和位置
第6步 若未达到终止条件,则转第2步
【通常算法达到更大迭代次数或者更佳适应度值得增量小于某个给定的阈值时算法停止】
粒子群算法流程图如下:
以Ras函数(Rastrigin'sFunction)为目标函数,求其在x1,x2∈[-5,5]上的最小值。这个函数对模拟退火、进化计算等算法具有很强的欺骗性,因为它有非常多的局部最小值点和局部更大值点,很容易使算法陷入局部更优,而不能得到全局更优解。如下图所示,该函数只在(0,0)处存在全局最小值0。
本系列文章主要针对粒子群算法进行介绍和运用,并给出粒子群算法的经典案例,从而进一步加深对粒子群算法的了解与运用(预计在一周内完成本系列文章)。主要包括四个部分:
粒子群算法也称粒子群优化算法(ParticleSwarmOptimization,PSO),属于群体智能优化算法,是近年来发展起来的一种新的进化算法(EvolutionaryAlgorithm,EA)。群体智能优化算法主要模拟了昆虫、兽群、鸟群和鱼群的群集行为,这些群体按照一种合作的方式寻找食物,群体中的每个成员通过学习它自身的经验和其他成员的经验来不断地改变搜索的方向。群体智能优化算法的突出特点就是利用了种群的群体智慧进行协同搜索,从而在解空间内找到更优解。
PSO算法和模拟退火算法相比,也是从随机解出发,通过迭代寻找更优解。它是通过适应度来评价解的品质,但比遗传算法规则更为简单,没有遗传算法的“交叉”和“变异”,它通过追随当前搜索到的更大适应度来寻找全局更优。这种算法以其容易实现、精度高、收敛快等优点引起了学术界的重视,并在解决实际问题中展示了其优越性。
在粒子群算法中,每个优化问题的解被看作搜索空间的一只鸟,即“粒子”。算法开始时首先生成初始解,即在可行解空间中随机初始化粒子组成的种群,其中每个粒子所处的位置,都表示问题的一个解,并依据目标函数计算搜索新解。在每次迭代时,粒子将跟踪两个“极值”来更新自己,一个是粒子本身搜索到的更好解,另一个是整个种群目前搜索到的更优解。此外每个粒子都有一个速度,当两个更优解都找到后,每个粒子根据如下迭代式更新:
其中参数称为是PSO的惯性权重(inertiaweight),它的取值介于[0,1]区间;参数和称为是学习因子(learnfactor);而和为介于[0,1]之间的随机概率值。
实践证明没有绝对更优的参数,针对不同的问题选取合适的参数才能获得更好的收敛速度和鲁棒性,一般情况下,取1.4961,而采用自适应的取值***,即一开始令,使得PSO全局优化能力较强;随着迭代的深入,递减至,从而使得PSO具有较强的局部优化能力。
参数之所以被称之为惯性权重,是因为实际反映了粒子过去的运动状态对当前行为的影响,就像是我们物理中提到的惯性。如果,从前的运动状态很少能影响当前的行为,粒子的速度会很快的改变;相反,较大,虽然会有很大的搜索空间,但是粒子很难改变其运动方向,很难向较优位置收敛,由于算法速度的因素,在实际运用中很少这样设置。也就是说,较高的设置促进全局搜索,较低的设置促进快速的局部搜索。
粒子群算法(particleswarmoptimization,PSO)是计算智能领域中的一种生物启发式***,属于群体智能优化算法的一种,常见的群体智能优化算法主要有如下几类:
除了上述几种常见的群体智能算法以外,还有一些并不是广泛应用的群体智能算法,比如萤火虫算法、布谷鸟算法、蝙蝠算法以及磷虾群算法等等。
而其中的粒子群优化算法(PSO)源于对鸟类捕食行为的研究,鸟类捕食时,找到食物最简单有限的策略就是搜寻当前距离食物最近的鸟的周围。
设想这样一个场景:一群鸟在随机的搜索食物。在这个区域里只有一块食物,所有的鸟都不知道食物在哪。但是它们知道自己当前的位置距离食物还有多远。那么找到食物的更优策略是什么?最简单有效的就是搜寻目前离食物最近的鸟的周围区域。
Step1:确定一个粒子的运动状态是利用位置和速度两个参数描述的,因此初始化的也是这两个参数;
Step2:每次搜寻的结果(函数值)即为粒子适应度,然后记录每个粒子的个体历史更优位置和群体的历史更优位置;
Step3:个体历史更优位置和群体的历史更优位置相当于产生了两个力,结合粒子本身的惯性共同影响粒子的运动状态,由此来更新粒子的位置和速度。
位置和速度的初始化即在位置和速度限制内随机生成一个Nxd的矩阵,而对于速度则不用考虑约束,一般直接在0~1内随机生成一个50x1的数据矩阵。
此处的位置约束也可以理解为位置限制,而速度限制是保证粒子步长不超限制的,一般设置速度限制为[-1,1]。
粒子群的另一个特点就是记录每个个体的历史更优和种群的历史更优,因此而二者对应的更优位置和更优值也需要初始化。其中每个个体的历史更优位置可以先初始化为当前位置,而种群的历史更优位置则可初始化为原点。对于更优值,如果求更大值则初始化为负无穷,相反地初始化为正无穷。
每次搜寻都需要将当前的适应度和更优解同历史的记录值进行对比,如果超过历史更优值,则更新个体和种群的历史更优位置和更优解。
速度和位置更新是粒子群算法的核心,其原理表达式和更新方式:
每次更新完速度和位置都需要考虑速度和位置的限制,需要将其限制在规定范围内,此处仅举出一个常规***,即将超约束的数据约束到边界(当位置或者速度超出初始化限制时,将其拉回靠近的边界处)。当然,你不用担心他会停住不动,因为每个粒子还有惯性和其他两个参数的影响。
粒子群算法求平方和函数最小值,由于没有特意指定函数自变量量纲,不进行数据归一化。
粒子群算法,也称粒子群优化算法(ParticalSwarmOptimization),缩写为PSO,是近年来发展起来的一种新的进化算法((Evolu2tionaryAlgorithm-EA)。PSO算法属于进化算法的一种,和遗传算法相似,它也是从随机解出发,通过迭代寻找更优解,它也是通过适应度来评价解的品质,但它比遗传算法规则更为简单,它没有遗传算法的“交叉”(Crossover)和“变异”(Mutation)操作,它通过追随当前搜索到的更优值来寻找全局更优。这种算法以其实现容易、精度高、收敛快等优点引起了学术界的重视,并且在解决实际问题中展示了其优越性。设想这样一个场景:一群鸟在随机搜索食物。在这个区域里只有一块食物。所有的鸟都不知道食物在那里。但是他们知道当前的位置离食物还有多远。那么找到食物的更优策略是什么呢。最简单有效的就是搜寻目前离食物最近的鸟的周围区域。PSO从这种模型中得到启示并用于解决优化问题。PSO中,每个优化问题的解都是搜索空间中的一只鸟。我们称之为“粒子”。所有的粒子都有一个由被优化的函数决定的适应值(fitnessvalue),每个粒子还有一个速度决定他们飞翔的方向和距离。然后粒子们就追随当前的更优粒子在解空间中搜索。PSO初始化为一群随机粒子(随机解)。然后通过迭代找到更优解。在每一次迭代中,粒子通过跟踪两个"极值"来更新自己。之一个就是粒子本身所找到的更优解,这个解叫做个体极值pBest。另一个极值是整个种群目前找到的更优解,这个极值是全局极值gBest。另外也可以不用整个种群而只是用其中一部分作为粒子的邻居,那么在所有邻居中的极值就是局部极值。粒子公式在找到这两个更优值时,粒子根据如下的公式来更新自己的速度和新的位置:v[]=w*v[]+c1*rand()*(pbest[]-present[])+c2*rand()*(gbest[]-present[])(a)present[]=persent[]+v[](b)v[]是粒子的速度,w是惯性权重,persent[]是当前粒子的位置.pbest[]andgbest[]如前定义rand()是介于(0,1)之间的随机数.c1,c2是学习因子.通常c1=c2=2.程序的伪代码如下Foreachparticle____InitializeparticleENDDo____Foreachparticle________Calculatefitnessvalue________Ifthefitnessvalueisbetterthanthebestfitnessvalue(pBest)inhistory____________setcurrentvalueasthenewpBest____End____ChoosetheparticlewiththebestfitnessvalueofalltheparticlesasthegBest____Foreachparticle________Calculateparticlevelocityaccordingequation(a)________Updateparticlepositionaccordingequation(b)____EndWhilemaximumiterationsorminimumerrorcriteriaisnotattained在每一维粒子的速度都会被限制在一个更大速度Vmax,如果某一维更新后的速度超过用户设定的Vmax,那么这一维的速度就被限定为Vmax
文章到此结束,如果本次分享的粒子群算法和粒子群算法实例的问题解决了您的问题,那么我们由衷的感到高兴!
本文主要介绍了关于粒子群算法(粒子群算法实例)的相关养殖或种植技术,综合百科栏目还介绍了该行业生产经营方式及经营管理,关注综合百科发展动向,注重系统性、科学性、实用性和先进性,内容全面新颖、重点突出、通俗易懂,全面给您讲解综合百科技术怎么管理的要点,是您综合百科致富的点金石。
以上文章来自互联网,不代表本人立场,如需删除,请注明该网址:http://23.234.50.4:8411/article/235566.html