预览加载中,请您耐心等待几秒...
1/3
2/3
3/3

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

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); end minx=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.2211 y= 5.0034e-22 函数最小值在x点取得y.