预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共33页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

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

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

例函数对于适应度函数fitness对其参数,,做出不同方式的比较以测试其对函数结果影响。 当,,。 (适应函数) 程序1 当,,。 a)%主函数源程序(main.m) %------基本粒子群算法(particleswarmoptimization) %------名称:基本粒子群算法 %------初始格式化 clearall;%清除所有变量 clc;%清屏 formatlong;%将数据显示为长整形科学计数 %------给定初始条条件------------------ N=40;%³初始化群体个数 D=10;%初始化群体维数 T=100;%初始化群体最迭代次数 c11=2;%学习因子1 c21=2;%学习因子2 c12=1.5; c22=1.5; w=1.2;%惯性权重 eps=10^(-6);%设置精度(在已知最小值的时候用) %------初始化种群个体(限定位置和速度)------------ x=zeros(N,D); %x是位置,初始化位置空间(矩阵) v=zeros(N,D); %v是速度,初始化速度空间(矩阵) fori=1:N forj=1:D x(i,j)=randn;%随机初始化位置,randn返回一个随机变化的符合正态分布的数 v(i,j)=randn;%随机初始化速度 end end %------显示群位置---------------------- figure(1) forj=1:D if(rem(D,2)>0) subplot((D+1)/2,2,j) else subplot(D/2,2,j) end plot(x(:,j),'b*');gridon %’b*’表示颜色是绿的,用*显示在图上 xlabel('粒子') ylabel('初始位置') tInfo=strcat('第',char(j+48),'维'); %strcat使括号里的东西连成字符串 if(j>9) tInfo=strcat('第',char(floor(j/10)+48)); %floor向负无穷方向取整 char(rem(j,10)+48,'维'); %rem取余 end title(tInfo) end %------显示种群速度 figure(2) forj=1:D if(rem(D,2)>0) subplot((D+1)/2,2,j) else subplot(D/2,2,j) end plot(v(:,j),'b*');gridon %是不是应该是v(:,j) xlabel('粒子') ylabel('初始速度') tInfo=strcat('第',char(j+48),'维'); if(j>9) tInfo=strcat('第',char(floor(j/10)+48),'维'); char(rem(j,10)+48,'维); end title(tInfo) end figure(3) %第一个图 subplot(1,2,1) %------初始化种群个体(在此限定速度和位置)------------ x1=x; v1=v; %------初始化个体最优位置和最优值--- p1=x1; pbest1=ones(N,1); fori=1:N pbest1(i)=fitness(x1(i,:),D); %适应度函数 end %------初始化全局最优位置和最优值--------------- g1=1000*ones(1,D); gbest1=1000; fori=1:N if(pbest1(i)<gbest1) g1=p1(i,:); gbest1=pbest1(i); end end gb1=ones(1,T); %-----进入主循环,按照公式依次迭代直到满足精度或者迭代次数--- fori=1:T forj=1:N if(fitness(x1(j,:),D)<pbest1(j)) p1(j,:)=x1(j,:); pbest1(j)=fitness(x1(j,:),D); end if(pbest1(j)<gbest1) g1=p1(j,:); gbest1=pbest1(j); end v1(j,:)=w*v1(j,:)+c11*rand*(p1(j,:)-x1(j,:))+c21*rand* (g1-x1(j,:)); x1(j,:)=x1(j,:)+v1(j,:); end gb1(i)=gbest1; end plot(gb1) TempStr=sprintf('c1=%g,c2=%g',c11,c21); title(TempStr); xlabel('迭代次数'); ylabel('适应度值'); %第二个图 subplot(1,2,2) %-----初始化种群个体(在此限定速