粒子群算法matlab(算法已经调试)_第1页
粒子群算法matlab(算法已经调试)_第2页
粒子群算法matlab(算法已经调试)_第3页
粒子群算法matlab(算法已经调试)_第4页
粒子群算法matlab(算法已经调试)_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、程序 1 当 c11 c21 2 , c12 c22 1.5 , w 1.2 。 a)% 主函数源程序( main.m) % 基本粒子群算法 (particle swarm optimization) % 名称: 基本粒子群算法 % 初始格式化 clear all; %清除所有变量 clc; %清屏 format long; %将数据显示为长整形科学计数 %给定初始条条件 N=40; %3初始化群体个数 D=10; %初始化群体维数 T=100; %初始化群体最迭代次数 c11=2; %学习因子 1 c21=2; %学习因子 2 c12=1.5; c22=1.5; w=1.2; %惯性权重 e

2、ps=10A(-6); %设置精度(在已知最小值的时候用) %初始化种群个体 (限定位置和速度) x=zeros(N,D); v=zeros(N,D); for i=1:N for j=1:D x(i,j)=randn; %随机初始化位置 v(i,j)=randn; %随机初始化速度 end end % 显示群位置 figure(1) for j=1:D if (rem(D,2)0) subplot(D+1)/2,2,j) else subplot(D/2,2,j) end plot(x(:,j), b* );grid on xlabel(粒子) ylabel(初始位置) tI nfo=str

3、cat(第:char(j+48),维); if(j9) tInfo=strcat(第,char(floor(j/10)+48), char(rem(j,10)+48),维); end title(tInfo) end %显示种群速度 figure(2) for j=1:D if(rem(D,2)0) subplot(D+1)/2,2,j) else subplot(D/2,2,j) end plot(x(:,j),b*);grid on xlabel(粒子) ylabel(初始速度) tI nfo=strcat(第,char(j+48),维); if(j9) tin fo=strcat(第:c

4、har(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); for i=1:N pbest1(i)=fitness(x1(i,:),D); end % 初始化全局最优位置和最优值 g1=1000*ones(1,D); gbest1=1000; for i=1:N if (pbest1(i)gbest1) g1=p1

5、(i,:); gbest1=pbest1(i); end end gb1=ones(1,T); % 浸入主循环,按照公式依次迭代直到满足精度或者迭代次数 - for i=1:T for j=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,:

6、); 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) % 初始化种群个体(在此限定速度和位置) x2=x; v2=v; %初始化种群个体最有位置和 最优解 p2=x2; pbest2=ones(N,1); for i=1:N pbest2(i)=fitness(x2(i,:),D); end %初始化种全局最有位置和 最

7、优解 g2=1000*ones(1,D); gbest2=1000; for i=1:N if(pbest2(i)gbest2) g2=p2(i,:); gbest2=pbest2(i); end end gb2=ones(1,T); %浸入主循环,按照公式依次迭代直到满足精度或者迭代次数 for i=1:T for j=1:N if (fitness(x2(j,:),D)pbest2(j) p2(j,:)=x2(j,:); pbest2(j)=fitness(x2(j,:),D); end if(pbest2(j)0) subplot(D+1)/2,2,j) else subplot(D/2

8、,2,j) end plot(x(:,j),b*);grid on xlabel(粒子) ylabel(初始位置) tI nfo=strcat(第:char(j+48),维); if(j9) tInfo=strcat(第,char(floor(j/10)+48), char(rem(j,10)+48),维); end title(tInfo) end %显示种群速度 figure(2) for j=1:D if(rem(D,2)0) subplot(D+1)/2,2,j) else subplot(D/2,2,j) end plot(x(:,j), b* );grid on xlabel(粒子

9、) ylabel(初始速度) tI nfo=strcat(第,char(j+48),维); if(j9) tin fo=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); for i=1:N pbest1(i)=fitness(x1(i,:),D); end % 初始化全局最优位置和最优

10、值 g1=1000*ones(1,D); gbest1=1000; for i=1:N if(pbest1(i)gbest1) g1=p1(i,:); gbest1=pbest1(i); end end gb1=ones(1,T); %浸入主循环,按照公式依次迭代直到满足精度或者迭代次数 for i=1:T for j=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); e

