6种粒子群算法程序精品文档完整版Word文档下载推荐.docx
《6种粒子群算法程序精品文档完整版Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《6种粒子群算法程序精品文档完整版Word文档下载推荐.docx(39页珍藏版)》请在冰豆网上搜索。
初始化群体个数
D=10;
%初始化群体维数
T=100;
%初始化群体最迭代次数
c11=2;
%学习因子1
c21=2;
%学习因子2
c12=1.5;
c22=1.5;
w=1.2;
%惯性权重
eps=10^(-6);
%设置精度(在已知最小值的时候用)
%------初始化种群个体(限定位置和速度)------------
x=zeros(N,D);
v=zeros(N,D);
fori=1:
N
forj=1:
D
x(i,j)=randn;
%随机初始化位置
v(i,j)=randn;
%随机初始化速度
end
end
%------显示群位置----------------------
figure
(1)
forj=1:
D
if(rem(D,2)>
0)
subplot((D+1)/2,2,j)
else
subplot(D/2,2,j)
end
plot(x(:
j),'
b*'
);
gridon
xlabel('
粒子'
)
ylabel('
初始位置'
tInfo=strcat('
第'
char(j+48),'
维'
if(j>
9)
char(floor(j/10)+48),
char(rem(j,10)+48),'
title(tInfo)
%------显示种群速度
figure
(2)
初始速度'
第,char(j+48),'
char(floor(j/10)+48),
维);
figure(3)
%第一个图
subplot(1,2,1)
%------初始化种群个体(在此限定速度和位置)------------
x1=x;
v1=v;
%------初始化个体最优位置和最优值---
p1=x1;
pbest1=ones(N,1);
pbest1(i)=fitness(x1(i,:
),D);
%------初始化全局最优位置和最优值---------------
g1=1000*ones(1,D);
gbest1=1000;
if(pbest1(i)<
gbest1)
g1=p1(i,:
gbest1=pbest1(i);
gb1=ones(1,T);
%-----浸入主循环,按照公式依次迭代直到满足精度或者迭代次数---
T
if(fitness(x1(j,:
),D)<
pbest1(j))
p1(j,:
)=x1(j,:
pbest1(j)=fitness(x1(j,:
if(pbest1(j)<
g1=p1(j,:
gbest1=pbest1(j);
v1(j,:
)=w*v1(j,:
)+c11*rand*(p1(j,:
)-x1(j,:
))+c21*rand*(g1-x1(j,:
));
x1(j,:
)+v1(j,:
gb1(i)=gbest1;
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);
pbest2(i)=fitness(x2(i,:
%-----初始化种全局最有位置和最优解------
g2=1000*ones(1,D);
gbest2=1000;
if(pbest2(i)<
gbest2)
g2=p2(i,:
gbest2=pbest2(i);
gb2=ones(1,T);
%------浸入主循环,按照公式依次迭代直到满足精度或者迭代次数---
if(fitness(x2(j,:
pbest2(j))
p2(j,:
)=x2(j,:
pbest2(j)=fitness(x2(j,:
if(pbest2(j)<
g2=p2(j,:
gbest2=pbest2(j);
v2(j,:
)=w*v2(j,:
)+c12*rand*(p2(j,:
)-x2(j,:
))+c22*rand*(g2-x2(j,:
x2(j,:
)+v2(j,:
gb2(i)=gbest2;
plot(gb2)
c12,c22);
b)适应度函数
%适应度函数(fitness.m)
functionresult=fitness(x,D)
sum=0;
sum=sum+x(i)^2;
result=sum;
程序2
于
对比
clc;
c12=0;
c22=2;
v1(j,:
v2(j,:
程序3
c12=2;
c22=0;
程序4
对
分别对其取值
测试函数。
c1=1.1;
c2=2;
w1=1.2;
w2=1.5;
%设置精度(在已知最小值的时候用)--
%--------初始化种群个体(限定位置和速度)------------
%----显示种群速度-----------------
figure(3)
if(