预览加载中,请您耐心等待几秒...
在线预览结束,喜欢就下载吧,查找使用更方便
如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
%允许误差:error;%粒子最大迭代次数:Maxnum;%目标函数的自变量个数:narvs;%粒子群规模:particlesize;%惯性因子:w;%粒子的最大飞翔速度:vmax;%所在的查找范围:lowerupper;%每个粒子的个体学习因子,也称为加速常数:c(为一个含两个元素向量)function[bestx,minx]=f(particlesize,lower,upper,narvs,error,Maxnum,vmax,c,w)x0=lower+(upper-lower).*rand(particlesize,narvs);%粒子所在的位置v=rand(particlesize,narvs);%粒子的飞翔速度fx0=fn(x0);d=1;i=0;x=x0;while(d>error&&i<Maxnum)i=i+1;fx=fn(x);%fn(x)是一个m文件定义的函数表达式,x为一个particlesize*narvs的矩阵。[k,bestx]=min(fx);x=(fx<fx0)*ones(1,narvs).*x...+(fx>=fx0)*ones(1,narvs).*x0;%获得历史上的最佳位置v=w*v+c(1)*diag(rand(particlesize,1))*(x0-x)+...c(2)*diag(rand(particlesize,1))*...(ones(particlesize,narvs)*diag(x(bestx,:))-x);%更新改变的速度和方向v=(abs(v)<=vmax).*v+vmax.*(abs(v)>vmax);%限制最大飞翔速度x0=x;x=x0+v;fx0=fx;d=max(fx)-min(fx);endminx=fx(bestx);bestx=x0(bestx,:);%fn(x)是一个m文件定义的函数表达式,x为一个particlesize*narvs的矩阵。functionfx=fn(x)fx=x(:,1).^2+x(:,2).^2;实例:clc;clearall;closeall;[x,y]=f(30,-5,5,2,0.01,100,2,[2,2],0.6)x=1.0e-10*0.03370.2211y=5.0034e-22函数最小值在x点取得y.