
粒子群算法matlab(算法已经调试)(共33页).docx
33页精选优质文档-----倾情为你奉上程序1当,,a)%主函数源程序(main.m)%------基本粒子群算法 (particle swarm optimization)%------名称: 基本粒子群算法%------初始格式化clear all; %清除所有变量clc; %清屏format long; %将数据显示为长整形科学计数%------给定初始条条件------------------N=40; %初始化群体个数D=10; %初始化群体维数T=100; %初始化群体最迭代次数c11=2; %学习因子1c21=2; %学习因子2c12=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; %随机初始化速度 endend%------显示群位置----------------------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)endfigure(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)
