您好,欢迎访问三七文档
程序1当22111cc,5.12212cc,2.1w。a)%主函数源程序(main.m)%------基本粒子群算法(particleswarmoptimization)%------名称:基本粒子群算法%------初始格式化clearall;%清除所有变量clc;%清屏formatlong;%将数据显示为长整形科学计数%------给定初始条条件------------------N=40;%³初始化群体个数D=10;%初始化群体维数T=100;%初始化群体最迭代次数c11=2;%学习因子1c21=2;%学习因子2c12=1.5;c22=1.5;w=1.2;%惯性权重eps=10^(-6);%设置精度(在已知最小值的时候用)%------初始化种群个体(限定位置和速度)------------x=zeros(N,D);v=zeros(N,D);fori=1:Nforj=1:Dx(i,j)=randn;%随机初始化位置v(i,j)=randn;%随机初始化速度endend%------显示群位置----------------------figure(1)forj=1:Dif(rem(D,2)0)subplot((D+1)/2,2,j)elsesubplot(D/2,2,j)endplot(x(:,j),'b*');gridonxlabel('粒子')ylabel('初始位置')tInfo=strcat('第',char(j+48),'维');if(j9)tInfo=strcat('第',char(floor(j/10)+48),char(rem(j,10)+48),'维');endtitle(tInfo)end%------显示种群速度figure(2)forj=1:Dif(rem(D,2)0)subplot((D+1)/2,2,j)elsesubplot(D/2,2,j)endplot(x(:,j),'b*');gridonxlabel('粒子')ylabel('初始速度')tInfo=strcat('第,char(j+48),'维');if(j9)tInfo=strcat('第',char(floor(j/10)+48),char(rem(j,10)+48),'维);endtitle(tInfo)endfigure(3)%第一个图subplot(1,2,1)%------初始化种群个体(在此限定速度和位置)------------x1=x;v1=v;%------初始化个体最优位置和最优值---p1=x1;pbest1=ones(N,1);fori=1:Npbest1(i)=fitness(x1(i,:),D);end%------初始化全局最优位置和最优值---------------g1=1000*ones(1,D);gbest1=1000;fori=1:Nif(pbest1(i)gbest1)g1=p1(i,:);gbest1=pbest1(i);endendgb1=ones(1,T);%-----浸入主循环,按照公式依次迭代直到满足精度或者迭代次数---fori=1:Tforj=1:Nif(fitness(x1(j,:),D)pbest1(j))p1(j,:)=x1(j,:);pbest1(j)=fitness(x1(j,:),D);endif(pbest1(j)gbest1)g1=p1(j,:);gbest1=pbest1(j);endv1(j,:)=w*v1(j,:)+c11*rand*(p1(j,:)-x1(j,:))+c21*rand*(g1-x1(j,:));x1(j,:)=x1(j,:)+v1(j,:);endgb1(i)=gbest1;endplot(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);fori=1:Npbest2(i)=fitness(x2(i,:),D);end%-----初始化种全局最有位置和最优解------g2=1000*ones(1,D);gbest2=1000;fori=1:Nif(pbest2(i)gbest2)g2=p2(i,:);gbest2=pbest2(i);endendgb2=ones(1,T);%------浸入主循环,按照公式依次迭代直到满足精度或者迭代次数---fori=1:Tforj=1:Nif(fitness(x2(j,:),D)pbest2(j))p2(j,:)=x2(j,:);pbest2(j)=fitness(x2(j,:),D);endif(pbest2(j)gbest2)g2=p2(j,:);gbest2=pbest2(j);endv2(j,:)=w*v2(j,:)+c12*rand*(p2(j,:)-x2(j,:))+c22*rand*(g2-x2(j,:));x2(j,:)=x2(j,:)+v2(j,:);endgb2(i)=gbest2;endplot(gb2)TempStr=sprintf('c1=%g,c2=%g',c12,c22);title(TempStr);xlabel('迭代次数');ylabel('适应度值');b)适应度函数%适应度函数(fitness.m)functionresult=fitness(x,D)sum=0;fori=1:Dsum=sum+x(i)^2;endresult=sum;程序2当22111cc于2.1,2,02212wcc对比a)%主函数源程序(main.m)%------基本粒子群算法(particleswarmoptimization)%------名称:基本粒子群算法%------初始格式化clearall;%清除所有变量clc;%清屏formatlong;%将数据显示为长整形科学计数%------给定初始条条件------------------N=40;%³初始化群体个数D=10;%初始化群体维数T=100;%初始化群体最迭代次数c11=2;%学习因子1c21=2;%学习因子2c12=0;c22=2;w=1.2;%惯性权重eps=10^(-6);%设置精度(在已知最小值的时候用)%------初始化种群个体(限定位置和速度)------------x=zeros(N,D);v=zeros(N,D);fori=1:Nforj=1:Dx(i,j)=randn;%随机初始化位置v(i,j)=randn;%随机初始化速度endend%------显示群位置----------------------figure(1)forj=1:Dif(rem(D,2)0)subplot((D+1)/2,2,j)elsesubplot(D/2,2,j)endplot(x(:,j),'b*');gridonxlabel('粒子')ylabel('初始位置')tInfo=strcat('第',char(j+48),'维');if(j9)tInfo=strcat('第',char(floor(j/10)+48),char(rem(j,10)+48),'维');endtitle(tInfo)end%------显示种群速度figure(2)forj=1:Dif(rem(D,2)0)subplot((D+1)/2,2,j)elsesubplot(D/2,2,j)endplot(x(:,j),'b*');gridonxlabel('粒子')ylabel('初始速度')tInfo=strcat('第,char(j+48),'维');if(j9)tInfo=strcat('第',char(floor(j/10)+48),char(rem(j,10)+48),'维);endtitle(tInfo)endfigure(3)%第一个图subplot(1,2,1)%------初始化种群个体(在此限定速度和位置)------------x1=x;v1=v;%------初始化个体最优位置和最优值---p1=x1;pbest1=ones(N,1);fori=1:Npbest1(i)=fitness(x1(i,:),D);end%------初始化全局最优位置和最优值---------------g1=1000*ones(1,D);gbest1=1000;fori=1:Nif(pbest1(i)gbest1)g1=p1(i,:);gbest1=pbest1(i);endendgb1=ones(1,T);%-----浸入主循环,按照公式依次迭代直到满足精度或者迭代次数---fori=1:Tforj=1:Nif(fitness(x1(j,:),D)pbest1(j))p1(j,:)=x1(j,:);pbest1(j)=fitness(x1(j,:),D);endif(pbest1(j)gbest1)g1=p1(j,:);gbest1=pbest1(j);endv1(j,:)=w*v1(j,:)+c11*rand*(p1(j,:)-x1(j,:))+c21*rand*(g1-x1(j,:));x1(j,:)=x1(j,:)+v1(j,:);endgb1(i)=gbest1;endplot(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);fori=1:Npbest2(i)=fitness(x2(i,:),D);end%-----初始化种全局最有位置和最优解------g2=1000*ones(1,D);gbest2=1000;fori=1:Nif(pbest2(i)gbest2)g2=p2(i,:);gbest2=pbest2(i);endendgb2=ones(1,T);%------浸入主循环,按照公式依次迭代直到满足精度或者迭代次数---fori=1:Tforj=1:Nif(fitness(x2(j,:),D)pbest2(j))p2(j,:)=x2(j,:);pbest2(j)=fitness(x2(j,:),D);endif(pbest2(j)gbest2)g2=p2(j,:);gbest2=pbest2(j);endv2(j,:)=w*v2(j,:)+c12*rand*(p2(j,:)-x2(j,:))+c22*rand*(g2-x2(j,:));x2(j,:)=x2(j,:)+v2(j,:);endgb2(i)=gbest2;endplot(gb2)TempStr=sprintf('c1=%g,c2=%g',c12,c22);title(TempStr);xlabel('迭代次数');ylabel('适应度值');b)适应度函数%适应度函数(fitness.m)functionresult=fitness(x,D)sum=0;fori=1:Dsum=sum+x(i)^2;endresult=sum;程序3当2.1,22111wcc于2.1,0,22212wcc对比a)%主函数源程序(main.m)%------基本粒子群算法(particleswarmoptimization)%------名称:基本粒子群算法%----
本文标题:6种粒子群算法程序
链接地址:https://www.777doc.com/doc-2931368 .html