当前位置:首页 >> 信息与通信 >>

6种粒子群算法程序


程序 1 当 c11 ? c21 ? 2 , c12 ? c22 ? 1.5 , w ? 1.2 。 a)%主函数源程序(main.m) %------基本粒子群算法(particle swarm optimization) %------名称:基本粒子群算法 %------初始格式化 clear all; clc; format long; N=40; D=10; T=100;

c11=2; c21=2; c12=1.5; c22=1.5; w=1.2; 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; end end %------显示群位置---------------------figure(1) for j=1:D if(rem(D,2)>0) %随机初始化位置 %随机初始化速度 %惯性权重 %设置精度(在已知最小值的时候用) %清除所有变量 %清屏 %将数据显示为长整形科学计数 %? 初始化群体个数 %初始化群体维数 %初始化群体最迭代次数 %学习因子1 %学习因子2

%------给定初始条条件------------------

%------初始化种群个体(限定位置和速度)------------

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) 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)

%------初始化种群个体(在此限定速度和位置)-----------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) 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,:); end gb1(i)=gbest1; end

plot(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); 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); 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 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',c12,c22); title(TempStr); xlabel('迭代次数'); ylabel('适应度值'); b)适应度函数 %适应度函数(fitness.m) function result=fitness(x,D) sum=0; for i=1:D sum=sum+x(i)^2; end result=sum; 程序 2 当 c11 ? c21 ? 2 于 c12 ? 0, c22 ? 2, w ? 1.2 对比 a)%主函数源程序(main.m) %------基本粒子群算法(particle swarm optimization) %------名称:基本粒子群算法 %------初始格式化 clear all; clc; format long; N=40; D=10; T=100; c11=2; c21=2; %清除所有变量 %清屏 %将数据显示为长整形科学计数 %? 初始化群体个数 %初始化群体维数 %初始化群体最迭代次数 %学习因子1 %学习因子2

%------给定初始条条件------------------

c12=0; c22=2; w=1.2; 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; 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) %随机初始化位置 %随机初始化速度 %惯性权重 %设置精度(在已知最小值的时候用)

%------初始化种群个体(限定位置和速度)------------

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) %------初始化种群个体(在此限定速度和位置)-----------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) 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,:); end gb1(i)=gbest1; end plot(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); 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); 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 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',c12,c22); title(TempStr); xlabel('迭代次数'); ylabel('适应度值'); b)适应度函数 %适应度函数(fitness.m) function result=fitness(x,D) sum=0; for i=1:D sum=sum+x(i)^2;

end result=sum;

程序 3
当 c11 ? c21 ? 2, w ? 1.2 于 c12 ? 2, c22 ? 0, w ? 1.2 对比 a)%主函数源程序(main.m) %------基本粒子群算法(particle swarm optimization) %------名称:基本粒子群算法 %------初始格式化 clear all; clc; format long; N=40; D=10; T=100; c11=2; c21=2; c12=2; c22=0; w=1.2; 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; end end %------显示群位置---------------------figure(1) for j=1:D if(rem(D,2)>0) %随机初始化位置 %随机初始化速度 %惯性权重 %设置精度(在已知最小值的时候用) %清除所有变量 %清屏 %将数据显示为长整形科学计数 %? 初始化群体个数 %初始化群体维数 %初始化群体最迭代次数 %学习因子1 %学习因子2

%------给定初始条条件------------------

%------初始化种群个体(限定位置和速度)------------

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) 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)

%------初始化种群个体(在此限定速度和位置)-----------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) 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,:); end gb1(i)=gbest1; end

plot(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); 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); 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 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',c12,c22); title(TempStr); xlabel('迭代次数'); ylabel('适应度值'); b)适应度函数 %适应度函数(fitness.m) function result=fitness(x,D) sum=0; for i=1:D sum=sum+x(i)^2; end result=sum;

程序 4
对 c1 ? c2 , w1 ? w2 分别对其取值 c1 ? 1.1 , c2 ? 2 , w1 ? 1.2 , w2 ? 1.5 测试函 数。 a)%主函数源程序(main.m) %------基本粒子群算法(particle swarm optimization) %------名称:基本粒子群算法 %------初始格式化 clear all; clc; format long; N=40; D=10; T=100; %清除所有变量 %清屏 %将数据显示为长整形科学计数 %? 初始化群体个数 %初始化群体维数 %初始化群体最迭代次数

%------给定初始条条件------------------

