《粒子群算法学习报告.docx》由会员分享,可在线阅读,更多相关《粒子群算法学习报告.docx(2页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、粒子群算法粒子群算法是模拟鸟群的飞行觅食的行为,通过鸟之间的集体协作使群体的到达最优。经 管每个个体的行为准那么是很简单的,但总体组合起来的行为是很复杂的。这个算法基于群体 迭代,群体在解空间中追随最优粒子进行搜索,其优势在于简单容易实现,与此同时优有非 常深刻的智能背景,即符合科学研究,又特别适合工程应用。一基本粒子群算法在粒子群算法中,每一个个体都是一个“粒子”,同时每一个粒子都有可能代表着一个最 优解.。例如:在一个D维的目标搜索空间中,每个粒子就可以看成空间内的一个点。设群 体由m个粒子组成。M也被称为群体规模,m的值过大会影响算法的运行速度和收敛性。设zi=(zil, zi2,ziD
2、)为第i个粒子的空间位置,根据适应度函数计算出zi当前的适应度, 即可衡量粒子位置的优劣;vi= (vil, vi2, -viD)表示i粒子在D维空间内的K行速度;pi=(pil,pi2,piD)表示i粒子到目前为止搜索到的最优解;pg= (pgl, pg2,pgD)表示整 个群体到目前为止搜索到的最优解。每次迭代,粒子根据下面的公式更新速度:其中,i=l, 2,,m d=l, 2,D, k是迭代次数,rl和r2为01之间的随机数;w是 保持原来速度的系数,所以叫做惯性权重;cl粒子跟踪自己历史最优值的权重系数,它表 示粒子自身的认识,所以叫“认知”。通常设置为2。c2是粒子跟踪群体最优值的权
3、重系数, 它表示粒子对整个群体知识的认识,所以叫做“社会知识”,经常叫做“社会”。通常设置为 2。r是对位置更新的时候,在速度前面加的一个系数,这个系数我们叫做约束因子。通常 设置为lo粒子群算法的流程开始选择阈值和最大迭代次数:Nmax初始化粒子位置zi= (zil, zi粒,ziD) ,i=l,2,m测量每个粒子的适应度fitnesspi=fitness根据 fitness=min (fitnessl, fitness2,,fitnessm)找出最优解 pg;K=01 Kk+1根据速度更新公式更新vi根据位置更新公式更新zi测量zi的适应度,表示为fitnessi更新pi和pg如果kNma
4、x,跳到步骤1结束简化流程图为二粒子群算法的应用粒子群算法作为新型的群体智能算法,自从提出之后,由于其概念简明,实现方便。在短 期内迅速被应用到了计算研究的各个领域,同时由于其能很好的解决复杂组合优化问题,也 被广泛应用与工程设计与优化电力系统,机器人控制,交通运输,通讯,计算机,工业生产 以及生物医学和电磁学等领域。在工程设计与优化方面,粒子群算法也被应用于神经网络进化,模糊神经元网络规那么提取, 电路设计,数字滤波器设计,半导体器件,布局优化,控制器参数优化以及系统辨识与状态 评估等。电力系统领域粒子群算法被用于实现电能优化电压控制,提高电站可靠性以及电容器优化配置问题等。 计算机领域粒子
5、群算法被用于任务分配,模式识别,图像处理以及数据挖掘等方面。生物医学领域粒子群算法被用于生物医学图像配准或图像数据的集合排列,基因分类等问题。机器人控制在机器人控制中,粒子群算法被用于机器人震动抑制轨迹规划以及动态规划问题。三 粒子群算法Matlab实例此例子为计算一个40个十维的粒子在空间任意的移动,得到在每个位置里fitness的值,经 过1000次迭代得到求得到的最小值。fitness 函数function result=fitness(x,D)sum=0;for i=l:Dsum=sum+x(i)A2;endresult=sum;主函数clear all;de;format long;
6、cl=1.4962;c2=1.4962;w=0.7298;MaxDT=1000;D=10;N=40;eps=10A(-6);for i=l:Nfor j=l:Dx(i,j)=randn;v(i,j)=randn;endendfor i=l:Np(i)=fitness(x(i,:)zD);y(i,:)=x(i,:);endpg=x(l,:);for i=2:Nif fitness(x(i,:),D)fitness(pg,D)Pg=x(i,:);endendfor t=l:MaxDTfor i=l:Nv(i,:)=w*v(i,:)+cl*rand*(y(i/:)-x(i,:)+c2*rand*(pg-x(i,:);x(i,:)=x(i,:)+v(i,:);if fitness(x(i,:),D)p(i)p(i)=fitness(x(i/:),D);y(i,:)=x(i,:);endif p(i)fitness(pg,D) pg=y(i,:);endendpbest(t) =fitness(pgzD);endSolution=pg;Rwsult=fitness(pgzD);