11、nd 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) % 初始化种群个体(在此限定速度和位置) x2=x; v2=v; %初始化种群个体最有位置和 最优解 p2=x2; pbest2=one

12、s(N,1); for i=1:N pbest2(i)=fitness(x2(i,:),D); end %初始化种全局最有位置和 最优解 g2=1000*ones(1,D); gbest2=1000; for i=1:N if (pbest2(i)gbest2) g2=p2(i,:); gbest2=pbest2(i); end end gb2=ones(1,T); %浸入主循环,按照公式依次迭代直到满足精度或者迭代次数 for i=1:T for j=1:N if (fitness(x2(j,:),D)pbest2(j) p2(j,:)=x2(j,:); pbest2(j)=fitness(

13、x2(j,:),D); end if (pbest2(j)0) subplot(D+1)/2,2,j) else subplot(D/2,2,j) end plot(x(:,j), b* );grid on xlabel(粒子) ylabel(初始位置) tI nfo=strcat(第:char(j+48),维); if(j9) tInfo=strcat(第,char(floor(j/10)+48), char(rem(j,10)+48),维); end title(tInfo) end %显示种群速度 figure(2) for j=1:D if(rem(D,2)0) subplot(D+1

14、)/2,2,j) else subplot(D/2,2,j) end plot(x(:,j),b*);grid on xlabel(粒子) ylabel(初始速度) tI nfo=strcat(第,char(j+48),维); if(j9) tin fo=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=o

15、nes(N,1); for i=1:N pbest1(i)=fitness(x1(i,:),D); end % 初始化全局最优位置和最优值 g1=1000*ones(1,D); gbest1=1000; for i=1:N if (pbest1(i)gbest1) g1=p1(i,:); gbest1=pbest1(i); end end gb1=ones(1,T); % 浸入主循环,按照公式依次迭代直到满足精度或者迭代次数 - for i=1:T for j=1:N if (fitness(x1(j,:),D)pbest1(j) p1(j,:)=x1(j,:); pbest1(j)=fitn

16、ess(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

17、,2) % 初始化种群个体(在此限定速度和位置) x2=x; v2=v; %初始化种群个体最有位置和 最优解 p2=x2; pbest2=ones(N,1); for i=1:N pbest2(i)=fitness(x2(i,:),D); end %初始化种全局最有位置和 最优解 g2=1000*ones(1,D); gbest2=1000; for i=1:N if(pbest2(i)gbest2) g2=p2(i,:); gbest2=pbest2(i); end end gb2=ones(1,T); %浸入主循环,按照公式依次迭代直到满足精度或者迭代次数 for i=1:T for j=

18、1:N if (fitness(x2(j,:),D)pbest2(j) p2(j,:)=x2(j,:); pbest2(j)=fitness(x2(j,:),D); end if(pbest2(j)0) subplot(D+1)/2,2,j) else subplot(D/2,2,j) plot(x(:,j), b*) ; grid on xlabel(粒子) ylabel(初始位置) tI nfo=strcat(第:char(j+48),维); if(j9) tInfo=strcat(第,char(floor(j/10)+48), char(rem(j,10)+48),维); end tit

19、le(tInfo) end % 显示种群速度 figure(2) for j=1:D if(rem(D,2)0) subplot(D+1)/2,2,j) else subplot(D/2,2,j) end plot(x(:,j), b* );grid on xlabel(粒子) ylabel(初始速度) tI nfo=strcat(第,char(j+48),维); if(j9) tin fo=strcat(第:char(floor(j/10)+48), char(rem(j,10)+48),维); end title(tinfo) end figure(3) subplot(1,2,1) %

20、初始化种群个体(在此限定速度和位置) x1=x; v1=v; % 初始化个体最优位置和最优值 - p1=x1; pbest1=ones(N,1); for i=1:N pbest1(i)=fitness(x1(i,:),D); end % 初始化全局最优位置和最优值 g1=1000*ones(1,D); gbest1=1000; for i=1:N if(pbest1(i)gbest1) g1=p1(i,:); gbest1=pbest1(i); end end gb1=ones(1,T); %浸入主循环,按照公式依次迭代直到满足精度或者迭代次数 for i=1:T for j=1:N if