c1=1.1; c2=2; w1=1.2; w2=1.5; 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; end end

%学习因子1 %学习因子2 %惯性权重 %惯性权重 %设置精度(在已知最小值的时候用)--

%--------初始化种群个体(限定位置和速度)------------

%随机初始化位置 %随机初始化速度

%------显示群位置---------------------figure(1) for j=1:D if(rem(D,2)>0) subplot((D+1)/2,2,j) else subplot(D/2,2,j) 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)

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) %------初始化种群个体(在此限定速度和位置)-----------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) 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,:)=w1*v1(j,:)+c1*rand*(p1(j,:)-x1(j,:))+c2*rand*(g1-x1(j,:)); x1(j,:)=x1(j,:)+v1(j,:); end gb1(i)=gbest1; end plot(gb1) TempStr=sprintf('w= %g ',w1); 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); 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 v2(j,:)=w2*v2(j,:)+c1*rand*(p2(j,:)-x2(j,:))+c2*rand*(g2-x2(j,:)); x2(j,:)=x2(j,:)+v2(j,:); end gb2(i)=gbest2; end plot(gb2) TempStr=sprintf('w= %g ',w2); title(TempStr); xlabel('迭代次数'); ylabel('适应度值'); b)适应度函数 %适应度函数(fitness.m) function result=fitness(x,D) sum=0; for i=1:D sum=sum+x(i)^2; end result=sum;

程序5
对 c1 ? c2 ? 2 ,对分别取 w1 ? 1.2 , w2 ? 0 随笔其迭代影响 a)%主函数源程序(main.m) %------基本粒子群算法(particle swarm optimization) %------名称:基本粒子群算法 %------初始格式化 clear all; clc; format long; N=40; D=10; T=100; c1=1.1; c2=2; w1=1.2; w2=0; 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; 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) %随机初始化位置 %随机初始化速度 %清除所有变量 %清屏 %将数据显示为长整形科学计数 %? 初始化群体个数 %初始化群体维数 %初始化群体最迭代次数 %学习因子1 %学习因子2 %惯性权重 %惯性权重 %设置精度(在已知最小值的时候用)--

%------给定初始条条件------------------

%--------初始化种群个体(限定位置和速度)------------

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) 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) %------初始化种群个体(在此限定速度和位置)-----------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) 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,:)=w1*v1(j,:)+c1*rand*(p1(j,:)-x1(j,:))+c2*rand*(g1-x1(j,:)); x1(j,:)=x1(j,:)+v1(j,:); end gb1(i)=gbest1; end plot(gb1) TempStr=sprintf('w= %g ',w1); 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); 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 v2(j,:)=w2*v2(j,:)+c1*rand*(p2(j,:)-x2(j,:))+c2*rand*(g2-x2(j,:)); x2(j,:)=x2(j,:)+v2(j,:); end

gb2(i)=gbest2; end plot(gb2) TempStr=sprintf('w= %g ',w2); title(TempStr); xlabel('迭代次数'); ylabel('适应度值'); b)适应度函数 %适应度函数(fitness.m) function result=fitness(x,D) sum=0; for i=1:D sum=sum+x(i)^2; end result=sum; 程序 6 标准粒子群 a)%主函数源程序(main.m) %------基本粒子群算法(particle swarm optimization) %------名称:基本粒子群算法 %------初始格式化 clear all; clc; format long; N=40; D=10; T=100; c1=2; c2=2; w=1.2; eps=10^(-6); x=zeros(N,D); v=zeros(N,D); %清除所有变量 %清屏 %将数据显示为长整形科学计数 %? 初始化群体个数 %初始化群体维数 %初始化群体最迭代次数 %学习因子1 %学习因子2 %惯性权重 %设置精度(在已知最小值的时候用)

%------给定初始条条件------------------

%------初始化种群个体(限定位置和速度)------------

for i=1:N for j=1:D x(i,j)=randn; v(i,j)=randn; 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) 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) %------初始化群体个体最有位置和最优解----p=x; pbest=ones(N,1); for i=1:N pbest(i)=fitness(x(i,:),D); end %---初始化全局最优位置和最优解----------------------g=1000*ones(1,D); gbest=1000; for i=1:N if(pbest(i)<gbest) g=p(i,:); gbest=pbest(i); end end gb=ones(1,T); %-----进入主循环,按照公式依次迭代,直到满足精度要求-for i=1:T for j=1:N if (fitness(x(j,:),D)<pbest(j)) p(j,:)=x(j,:); pbest(j)=fitness(x(j,:),D); end if(pbest(j)<gbest) g=p(j,:); gbest=pbest(j); end v(j,:)=w*v(j,:)+c1*rand*(p(j,:)-x(j,:))+c2*rand*(g-x(j,:)); x(j,:)=x(j,:)+v(j,:);

