6种粒子群算法程序(20210109173159)

  • 格式:pdf
  • 大小:36.76 KB
  • 文档页数:33

下载文档原格式

  / 33
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

%------初始化种群个体(在此限定速度和位置) -----------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
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);
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('初始位置 ')
tInfo=strcat( '第',char(j+48),'维');
subplot(D/2,2,j) end plot(x(:,j),'b*' );grid on xlabel('粒子 ') ylabel('初始速度 ') tInfo=strcat( '第,char(j+48),'维'); if(j>9) tInfo=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 %------初始化全局最优位置和最优值 --------------g1=1000*ones(1,D); gbest1=1000; for i=1:N if(pbest1(i)<gbest1)
%将数据显示为长整形科学计数
%------给定初始条条件 ------------------
N=40;
%3初始化群体个数
源自文库D=10;
%初始化群体维数
T=100;
%初始化群体最迭代次数
c11=2;
%学习因子 1
c21=2;
%学习因子 2
c12=0;
c22=2;
w=;
%惯性权重
eps=10^(-6);
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)<gbest2) g2=p2(j,:);
%清屏
format long;
%将数据显示为长整形科学计数
%------给定初始条条件 ------------------
N=40;
%3初始化群体个数
D=10;
%初始化群体维数
T=100;
%初始化群体最迭代次数
c11=2;
%学习因子 1
c21=2;
%学习因子 2
c12=;
c22=;
w=;
%惯性权重
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('初始位置 ') tInfo=strcat( '第',char(j+48),'维'); if(j>9) 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)
程序 1 当 c11 c21 2 , c12 c22 1.5 , w 1.2 。
a)% 主函数源程序()
%------ 基本粒子群算法 (particle swarm optimization )
%------ 名称: 基本粒子群算法
%------ 初始格式化
clear all;
%清除所有变量
clc;
subplot((D+1)/2,2,j) else
subplot(D/2,2,j) end plot(x(:,j),'b*' );grid on xlabel('粒子 ') ylabel('初始速度 ') tInfo=strcat( '第,char(j+48),'维'); if(j>9) tInfo=strcat( '第',char(floor(j/10)+48), char(rem(j,10)+48),'维); end title(tInfo) end figure(3) %第一个图 subplot(1,2,1)
gbest2=pbest2(j); end v2(j,:)=w*v2(j,:)+c12*rand*(p2(j,:)-x2(j,:))+c22*rand*(g2-x2(j,:)); x2(j,:)=x2(j,:)+v2(j,:); end gb2(i)=gbest2; end plot(gb2) TempStr=sprintf('c1= %g ,c2=%g,c' 12,c22); title(TempStr); xlabel('迭代次数 '); ylabel('适应度值 '); b)适应度函数 %适应度函数() function result=fitness(x,D) sum=0; for i=1:D sum=sum+x(i)^2; end result=sum; 程序 2
%设置精度(在已知最小值的时候用)
%------初始化种群个体(限定位置和速度) ------------
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
%------显示群位置 ----------------------
end gb1(i)=gbest1; end
plot(gb1) TempStr=sprintf('c1= %g ,c2=%g,c' 11,c21); title(TempStr); xlabel('迭代次数 '); ylabel('适应度值 '); %第二个图 subplot(1,2,2) %-----初始化种群个体(在此限定速度和位置) -----------x2=x; v2=v; %-----初始化种群个体最有位置和 最优解 ----------p2=x2; pbest2=ones(N,1); for i=1:N
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); end
v2(j,:)=w*v2(j,:)+c12*rand*(p2(j,:)-x2(j,:))+c22*rand*(g2-x2(j,:)); x2(j,:)=x2(j,:)+v2(j,:);
end gb2(i)=gbest2; end plot(gb2) TempStr=sprintf('c1= %g ,c2=%g,c' 12,c22); title(TempStr); xlabel('迭代次数 '); ylabel('适应度值 '); b)适应度函数 %适应度函数() function result=fitness(x,D) sum=0; for i=1:D sum=sum+x(i)^2;
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); end v1(j,:)=w*v1(j,:)+c11*rand*(p1(j,:)-x1(j,:))+c21*rand*(g1-x1(j,:)); x1(j,:)=x1(j,:)+v1(j,:);
eps=10^(-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; %随机初始化速度
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)<gbest2) g2=p2(j,:); gbest2=pbest2(j); end
当 c11 c21 2 于 c12 0, c22 2, w 1.2 对比
a)%主函数源程序()
%------基本粒子群算法 ( particle swarm optimization )
%------名称: 基本粒子群算法
%------初始格式化
clear all;
%清除所有变量
clc;
%清屏
format long;
if(j>9)
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
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,c' 11,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 %-----初始化种全局最有位置和 最优解 -----g2=1000*ones(1,D);