欢迎来到天天文库
浏览记录
ID:40202591
大小:868.00 KB
页数:33页
时间:2019-07-25
《张晓寒杨凌霄唐鹏程-粒子群算法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、粒子群算法及其MATLAB实现60组张晓寒杨凌霄唐鹏程PSO算法的基本理论PSO算法概述PSO算法源程序案例PSO算法应用案例粒子群算法粒子群算法(particleswarmoptimization,简称PSO)是依托群鸟觅食模型(Boid)寻找最优值。鸟觅食模型需要对鸟的位置和飞翔速度赋予初值,采用对称随机初始化策略,使其在寻优空间范围内随机初始化分布,然后鸟根据自己寻找食物的经验以及鸟群信息共享,不断向目标靠近,经过有限次位移,绝大部分鸟聚集在一起并且找到了食物或离食物非常近。PSO算法的基本理论PSO算法最早是由美国电气工程师E
2、berhart和社会心理学家Kennedy在1995年基于群鸟觅食提出来的。群鸟觅食过程中,每只鸟的初始状态和飞行方向是随机的,每只鸟都不知道食物在哪里,随着时间推移,处于随机状态的鸟会通过相互学习和自身经验,自行组织成一个群落,向着食物目标前进。每只鸟能够通过自身经验和外界信息估计当前所处位置对于能找到食物有多大价值,即适应值。适应值函数:基于某种标准对个体进行评价的函数每只鸟能够记住自己所找到的最好位置,即局部最优(pbest);每只鸟还能够记住所有个体能找到的所有最好位置,即全局最优(gbest)。整个鸟群的觅食中心将向全局最优
3、移动,通过鸟群位置的移动,即迭代过程,可以使鸟群向目标食物逼近。第i个粒子在D维搜索空间的位置为粒子的位置可以作为潜在解,将带入目标函数可以计算出其适应值,根据适应值的大小衡量优劣。粒子个体经过的最好位置记为=(,)整个群体的所有粒子经过的最好位置记为()粒子i的速度记为();为【0,1】之间的随机数,这两个参数是用来保持群体的多样性。在每次迭代中,粒子根据以下公式更新速度和位置:+(;约束因子:控制速度的权重PSO算法的参数选取1.粒子数粒子数一般取值为20~40,特殊的难题需要100~200个粒子。粒子数越多,搜索范围越大,越容易
4、找到全局最优解,算法运行时间也越长。2.惯性因子惯性因子w对于粒子群算法的收敛性起到很大作用。w值越大,粒子飞翔幅度越大,容易错失局部寻优能力,而全局搜索能力较强;w值越小,则局部寻优能力增强,全局寻优能力减弱。通过调整w的大小来控制历史的速度对当前速度的影响程度,使其成为兼顾全局搜索和局部搜索的一个折中。惯性因子w的大小决定了对粒子当前速度继承的多少。如果惯性因子w是变量,通常在迭代开始时将惯性因子w设置的较大,然后在迭代过程中逐步减小。这样可以使粒子群在开始优化时搜索到较大的解空间,得到合适的粒子,然后在后期逐渐收缩到较好的区域进
5、行更精细的搜索,以加快收敛速度和目标精度。3.加速常数对于简单的常规问题,一般情况下去2.0。加速常数调整自身经验和社会经验在其运动中所起作用的权重。若则粒子没有自身经验,只有社会经验,它的收敛速度可能较快,容易陷入局部最优点;若,则粒子群没有共享信息,只有自身经验,得到最优解的几率非常小。若粒子将在没有任何经验和信息的情况下盲目地搜索到有限区域,很难找到最优解。4.最大飞翔速度为使粒子有效地进行搜索,需要使用参数对粒子运动速度进行限制。参数有利于防止搜索范围毫无意义的发散,防止粒子群由于飞翔速度过大错过最优目标值。为了跳出局部最优,
6、需要较大的寻优步长,而在接近最优值时,采用更小的步长会更好。如果的选择是固定不变的,通常设定为每维变化范围的10%~20%。PSO算法程序设计PSO算法实现的步骤:1.初始化粒子群(速度和位置)、惯性因子、加速常数、最大迭代次数和算法终止的最小允许误差。2.评价每个粒子的初始适应值。3.将初始适应值作为当前全局最优值,将最佳适应值对应的位置作为全局最优值的位置。4.将最佳初始适应值作为当前全局最优值,将最佳适应值的位置作为全局最优值的位置。5.根据更新公式更新每个粒子当前的飞行速度。6.对每个粒子的飞翔速度进行限幅处理,使其不超过设定
7、的最大飞翔速度。7.根据更新公式更新每个粒子当前所在位置。8.比较当前粒子的适应值是否比历史局部最优好,如果好,则当前粒子适应值作为粒子局部最优值,其对应的位置作为局部最优值的位置。9.找出全局最优值,将当前全局最优值的位置作为粒子群的全局最优值所在位置。10.重复步骤5~9,直到满足设定的最小误差或达到最大迭代次数。11.输出粒子群全局最优值和其对应的位置以及每个粒子的局部最优值和其对应的位置。程序设计流程图否是开始初始化各参数计算各粒子适应值找出个体和群体最优值更新各个粒子的速度和位置终止条件?结束PSO算法源程序范例functi
8、onmain()clc;clearall;closeall;tic;%程序运行计时E0=0.001;%允许误差MaxNum=100;%粒子最大迭代次数narvs=1;%目标函数的自变量个数particlesize=30;
此文档下载收益归作者所有