end gb(i)=gbest; end plot(gb) TempStr=sprintf('w= %g ',w); title(TempStr); xlabel('迭代次数'); ylabel('适应值'); %适应度函数 function result=fitness(x,D) sum=0; for i=1:D sum=sum+x(i)^2; end result=sum; 程序6 对 c1 ? c2 ? 2 ,对分别取 w1 ? 1.2 , w2 ? 0 随笔其迭代影响 a)%主函数源程序(main.m) %------基本粒子群算法(particle swarm optimization) %------名称:基本粒子群算法 %------初始格式化 clear all; clc; format long; N=40; D=10; T=100; c1=1.1; c2=2; w1=0.4%惯性权重1 w2=0.8%惯性权重2 w3=1.2 w4=1.4 %惯性权重3 %惯性权重4 %清除所有变量 %清屏 %将数据显示为长整形科学计数 %? 初始化群体个数 %初始化群体维数 %初始化群体最迭代次数 %学习因子1 %学习因子2

%------给定初始条条件------------------

w5=1.6 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; end end

%惯性权重5 %设置精度(在已知最小值的时候用)--

%--------初始化种群个体(限定位置和速度)------------

%随机初始化位置 %随机初始化速度

%------显示群位置---------------------figure(1) for j=1:D if(rem(D,2)>0) subplot((D+1)/2,2,j) else subplot(D/2,2,j) 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) 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) %------初始化种群个体(在此限定速度和位置)-----------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) 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,:)=w1*v1(j,:)+c1*rand*(p1(j,:)-x1(j,:))+c2*rand*(g1-x1(j,:)); x1(j,:)=x1(j,:)+v1(j,:); end gb1(i)=gbest1; end plot(gb1) TempStr=sprintf('w= %g ',w1); title(TempStr); xlabel('迭代次数'); ylabel('适应度值');
figure

subplot(1,2,2) %-----初始化种群个体(在此限定速度和位置)-----------X3=x V3=v; %-----初始化种群个体最有位置和最优解----------P3=x3; Pbest3=ones(N,1); for i=1:N pbest3(i)=fitness(x3(i,:),D); end %-----初始化种全局最有位置和最优解-----g3=1000*ones(1,D); gbest3=1000; for i=1:N if(pbest3(i)<gbest3)

g3=p3(i,:); gbes3.=pbest3(i); end end gb3=ones(1,T); %------浸入主循环,按照公式依次迭代直到满足精度或者迭代次数--for i=1:T for j=1:N if (fitness(x3(j,:),D)<pbest3(j)) p3(j,:)=x3(j,:); pbest3(j)=fitness(x3(j,:),D); end if(pbest3(j)<gbest3) g3=p3(j,:); gbest3=pbest3(j); end v3(j,:)=w3*v3(j,:)+c1*rand*(p3(j,:)-x3(j,:))+c2*rand*(g3-x3(j,:)); x3(j,:)=x3(j,:)+v3(j,:); end gb3(i)=gbest3; end plot(gb3) TempStr=sprintf('w= %g ',w3); title(TempStr); xlabel('迭代次数'); ylabel('适应度值');
figure

subplot(1,2,2) %-----初始化种群个体(在此限定速度和位置)-----------X4=x; V4=v; %-----初始化种群个体最有位置和最优解----------P4=x4; Pbest4=ones(N,1); for i=1:N

pbest4(i)=fitness(x4(i,:),D); end %-----初始化种全局最有位置和最优解-----g4=1000*ones(1,D); gbest4=1000; for i=1:N if(pbes42(i)<gbest4) g4=p4(i,:); gbes4=pbest4(i); end end gb4=ones(1,T); %------浸入主循环,按照公式依次迭代直到满足精度或者迭代次数--for i=1:T for j=1:N if (fitness(x4(j,:),D)<pbest4(j)) p4(j,:)=x4(j,:); pbest4(j)=fitness(x4(j,:),D); end if(pbest4(j)<gbest4) g4=p4(j,:); gbest4=pbest4(j); end v4(j,:)=w4*v4(j,:)+c1*rand*(p4(j,:)-x4(j,:))+c2*rand*(g4-x4(j,:)); x4(j,:)=x4(j,:)+v4(j,:); end gb4(i)=gbest4; end plot(gb4) TempStr=sprintf('w= %g ',w4); title(TempStr); xlabel('迭代次数'); ylabel('适应度值');
figure

