matlab粒子群优化算法举例分析11_第1页
matlab粒子群优化算法举例分析11_第2页
matlab粒子群优化算法举例分析11_第3页
matlab粒子群优化算法举例分析11_第4页
matlab粒子群优化算法举例分析11_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

第页例函数对于适应度函数fitness对其参数,,做出不同方式的比较以测试其对函数结果影响。当,,。(适应函数)程序1当,,。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); %x是位置,初始化位置空间(矩阵)v=zeros(N,D); %v是速度,初始化速度空间(矩阵)fori=1:Nforj=1:Dx(i,j)=randn;%随机初始化位置,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*');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取余endtitle(tInfo)end%显示种群速度figure(2)forj=1:Dif(rem(D,2)>0)subplot((D+1)/2,2,j)elsesubplot(D/2,2,j)endplot(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,'维);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); %T为迭代次数T=100%进入主循环,按照公式依次迭代直到满足精度或者迭代次数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('适应度值');程序2当于对比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(j>9)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(j>9)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程序3当于对比a)%主函数源程序(main.m)%基本粒子群算法(particleswarmoptimization)%名称:基本粒子群算法%初始格式化clearall;%清除所有变量clc;%清屏formatlong;%将数据显示为长整形科学计数%给定初始条条件N=40;%³初始化群体个数D=10;%初始化群体维数T=100;%初始化群体最迭代次数c11=2;%学习因子1c21=2;%学习因子2c12=2;c22=0;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(j>9)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(j>9)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;%程序4程序4对,分别对其取值,,,测试函数。a)%主函数源程序(main.m)%基本粒子群算法(particleswarmoptimization)%名称:基本粒子群算法%初始格式化clearall;%清除所有变量clc;%清屏formatlong;%将数据显示为长整形科学计数%给定初始条条件N=40;%³初始化群体个数D=10;%初始化群体维数T=100;%初始化群体最迭代次数c1=1.1;%学习因子1c2=2;%学习因子2w1=1.2;%惯性权重w2=1.5;%惯性权重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)plot(x(:,j),'b*');gridonxlabel('粒子')ylabel('初始位置')tInfo=strcat('第',char(j+48),'维');if(j>9)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(j>9)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,:)=w1*v1(j,:)+c1*rand*(p1(j,:)-x1(j,:))+c2*rand*(g1-x1(j,:));x1(j,:)=x1(j,:)+v1(j,:);endgb1(i)=gbest1;endplot(gb1)TempStr=sprintf('w=%g',w1);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,:)=w2*v2(j,:)+c1*rand*(p2(j,:)-x2(j,:))+c2*rand*(g2-x2(j,:));x2(j,:)=x2(j,:)+v2(j,:);endgb2(i)=gbest2;endplot(gb2)TempStr=sprintf('w=%g',w2);title(TempStr);xlabel('迭代次数');ylabel('适应度值');b)适应度函数%适应度函数(fitness.m)functionresult=fitness(x,D)sum=0;fori=1:Dsum=sum+x(i)^2;endresult=sum;%程序5程序5对,对分别取,随笔其迭代影响a)%主函数源程序(main.m)%基本粒子群算法(particleswarmoptimization)%名称:基本粒子群算法%初始格式化clearall;%清除所有变量clc;%清屏formatlong;%将数据显示为长整形科学计数%给定初始条条件N=40;%³初始化群体个数D=10;%初始化群体维数T=100;%初始化群体最迭代次数c1=1.1;%学习因子1c2=2;%学习因子2w1=1.2;%惯性权重w2=0;%惯性权重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)plot(x(:,j),'b*');gridonxlabel('粒子')ylabel('初始位置')tInfo=strcat('第',char(j+48),'维');if(j>9)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(j>9)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,:)=w1*v1(j,:)+c1*rand*(p1(j,:)-x1(j,:))+c2*rand*(g1-x1(j,:));x1(j,:)=x1(j,:)+v1(j,:);endgb1(i)=gbest1;endplot(gb1)TempStr=sprintf('w=%g',w1);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,:)=w2*v2(j,:)+c1*rand*(p2(j,:)-x2(j,:))+c2*rand*(g2-x2(j,:));x2(j,:)=x2(j,:)+v2(j,:);endgb2(i)=gbest2;endplot(gb2)TempStr=sprintf('w=%g',w2);title(TempStr);xlabel('迭代次数');ylabel('适应度值');b)适应度函数%适应度函数(fitness.m)functionresult=fitness(x,D)sum=0;fori=1:Dsum=sum+x(i)^2;endresult=sum;程序6标准粒子群a)%主函数源程序(main.m)%基本粒子群算法(particleswarmoptimization)%名称:基本粒子群算法%初始格式化clearall;%清除所有变量clc;%清屏formatlong;%将数据显示为长整形科学计数%给定初始条条件N=40;%³初始化群体个数D=10;%初始化群体维数T=100;%初始化群体最迭代次数c1=2;%学习因子1c2=2;%学习因子2w=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(j>9)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(j>9)tInfo=strcat('第',char(floor(j/10)+48),char(rem(j,10)+48),'维');endtitle(tInfo)endfigure(3)%初始化群体个体最有位置和最优解p=x;pbest=ones(N,1);fori=1:Npbest(i)=fitness(x(i,:),D);end%初始化全局最优位置和最优解g=1000*ones(1,D);gbest=1000;fori=1:Nif(pbest(i)<gbest)g=p(i,:);gbest=pbest(i);endendgb=ones(1,T);%进入主循环,按照公式依次迭代,直到满足精度要求--fori=1:Tforj=1:Nif(fitness(x(j,:),D)<pbest(j))p(j,:)=x(j,:);pbest(j)=fitness(x(j,:),D);endif(pbest(j)<gbest)g=p(j,:);gbest=pbest(j);endv(j,:)=w*v(j,:)+c1*rand*(p(j,:)-x(j,:))+c2*rand*(g-x(j,:));x(j,:)=x(j,:)+v(j,:);endgb(i)=gbest;endplot(gb)TempStr=sprintf('w=%g',w);title(TempStr);xlabel('迭代次数');ylabel('适应值');%适应度函数functionresult=fitness(x,D)sum=0;fori=1:Dsum=sum+x(i)^2;endresult=sum;%程序6程序6对,对分别取,随笔其迭代影响a)%主函数源程序(main.m)%基本粒子群算法(particleswarmoptimization)%名称:基本粒子群算法%初始格式化clearall;%清除所有变量clc;%清屏formatlong;%将数据显示为长整形科学计数%给定初始条条件N=40;%³初始化群体个数D=10;%初始化群体维数T=100;%初始化群体最迭代次数c1=1.1;%学习因子1c2=2;%学习因子2w1=0.4%惯性权重1w2=0.8%惯性权重2w3=1.2%惯性权重3w4=1.4%惯性权重4w5=1.6%惯性权重5eps=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)plot(x(:,j),'b*');gridonxlabel('粒子')ylabel('初始位置')tInfo=strcat('第',char(j+48),'维');if(j>9)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(j>9)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,:)=w1*v1(j,:)+c1*rand*(p1(j,:)-x1(j,:))+c2*rand*(g1-x1(j,:));x1(j,:)=x1(j,:)+v1(j,:);endgb1(i)=gbest1;endplot(gb1)TempStr=sprintf('w=%g',w1);title(TempStr);xlabel('迭代次数');ylabel('适应度值');figuresubplot(1,2,2)%初始化种群个体(在此限定速度和位置)X3=xV3=v;%初始化种群个体最有位置和最优解P3=x3;Pbest3=ones(N,1);fori=1:Npbest3(i)=fitness(x3(i,:),D);end%初始化种全局最有位置和最优解g3=1000*ones(1,D);gbest3=1000;fori=1:Nif(pbest3(i)<gbest3)g3=p3(i,:);gbes3.=pbest3(i);endendgb3=ones(1,T);%浸入主循环,按照公式依次迭代直到满足精度或者迭

温馨提示

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

评论

0/150

提交评论