matlab粒子群优化算法举例分析

上传人:ba****u6 文档编号:100860630 上传时间:2022-06-03 格式:DOCX 页数:19 大小:33.81KB
返回 下载 相关 举报
matlab粒子群优化算法举例分析_第1页
第1页 / 共19页
matlab粒子群优化算法举例分析_第2页
第2页 / 共19页
matlab粒子群优化算法举例分析_第3页
第3页 / 共19页
亲,该文档总共19页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
例函数f(x)-7xi2对于适应度函数fitness对其参数w,c1,c3做出不同方i4式的比较以测试其对函数结果影响。当c“=c21=2,c12=c22=1.5,w=1.2oio(适应函数f(x)八Xi2)i3w=1.2o程序1当C11=5=2,C12=C22=15,a)%主函数源程序(main.m)%基本粒子群算法(particleswarmoptimization)%名称:基本粒子群算法%-初始格式化clearall;clc;formatlong;%-给定初始条条件N=40;D=10;T=100;c1仁2;c21=2;c12=1.5;c22=1.5;w=1.2;eps=10A(-6);%清除所有变量%清屏%将数据显示为长整形科学计数%3初始化群体个数%初始化群体维数%初始化群体最迭代次数%学习因子1%学习因子2%惯性权重%设置精度(在已知最小值的时候用)%-初始化种群个体(限定位置和速度)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(j9)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(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);%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)0)subplot(D+1)/2,2,j)elsesubplot(D/2,2,j)endplot(x(:,j),b*);gridonxlabel(粒子)ylabel(初始位置)tlnfo=strcat(第:char(j+48),维);if(j9)tlnfo=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(初始速度)tlnfo=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)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)0)subplot(D+1)/2,2,j)elsesubplot(D/2,2,j)plot(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,:)=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)0)subplot(D+1)/2,2,j)elsesubplot(D/2,2,j)plot(x(:,j),b*);gridonxlabel(粒子)ylabel(初始位置)tlnfo=strcat(第:char(j+48),维);if(j9)tlnfo=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(初始速度)tlnfo=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,:)=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)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)figure(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)0)subplot(D+1)/2,2,j)elsesubplot(D/2,2,j)plot(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(初始速度)tlnfo=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,:)=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);%浸入主循环,按照公式依次迭代直到满足精度或者迭代次数-fori=1:Tforj=1:Nif(fitness(x3(j,:),D)pbest3(j)p3(j,:)=x3(j,:);pbest3(j)=fitness(x3(j,:),D);endif(pbest3(j)gbest3)g3=p3(j,:);gbest3=pbest3(j);endv3(j,:)=w3*v3(j,:)+c1*rand*(p3(j,:)-x3(j,:)+c2*rand*(g3-x3(j,:);x3(j,:)=x3(j,:)+v3(j,:);endgb3(i)=gbest3;endplot(gb3)TempStr=sprintf(w=%g,w3);title(TempStr);xlabel(迭代次数);ylabel(适应度值);figuresubplot(1,2,2)%初始化种群个体(在此限定速度和位置)X4=x;V4=v;%初始化种群个体最有位置和最优解P4=x4;Pbest4=ones(N,1);fori=1:Npbest4(i)=fitness(x4(i,:),D);end%初始化种全局最有位置和最优解g4=1000*ones(1,D);gbest4=1000;fori=1:Nif(pbes42(i)gbest4)g4=p4(i,:);gbes4=pbest4(i);endendgb4=ones(1,T);%浸入主循环,按照公式依次迭代直到满足精度或者迭代次数-fori=1:Tforj=1:Nif(fitness(x4(j,:),D)pbest4(j)p4(j,:)=x4(j,:);pbest4(j)=fitness(x4(j,:),D);endif(pbest4(j)gbest4)g4=p4(j,:);gbest4=pbest4(j);endv4(j,:)=w4*v4(j,:)+c1*rand*(p4(j,:)-x4(j,:)+c2*rand*(g4-x4(j,:);x4(j,:)=x4(j,:)+v4(j,:);endgb4(i)=gbest4;endplot(gb4)TempStr=sprintf(w=%g,w4);title(TempStr);xlabel(迭代次数);ylabel(适应度值);figuresubplot(1,2,2)%初始化种群个体(在此限定速度和位置)X5=x;V5=v;%初始化种群个体最有位置和最优解P5=x5;Pbest5=ones(N,1);fori=1:Npbest5(i)=fitness(x5(i,:),D);end%初始化种全局最有位置和最优解g5=1000*ones(1,D);gbest5=1000;fori=1:Nif(pbes5i)gbest5)g4=p4(i,:);gbes5=pbes5(i);endendgb5=ones(1,T);%浸入主循环,按照公式依次迭代直到满足精度或者迭代次数-fori=1:Tforj=1:Nif(fitness(x5(j,:),D)pbest5(j)p5(j,:)=x5(j,:);pbest5(j)=fitness(x5(j,:),D);endif(pbest5(j)gbest5)g5=p5(j,:);gbest4=pbest4(j);endv5(j,:)=w5*v5(j,:)+c1*rand*(p5(j,:)-x5(j,:)+c2*rand*(g5-x5(j,:);x5(j,:)=x5(j,:)+v5(j,:);endgb5(i)=gbest5;endplot(gb5)TempStr=sprintf(w=%g,w5);title(TempStr);xlabel(迭代次数);ylabel(适应度值);b)适应度函数%适应度函数(fitness.m)functionresult=fitness(x,D)sum=0;fori=1:Dsum=sum+x(iF2;endresult=sum;
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 活动策划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!