21、(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,:)=w1*v1(j,:)+c1*rand*(p1(j,:)-x1(j,:)+c2*rand*(g1-x1(j,:); x1(j,:)=x1(j,:)+v1(j,:); end gb1(i)=gbest1; end plot(gb1) TempStr=sprintf(w= %g ,w1); title(TempStr)

22、; xlabel(迭代次数); ylabel(适应度值); subplot(1,2,2) % 初始化种群个体(在此限定速度和位置) x2=x; v2=v; %初始化种群个体最有位置和 最优解 p2=x2; pbest2=ones(N,1); for i=1:N pbest2(i)=fitness(x2(i,:),D); end %初始化种全局最有位置和 最优解 g2=1000*ones(1,D); gbest2=1000; for i=1:N if (pbest2(i)gbest2) g2=p2(i,:); gbest2=pbest2(i); end end gb2=ones(1,T); %

23、浸入主循环,按照公式依次迭代直到满足精度或者迭代次数 - for i=1:T for j=1:N if (fitness(x2(j,:),D)pbest2(j) p2(j,:)=x2(j,:); pbest2(j)=fitness(x2(j,:),D); end if (pbest2(j)0) subplot(D+1)/2,2,j) else subplot(D/2,2,j) plot(x(:,j), b*);grid on xlabel(粒子) ylabel(初始位置) tI nfo=strcat(第:char(j+48),维); if(j9) tI nfo=strcat(第:char(fl

24、oor(j/10)+48), char(rem(j,10)+48),维); end title(tInfo) end % 显示种群速度 figure(2) for j=1:D if(rem(D,2)0) subplot(D+1)/2,2,j) else subplot(D/2,2,j) end plot(x(:,j),b*);grid on xlabel(粒子) ylabel(初始速度) tI nfo=strcat(第,char(j+48),维); if(j9) tin fo=strcat(第,char(floor(j/10)+48), char(rem(j,10)+48),维); end t

25、itle(tInfo) end figure(3) subplot(1,2,1) % 初始化种群个体(在此限定速度和位置) x1=x; v1=v; % 初始化个体最优位置和最优值 - p1=x1; pbest1=ones(N,1); for i=1:N pbest1(i)=fitness(x1(i,:),D); end % 初始化全局最优位置和最优值 g1=1000*ones(1,D); gbest1=1000; for i=1:N if (pbest1(i)gbest1) g1=p1(i,:); gbest1=pbest1(i); end end gb1=ones(1,T); % 浸入主循环

26、,按照公式依次迭代直到满足精度或者迭代次数 - for i=1:T for j=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,:)=w1*v1(j,:)+c1*rand*(p1(j,:)-x1(j,:)+c2*rand*(g1-x1(j,:); x1(j,:)=x1(j,:)+v1(j,:); end gb1(i)=gbest1; end plot(

27、gb1) TempStr=sprintf(w= %g ,w1); title(TempStr); xlabel(迭代次数); ylabel(适应度值); subplot(1,2,2) % 初始化种群个体(在此限定速度和位置) x2=x; v2=v; %初始化种群个体最有位置和 最优解 p2=x2; pbest2=ones(N,1); for i=1:N pbest2(i)=fitness(x2(i,:),D); end % 初始化种全局最有位置和最优解 g2=1000*ones(1,D); gbest2=1000; for i=1:N if(pbest2(i)gbest2) g2=p2(i,:

28、); gbest2=pbest2(i); end end gb2=ones(1,T); % 浸入主循环,按照公式依次迭代直到满足精度或者迭代次数 - for i=1:T for j=1:N if (fitness(x2(j,:),D)pbest2(j) p2(j,:)=x2(j,:); pbest2(j)=fitness(x2(j,:),D); end if(pbest2(j)0) subplot(D+1)/2,2,j) else subplot(D/2,2,j) end plot(x(:,j), b* );grid on xlabel(粒子) ylabel(初始位置) tI nfo=strc

29、at(第:char(j+48),维); if(j9) tI nfo=strcat(第:char(floor(j/10)+48),char(rem(j,10)+48),维); end title(tInfo) end % 显示种群速度 figure(2) for j=1:D if(rem(D,2)0) subplot(D+1)/2,2,j) else subplot(D/2,2,j) end plot(x(:,j),b*);grid on xlabel(粒子) ylabel(初始速度) tI nfo=strcat(第,char(j+48),维); if (j9) tl nfo=strcat(第:

30、char(floor(j/10)+48),char(rem(j,10)+48),维); end title(tInfo) end figure(3) % 初始化群体个体最有位置和最优解 p=x; pbest=ones(N,1); for i=1:N pbest(i)=fitness(x(i,:),D); end %-初始化全局最优位置和最优解 g=1000*ones(1,D); gbest=1000; for i=1:N if (pbest(i)gbest) g=p(i,:); gbest=pbest(i); end end gb=ones(1,T); % 进入主循环,按照公式依次迭代,直到满

31、足精度要求 - for i=1:T for j=1:N if (fitness(x(j,:),D)pbest(j) p(j,:)=x(j,:); pbest(j)=fitness(x(j,:),D); end if(pbest(j)0) subplot(D+1)/2,2,j) else subplot(D/2,2,j) plot(x(:,j), b*) ; grid on xlabel(粒子) ylabel(初始位置) tI nfo=strcat(第:char(j+48),维); if(j9) tInfo=strcat(第,char(floor(j/10)+48), char(rem(j,10

32、)+48),维); end title(tInfo) end % 显示种群速度 figure(2) for j=1:D if(rem(D,2)0) subplot(D+1)/2,2,j) else subplot(D/2,2,j) end plot(x(:,j), b* );grid on xlabel(粒子) ylabel(初始速度) tI nfo=strcat(第,char(j+48),维); if(j9) tin fo=strcat(第:char(floor(j/10)+48), char(rem(j,10)+48),维); end title(tinfo) end figure(3)

