您好,欢迎访问三七文档
粒子群算法粒子群算法是模拟鸟群的飞行觅食的行为,通过鸟之间的集体协作使群体的达到最优。经管每个个体的行为准则是很简单的,但总体组合起来的行为是很复杂的。这个算法基于群体迭代,群体在解空间中追随最优粒子进行搜索。其优势在于简单容易实现,与此同时优有非常深刻的智能背景,即符合科学研究,又特别适合工程应用。一基本粒子群算法在粒子群算法中,每一个个体都是一个“粒子”,同时每一个粒子都有可能代表着一个最优解。例如:在一个D维的目标搜索空间中,每个粒子就可以看成空间内的一个点。设群体由m个粒子组成。M也被称为群体规模,m的值过大会影响算法的运行速度和收敛性。设zi=(zi1,zi2,…ziD)为第i个粒子的空间位置,根据适应度函数计算出zi当前的适应度,即可衡量粒子位置的优劣;vi=(vi1,vi2,…viD)表示i粒子在D维空间内的飞行速度;pi=(pi1,pi2,…piD)表示i粒子到目前为止搜索到的最优解;pg=(pg1,pg2,…pgD)表示整个群体到目前为止搜索到的最优解。每次迭代,粒子根据下面的公式更新速度:112211kkkididididgdidkkkidididvvcrpzcrpzzzrv其中,i=1,2,…,m,d=1,2,…D,k是迭代次数,r1和r2为[0,1]之间的随机数;w是保持原来速度的系数,所以叫做惯性权重;c1粒子跟踪自己历史最优值的权重系数,它表示粒子自身的认识,所以叫“认知”。通常设置为2。c2是粒子跟踪群体最优值的权重系数,它表示粒子对整个群体知识的认识,所以叫做“社会知识”,经常叫做“社会”。通常设置为2。r是对位置更新的时候,在速度前面加的一个系数,这个系数我们叫做约束因子。通常设置为1。粒子群算法的流程开始选择阈值ε和最大迭代次数:Nmax初始化粒子位置zi=(zi1,zi2,…,ziD),i=1,2,…,m测量每个粒子的适应度fitnesspi=fitness根据fitness=min(fitness1,fitness2,…,fitnessm)找出最优解pg;K=01K→k+1根据速度更新公式更新vi根据位置更新公式更新zi测量zi的适应度,表示为fitnessi更新pi和pg如果kNmax,跳到步骤1结束简化流程图为二粒子群算法的应用粒子群算法作为新型的群体智能算法,自从提出之后,由于其概念简明,实现方便。在短期内迅速被应用到了计算研究的各个领域,同时由于其能很好的解决复杂组合优化问题,也被广泛应用与工程设计与优化电力系统,机器人控制,交通运输,通讯,计算机,工业生产以及生物医学和电磁学等领域。在工程设计与优化方面,粒子群算法也被应用于神经网络进化,模糊神经元网络规则提取,电路设计,数字滤波器设计,半导体器件,布局优化,控制器参数优化以及系统辨识与状态评估等。(1)电力系统领域粒子群算法被用于实现电能优化电压控制,提高电站可靠性以及电容器优化配置问题等。(2)计算机领域粒子群算法被用于任务分配,模式识别,图像处理以及数据挖掘等方面。(3)生物医学领域粒子群算法被用于生物医学图像配准或图像数据的集合排列,基因分类等问题。(4)机器人控制在机器人控制中,粒子群算法被用于机器人震动抑制轨迹规划以及动态规划问题。三粒子群算法Matlab实例此例子为计算一个40个十维的粒子在空间任意的移动,得到在每个位置里fitness的值,经过1000次迭代得到求得到的最小值。fitness函数初始化开始结束计算每个个体的适应度调整每个个体的速度位置最大迭代次数functionresult=fitness(x,D)sum=0;fori=1:Dsum=sum+x(i)^2;endresult=sum;主函数clearall;clc;formatlong;c1=1.4962;c2=1.4962;w=0.7298;MaxDT=1000;D=10;N=40;eps=10^(-6);fori=1:Nforj=1:Dx(i,j)=randn;v(i,j)=randn;endendfori=1:Np(i)=fitness(x(i,:),D);y(i,:)=x(i,:);endpg=x(1,:);fori=2:Niffitness(x(i,:),D)fitness(pg,D)pg=x(i,:);endendfort=1:MaxDTfori=1:Nv(i,:)=w*v(i,:)+c1*rand*(y(i,:)-x(i,:))+c2*rand*(pg-x(i,:));x(i,:)=x(i,:)+v(i,:);iffitness(x(i,:),D)p(i)p(i)=fitness(x(i,:),D);y(i,:)=x(i,:);endifp(i)fitness(pg,D)pg=y(i,:);endendpbest(t)=fitness(pg,D);endSolution=pg';Rwsult=fitness(pg,D);
本文标题:粒子群算法学习报告
链接地址:https://www.777doc.com/doc-2099626 .html