matlab粒子群優(yōu)化算法舉例分析11_第1頁
matlab粒子群優(yōu)化算法舉例分析11_第2頁
matlab粒子群優(yōu)化算法舉例分析11_第3頁
matlab粒子群優(yōu)化算法舉例分析11_第4頁
matlab粒子群優(yōu)化算法舉例分析11_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第頁例函數(shù)對于適應(yīng)度函數(shù)fitness對其參數(shù),,做出不同方式的比較以測試其對函數(shù)結(jié)果影響。當,,。(適應(yīng)函數(shù))程序1當,,。a)%主函數(shù)源程序(main.m)%基本粒子群算法(particleswarmoptimization)%名稱:基本粒子群算法%初始格式化clearall;%清除所有變量clc;%清屏formatlong;%將數(shù)據(jù)顯示為長整形科學(xué)計數(shù)%給定初始條條件N=40;%3初始化群體個數(shù)D=10;%初始化群體維數(shù)T=100;%初始化群體最迭代次數(shù)c11=2;%學(xué)習因子1c21=2;%學(xué)習因子2c12=1.5;c22=1.5;w=1.2;%慣性權(quán)重eps=10^(-6);%設(shè)置精度(在已知最小值的時候用)%初始化種群個體(限定位置和速度)x=zeros(N,D); %x是位置,初始化位置空間(矩陣)v=zeros(N,D); %v是速度,初始化速度空間(矩陣)fori=1:Nforj=1:Dx(i,j)=randn;%隨機初始化位置,randn返回一個隨機變化的符合正態(tài)分布的數(shù)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 %是不是應(yīng)該是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;%初始化個體最優(yōu)位置和最優(yōu)值p1=x1;pbest1=ones(N,1);fori=1:Npbest1(i)=fitness(x1(i,:),D); %適應(yīng)度函數(shù)end%初始化全局最優(yōu)位置和最優(yōu)值g1=1000*ones(1,D);gbest1=1000;fori=1:Nif(pbest1(i)<gbest1)g1=p1(i,:);gbest1=pbest1(i);endendgb1=ones(1,T);%進入主循環(huán),按照公式依次迭代直到滿足精度或者迭代次數(shù)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('迭代次數(shù)');ylabel('適應(yīng)度值');%第二個圖subplot(1,2,2)%初始化種群個體(在此限定速度和位置)x2=x;v2=v;%初始化種群個體最有位置和最優(yōu)解p2=x2;pbest2=ones(N,1);fori=1:Npbest2(i)=fitness(x2(i,:),D);end%初始化種全局最優(yōu)位置和最優(yōu)解g2=1000*ones(1,D);gbest2=1000;fori=1:Nif(pbest2(i)<gbest2)g2=p2(i,:); %最優(yōu)位置gbest2=pbest2(i); %最優(yōu)解endendgb2=ones(1,T); %T為迭代次數(shù)T=100%進入主循環(huán),按照公式依次迭代直到滿足精度或者迭代次數(shù)fori=1:Tforj=1:Nif(fitness(x2(j,:),D)<pbest2(j)) %個體最優(yōu)p2(j,:)=x2(j,:);pbest2(j)=fitness(x2(j,:),D);endif(pbest2(j)<gbest2) %全局最優(yōu)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; %每一代的最優(yōu)解endplot(gb2)TempStr=sprintf('c1=%g,c2=%g',c12,c22);title(TempStr);xlabel('迭代次數(shù)');ylabel('適應(yīng)度值');程序2當于對比a)%主函數(shù)源程序(main.m)%基本粒子群算法(particleswarmoptimization)%名稱:基本粒子群算法%初始格式化clearall;%清除所有變量clc;%清屏formatlong;%將數(shù)據(jù)顯示為長整形科學(xué)計數(shù)%給定初始條條件N=40;%3初始化群體個數(shù)D=10;%初始化群體維數(shù)T=100;%初始化群體最迭代次數(shù)c11=2;%學(xué)習因子1c21=2;%學(xué)習因子2c12=0;c22=2;w=1.2;%慣性權(quán)重eps=10^(-6);%設(shè)置精度(在已知最小值的時候用)%初始化種群個體(限定位置和速度)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;%初始化個體最優(yōu)位置和最優(yōu)值p1=x1;pbest1=ones(N,1);fori=1:Npbest1(i)=fitness(x1(i,:),D);end%初始化全局最優(yōu)位置和最優(yōu)值g1=1000*ones(1,D);gbest1=1000;fori=1:Nif(pbest1(i)<gbest1)g1=p1(i,:);gbest1=pbest1(i);endendgb1=ones(1,T);%浸入主循環(huán),按照公式依次迭代直到滿足精度或者迭代次數(shù)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('迭代次數(shù)');ylabel('適應(yīng)度值');%第二個圖subplot(1,2,2)%初始化種群個體(在此限定速度和位置)x2=x;v2=v;%初始化種群個體最有位置和最優(yōu)解p2=x2;pbest2=ones(N,1);fori=1:Npbest2(i)=fitness(x2(i,:),D);end%初始化種全局最有位置和最優(yōu)解g2=1000*ones(1,D);gbest2=1000;fori=1:Nif(pbest2(i)<gbest2)g2=p2(i,:);gbest2=pbest2(i);endendgb2=ones(1,T);%浸入主循環(huán),按照公式依次迭代直到滿足精度或者迭代次數(shù)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('迭代次數(shù)');ylabel('適應(yīng)度值');b)適應(yīng)度函數(shù)%適應(yīng)度函數(shù)(fitness.m)functionresult=fitness(x,D)sum=0;fori=1:Dsum=sum+x(i)^2;endresult=sum;%程序3程序3當于對比a)%主函數(shù)源程序(main.m)%基本粒子群算法(particleswarmoptimization)%名稱:基本粒子群算法%初始格式化clearall;%清除所有變量clc;%清屏formatlong;%將數(shù)據(jù)顯示為長整形科學(xué)計數(shù)%給定初始條條件N=40;%3初始化群體個數(shù)D=10;%初始化群體維數(shù)T=100;%初始化群體最迭代次數(shù)c11=2;%學(xué)習因子1c21=2;%學(xué)習因子2c12=2;c22=0;w=1.2;%慣性權(quán)重eps=10^(-6);%設(shè)置精度(在已知最小值的時候用)%初始化種群個體(限定位置和速度)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;%初始化個體最優(yōu)位置和最優(yōu)值p1=x1;pbest1=ones(N,1);fori=1:Npbest1(i)=fitness(x1(i,:),D);end%初始化全局最優(yōu)位置和最優(yōu)值g1=1000*ones(1,D);gbest1=1000;fori=1:Nif(pbest1(i)<gbest1)g1=p1(i,:);gbest1=pbest1(i);endendgb1=ones(1,T);%浸入主循環(huán),按照公式依次迭代直到滿足精度或者迭代次數(shù)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('迭代次數(shù)');ylabel('適應(yīng)度值');%第二個圖subplot(1,2,2)%初始化種群個體(在此限定速度和位置)x2=x;v2=v;%初始化種群個體最有位置和最優(yōu)解p2=x2;pbest2=ones(N,1);fori=1:Npbest2(i)=fitness(x2(i,:),D);end%初始化種全局最有位置和最優(yōu)解g2=1000*ones(1,D);gbest2=1000;fori=1:Nif(pbest2(i)<gbest2)g2=p2(i,:);gbest2=pbest2(i);endendgb2=ones(1,T);%浸入主循環(huán),按照公式依次迭代直到滿足精度或者迭代次數(shù)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('迭代次數(shù)');ylabel('適應(yīng)度值');b)適應(yīng)度函數(shù)%適應(yīng)度函數(shù)(fitness.m)functionresult=fitness(x,D)sum=0;fori=1:Dsum=sum+x(i)^2;endresult=sum;%程序4程序4對,分別對其取值,,,測試函數(shù)。a)%主函數(shù)源程序(main.m)%基本粒子群算法(particleswarmoptimization)%名稱:基本粒子群算法%初始格式化clearall;%清除所有變量clc;%清屏formatlong;%將數(shù)據(jù)顯示為長整形科學(xué)計數(shù)%給定初始條條件N=40;%3初始化群體個數(shù)D=10;%初始化群體維數(shù)T=100;%初始化群體最迭代次數(shù)c1=1.1;%學(xué)習因子1c2=2;%學(xué)習因子2w1=1.2;%慣性權(quán)重w2=1.5;%慣性權(quán)重eps=10^(-6);%設(shè)置精度(在已知最小值的時候用)--%初始化種群個體(限定位置和速度)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;%初始化個體最優(yōu)位置和最優(yōu)值p1=x1;pbest1=ones(N,1);fori=1:Npbest1(i)=fitness(x1(i,:),D);end%初始化全局最優(yōu)位置和最優(yōu)值g1=1000*ones(1,D);gbest1=1000;fori=1:Nif(pbest1(i)<gbest1)g1=p1(i,:);gbest1=pbest1(i);endendgb1=ones(1,T);%浸入主循環(huán),按照公式依次迭代直到滿足精度或者迭代次數(shù)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('迭代次數(shù)');ylabel('適應(yīng)度值');subplot(1,2,2)%初始化種群個體(在此限定速度和位置)x2=x;v2=v;%初始化種群個體最有位置和最優(yōu)解p2=x2;pbest2=ones(N,1);fori=1:Npbest2(i)=fitness(x2(i,:),D);end%初始化種全局最有位置和最優(yōu)解g2=1000*ones(1,D);gbest2=1000;fori=1:Nif(pbest2(i)<gbest2)g2=p2(i,:);gbest2=pbest2(i);endendgb2=ones(1,T);%浸入主循環(huán),按照公式依次迭代直到滿足精度或者迭代次數(shù)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('迭代次數(shù)');ylabel('適應(yīng)度值');b)適應(yīng)度函數(shù)%適應(yīng)度函數(shù)(fitness.m)functionresult=fitness(x,D)sum=0;fori=1:Dsum=sum+x(i)^2;endresult=sum;%程序5程序5對,對分別取,隨筆其迭代影響a)%主函數(shù)源程序(main.m)%基本粒子群算法(particleswarmoptimization)%名稱:基本粒子群算法%初始格式化clearall;%清除所有變量clc;%清屏formatlong;%將數(shù)據(jù)顯示為長整形科學(xué)計數(shù)%給定初始條條件N=40;%3初始化群體個數(shù)D=10;%初始化群體維數(shù)T=100;%初始化群體最迭代次數(shù)c1=1.1;%學(xué)習因子1c2=2;%學(xué)習因子2w1=1.2;%慣性權(quán)重w2=0;%慣性權(quán)重eps=10^(-6);%設(shè)置精度(在已知最小值的時候用)--%初始化種群個體(限定位置和速度)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;%初始化個體最優(yōu)位置和最優(yōu)值p1=x1;pbest1=ones(N,1);fori=1:Npbest1(i)=fitness(x1(i,:),D);end%初始化全局最優(yōu)位置和最優(yōu)值g1=1000*ones(1,D);gbest1=1000;fori=1:Nif(pbest1(i)<gbest1)g1=p1(i,:);gbest1=pbest1(i);endendgb1=ones(1,T);%浸入主循環(huán),按照公式依次迭代直到滿足精度或者迭代次數(shù)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('迭代次數(shù)');ylabel('適應(yīng)度值');subplot(1,2,2)%初始化種群個體(在此限定速度和位置)x2=x;v2=v;%初始化種群個體最有位置和最優(yōu)解p2=x2;pbest2=ones(N,1);fori=1:Npbest2(i)=fitness(x2(i,:),D);end%初始化種全局最有位置和最優(yōu)解g2=1000*ones(1,D);gbest2=1000;fori=1:Nif(pbest2(i)<gbest2)g2=p2(i,:);gbest2=pbest2(i);endendgb2=ones(1,T);%浸入主循環(huán),按照公式依次迭代直到滿足精度或者迭代次數(shù)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('迭代次數(shù)');ylabel('適應(yīng)度值');b)適應(yīng)度函數(shù)%適應(yīng)度函數(shù)(fitness.m)functionresult=fitness(x,D)sum=0;fori=1:Dsum=sum+x(i)^2;endresult=sum;程序6標準粒子群a)%主函數(shù)源程序(main.m)%基本粒子群算法(particleswarmoptimization)%名稱:基本粒子群算法%初始格式化clearall;%清除所有變量clc;%清屏formatlong;%將數(shù)據(jù)顯示為長整形科學(xué)計數(shù)%給定初始條條件N=40;%3初始化群體個數(shù)D=10;%初始化群體維數(shù)T=100;%初始化群體最迭代次數(shù)c1=2;%學(xué)習因子1c2=2;%學(xué)習因子2w=1.2;%慣性權(quán)重eps=10^(-6);%設(shè)置精度(在已知最小值的時候用)%初始化種群個體(限定位置和速度)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)%初始化群體個體最有位置和最優(yōu)解p=x;pbest=ones(N,1);fori=1:Npbest(i)=fitness(x(i,:),D);end%初始化全局最優(yōu)位置和最優(yōu)解g=1000*ones(1,D);gbest=1000;fori=1:Nif(pbest(i)<gbest)g=p(i,:);gbest=pbest(i);endendgb=ones(1,T);%進入主循環(huán),按照公式依次迭代,直到滿足精度要求--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('迭代次數(shù)');ylabel('適應(yīng)值');%適應(yīng)度函數(shù)functionresult=fitness(x,D)sum=0;fori=1:Dsum=sum+x(i)^2;endresult=sum;%程序6程序6對,對分別取,隨筆其迭代影響a)%主函數(shù)源程序(main.m)%基本粒子群算法(particleswarmoptimization)%名稱:基本粒子群算法%初始格式化clearall;%清除所有變量clc;%清屏formatlong;%將數(shù)據(jù)顯示為長整形科學(xué)計數(shù)%給定初始條條件N=40;%3初始化群體個數(shù)D=10;%初始化群體維數(shù)T=100;%初始化群體最迭代次數(shù)c1=1.1;%學(xué)習因子1c2=2;%學(xué)習因子2w1=0.4%慣性權(quán)重1w2=0.8%慣性權(quán)重2w3=1.2%慣性權(quán)重3w4=1.4%慣性權(quán)重4w5=1.6%慣性權(quán)重5eps=10^(-6);%設(shè)置精度(在已知最小值的時候用)--%初始化種群個體(限定位置和速度)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;%初始化個體最優(yōu)位置和最優(yōu)值p1=x1;pbest1=ones(N,1);fori=1:Npbest1(i)=fitness(x1(i,:),D);end%初始化全局最優(yōu)位置和最優(yōu)值g1=1000*ones(1,D);gbest1=1000;fori=1:Nif(pbest1(i)<gbest1)g1=p1(i,:);gbest1=pbest1(i);endendgb1=ones(1,T);%浸入主循環(huán),按照公式依次迭代直到滿足精度或者迭代次數(shù)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('迭代次數(shù)');ylabel('適應(yīng)度值');figuresubplot(1,2,2)%初始化種群個體(在此限定速度和位置)X3=xV3=v;%初始化種群個體最有位置和最優(yōu)解P3=x3;Pbest3=ones(N,1);fori=1:Npbest3(i)=fitness(x3(i,:),D);end%初始化種全局最有位置和最優(yōu)解g3=1000*ones(1,D);gbest3=1000;fori=1:Nif(pbest3(i)<gbest3)g3=p3(i,:);gbes3.=pbest3(i);endendgb3=ones(1,T);%浸入主循環(huán),按照公式依次迭代直到滿足精度或者迭

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論