33、subplot(1,2,1) % 初始化种群个体(在此限定速度和位置) x1=x; v1=v; % 初始化个体最优位置和最优值 - p1=x1; pbest1=ones(N,1); for i=1:N pbest1(i)=fitness(x1(i,:),D); end % 初始化全局最优位置和最优值 g1=1000*ones(1,D); gbest1=1000; for i=1:N if(pbest1(i)gbest1) g1=p1(i,:); gbest1=pbest1(i); end end gb1=ones(1,T); %浸入主循环,按照公式依次迭代直到满足精度或者迭代次数 for i=

34、1:T for j=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,:)=w1*v1(j,:)+c1*rand*(p1(j,:)-x1(j,:)+c2*rand*(g1-x1(j,:); x1(j,:)=x1(j,:)+v1(j,:); end gb1(i)=gbest1; end plot(gb1) TempStr=sprintf(w= %g ,w1

35、); title(TempStr); xlabel(迭代次数); ylabel(适应度值); figure subplot(1,2,2) % 初始化种群个体(在此限定速度和位置) X3=x V3=v; %初始化种群个体最有位置和 最优解 P3=x3; Pbest3=ones(N,1); for i=1:N pbest3(i)=fitness(x3(i,:),D); end % 初始化种全局最有位置和最优解 g3=1000*ones(1,D); gbest3=1000; for i=1:N if(pbest3(i)gbest3) g3=p3(i,:); gbes3.=pbest3(i); end

36、 end gb3=ones(1,T); % 浸入主循环,按照公式依次迭代直到满足精度或者迭代次数 - for i=1:T for j=1:N if (fitness(x3(j,:),D)pbest3(j) p3(j,:)=x3(j,:); pbest3(j)=fitness(x3(j,:),D); end if (pbest3(j)gbest3) g3=p3(j,:); gbest3=pbest3(j); end v3(j,:)=w3*v3(j,:)+c1*rand*(p3(j,:)-x3(j,:)+c2*rand*(g3-x3(j,:); x3(j,:)=x3(j,:)+v3(j,:); end gb3(i)=gbest3; end plot(gb3) TempStr=sprintf(w= %g ,w3); title(TempStr); xlabel(迭代次数); ylabel(适应度值); figure subplot(1,2,2) % 初始化种群个体(在此限定速度和位置) X4=x; V4=v; %初始化种群个体最有位置和 最优解 P4=x4; Pbest4=ones(N,1); for i=1:N pbest4(i)=fitness(x4(i,:),D); end % 初始化种全局最有位置和最优解 g4=1000*ones(1,D); gbest4=1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论