粒子群算法实验报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

算法分析与设计实验报告专业班号组别指导老师姓名同组者实验日期第十四周第3次实验实验名称基于粒子群算法的函数优化问题一、实验项目基于粒子群算法的函数优化问题实验,在Windows下基于Matlab完成编程。二、实验目的粒子群算法,也称粒子群优化算法(ParticleSwarmOptimization),缩写为PSO,是近年来发展起来的一种新的进化算法((Evolu2tionaryAlgorithm-EA)。这种算法以其实现容易、精度高、收敛快等优点引起了学术界的重视,并且在解决实际问题中展示了其优越性。为学习其算法思想,有必要掌握并实现基于粒子群算法的函数优化问题实验。三、实验原理粒子群优化算法(PSO)是一种进化计算技术(evolutionarycomputation),1995年由Eberhart博士和kennedy博士提出,源于对鸟群捕食的行为研究。PSO同遗传算法类似,是一种基于迭代的优化算法。系统初始化为一组随机解,通过迭代搜寻最优值。但是它没有遗传算法用的交叉(crossover)以及变异(mutation),而是粒子在解空间追随最优的粒子进行搜索。同遗传算法比较,PSO的优势在于简单容易实现并且没有许多参数需要调整。目前已广泛应用于函数优化,神经网络训练,模糊系统控制以及其他遗传算法的应用领域。四、实验内容1、首先编写通用代码粒子群测试各个函数的主代码写出来,对于不同的测试函数,只需要调用相应的测试函数即可,将各个函数做成.m的文件。matlab源代码程序如下:clearall;clc;formatlong;%------给定初始化条件----------------------------------------------c1=1.4902;%学习因子1c2=1.4901;%学习因子2w=0.7281;%惯性权重MaxDT=1000;%最大迭代次数D=5;%搜索空间维数(未知数个数)N=40;eps=10^(-6);%设置精度(在已知最小值时候用)%------初始化种群的个体(可以在这里限定位置和速度的范围)------------fori=1:Nforj=1:Dx(i,j)=randn;%随机初始化位置v(i,j)=randn;%随机初始化速度endend%------先计算各个粒子的适应度,并初始化Pi和Pg----------------------fori=1:Np(i)=function(x(i,:));y(i,:)=x(i,:);end教师评阅意见签名:年月日pg=x(1,:);%Pg为全局最优fori=2:Niffunction(x(i,:))function(pg)pg=x(i,:);end%------进入主要循环,按照公式依次迭代,直到满足精度要求------------fort=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,:);iffunction(x(i,:))p(i)p(i)=function(x(i,:));y(i,:)=x(i,:);endifp(i)function(pg)pg=y(i,:);endendPbest(t)=function(pg);end%------最后给出计算结果disp('*************************************************************')disp('函数的全局最优位置为:')Solution=pg'plot(Solution)disp('最后得到的优化极值为:')Result=function(pg)disp('*************************************************************')2、对指定函数的优化(1)Rastrigins.m文件代码如下,即Rastrigins测试函数;function[out]=Rastrigin(x)x=-5.12:0.01:5.12;cos_in=cos(2*pi*x);out=sum((x.^2-10*cos_in+10),2);在matlab中运行结果如下:函数的全局最优位置为:Solution=0.576475699699576-0.8607542255463701.2205658276826261.4207354825753010.552791439208896最后得到的优化极值为:Result=1.899896389267265e+004(2)函数2:使用粒子群算法对Griewank函数进行优化:将下面代码保存成Griewank.m文件,代码如下:Dx=length(in(1,:));tlenx=length(in(:,1));ifisempty(D)|D~=Dx|tlen~=tlenxD=Dx;%dimensionofprobtlen=tlenx;%howmanyseparatestatesd=repmat([1:D],tlen,1);sqrtd=sqrt(d);enddat1=sum([(in-100).^2],2)./4000;dat2=prod((cos((in-100)./sqrtd)),2);out=dat1-dat2+1;然后将主函数中的function替换成Griewank,然后在matlab中运行即可,运行结果如下:函数的全局最优位置为:Solution=1.0e+002*0.0893938350249221.3550750755471630.9456676451135421.1881187739204750.929927307049068最后得到的优化极值为:Result=2.497904795831135(3)函数3:使用粒子群算法对Foxhole函数进行优化:将下面代码保存成Foxhole.m文件,代码如下:function[out]=Foxhole(in)%x=in(,1);%y=in(,2);term_sum=0;x=in(:,1);y=in(:,1);a{1}=[...-32-1601632;...-32-1601632;...-32-1601632;...-32-1601632;...-32-1601632;...];a{2}=[...-32-32-32-32-32;...-16-16-16-16-16;...00000;...1616161616;...3232323232;...];term_sum=0;forj=1:numel((a{1}))ax=a{1}(j);ay=a{2}(j);term_sum=(x-ax).^6+(y-ay).^6;term_sum=term_sum+1.0/(j+term_sum);endout=.002+term_sum;运行结果如下:函数的全局最优位置为:Solution=31.9995033209264196.742047876319869-4.28812078367820514.91807014291851313.732644871242318最后得到的优化极值为:Result=0.042000000000000

1 / 4
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功