subplot(1,2,2)

%-----初始化种群个体(在此限定速度和位置)-----------X5=x; V5=v; %-----初始化种群个体最有位置和最优解----------P5=x5; Pbest5=ones(N,1); for i=1:N pbest5(i)=fitness(x5(i,:),D); end %-----初始化种全局最有位置和最优解-----g5=1000*ones(1,D); gbest5=1000; for i=1:N if(pbes5i)<gbest5) g4=p4(i,:); gbes5=pbes5 (i); end end gb5=ones(1,T); %------浸入主循环,按照公式依次迭代直到满足精度或者迭代次数--for i=1:T for j=1:N if (fitness(x5(j,:),D)<pbest5(j)) p5(j,:)=x5(j,:); pbest5(j)=fitness(x5(j,:),D); end if(pbest5(j)<gbest5) g5=p5(j,:); gbest4=pbest4(j); end v5(j,:)=w5*v5(j,:)+c1*rand*(p5(j,:)-x5(j,:))+c2*rand*(g5-x5(j,:)); x5(j,:)=x5(j,:)+v5(j,:); end gb5(i)=gbest5; end

plot(gb5) TempStr=sprintf('w= %g ',w5); title(TempStr); xlabel('迭代次数'); ylabel('适应度值'); b)适应度函数 %适应度函数(fitness.m) function result=fitness(x,D) sum=0; for i=1:D sum=sum+x(i)^2; end result=sum;


相关文章:
6种粒子群算法程序
6种粒子群算法程序_信息与通信_工程科技_专业资料 暂无评价|0人阅读|0次下载|举报文档6种粒子群算法程序_信息与通信_工程科技_专业资料。程序 1 当 c11 ? c21...
粒子群算法源程序
粒子群算法源程序_机械/仪表_工程科技_专业资料。粒子...可看作是一外部的记忆体,存储每个粒子历史最优值...粒子群算法的源代码 6页 免费 粒子群算法(优化算法...
粒子群算法程序
粒子群算法改进及其应用-硕... 63页 免费如要投诉违规内容,请到百度文库投诉中心;如要提出功能问题或意见建议,请点击此处进行反馈。 ...
粒子群优化算法介绍及matlab程序
计算两点函数值就是粒子群算法中的适应值,计算用的函数就是粒子群算法中的...'); 6 end [row,colum]=size(ParticleScope); if row~=ParticleSize||...
粒子群算法实例
选取一三维函数,利用matlab编写粒子群算法程序来...本文选0.6。 (4)加速因子 加速常数 c 2 和 c...
基本粒子群算法的matlab源程序
基本粒子群算法的matlab源程序_工学_高等教育_教育...(-6); %学习因子 1 %学习因子 2 %惯性权重 %...(未知数数) %初始化群体个体数目 %设置精度(在...
粒子群算法程序(各段路的速度不同)
粒子群算法程序(各段路的速度不同)_信息与通信_工程科技_专业资料。1. 用...各城市进行顺序标号 max_text={'0','1','2','3','4','5','6',...
粒子群算法原理及在函数优化中的应用(附程序)
('NDparabola'); 以上只是绘制测试函数的m文件, 其目的在于对测试函数有一...粒子群优化算法概述 6页 免费 粒子群_Matlab程序代码 8页 免费 基于粒子群算法...
粒子群优化算法Matlab源程序
(-6); %学习因子 1 %学习因子 2 %惯性权重 %最大迭代次数 %搜索空间维数...(i,j)=randn; %随机初始化速度 end end %---先计算各个粒子的适应度,并初...
粒子群优化算法源程序
粒子群优化算法源程序_计算机软件及应用_IT/计算机_...位置的更新是基于式(5)与(6) ,并生成新的粒子...粒子群优化算法研究进展 13页 免费 一种新的混合粒子...
更多相关标签:
粒子群算法matlab程序 | 多目标粒子群算法程序 | 粒子群算法程序 | 粒子群算法c程序 | 粒子群优化算法程序 | 粒子群算法源程序 | 粒子群算法 | 粒子群优化算法 |