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