粒子群算法matlab(算法已经调试)(优.选)

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

程序1

当22111==c c ,5.12212==c c ,2.1=w 。

a)%主函数源程序(main.m )

%------基本粒子群算法 (particle swarm optimization )

%------名称: 基本粒子群算法

%------初始格式化

clear all ; %清除所有变量

clc; %清屏

format long ; %将数据显示为长整形科学计数

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

N=40; %³初始化群体个数

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

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)

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)

p1(j,:)=x1(j,:);

pbest1(j)=fitness(x1(j,:),D);

end

if(pbest1(j)

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)

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)

p2(j,:)=x2(j,:);

pbest2(j)=fitness(x2(j,:),D);

end

if(pbest2(j)

g2=p2(j,:);

相关文档
最新文档