这个程序就是最基本的粒子群优化算法程序,用Matlab实现,非常简单。只有几十行代码。正所谓一分钱一分货啊,优化效果不总是令人满意。我还有几个改进的粒子群优化算法版本,这一段时间会陆续发上来。下面是主函数的源程序,优化函数则以m文件的形式放在fitness.m里面,对不同的优化函数只要修改fitness.m就可以了通用性很强。主函数源程序(main.m)%------基本粒子群优化算法(ParticleSwarmOptimization)-----------%------名称:基本粒子群优化算法(PSO)%------作用:求解优化问题%------说明:全局性,并行性,高效的群体智能算法%------作者:孙明杰(dreamsun2001@126.com)%------单位:中国矿业大学理学院计算数学硕2005%------时间:2006年8月17日CopyRight@dReAmsUn%------------------------------------------------------------------%------初始格式化--------------------------------------------------clearall;clc;formatlong;%------给定初始化条件----------------------------------------------c1=1.4962;%学习因子1c2=1.4962;%学习因子2w=0.7298;%惯性权重MaxDT=1000;%最大迭代次数D=10;%搜索空间维数(未知数个数)N=40;%初始化群体个体数目eps=10^(-6);%设置精度(在已知最小值时候用)%------初始化种群的个体(可以在这里限定位置和速度的范围)------------fori=1:Nforj=1:Dx(i,j)=randn;%随机初始化位置v(i,j)=randn;%随机初始化速度endend%------先计算各个粒子的适应度,并初始化Pi和Pg----------------------fori=1:Np(i)=fitness(x(i,:),D);y(i,:)=x(i,:);endpg=x(1,:);%Pg为全局最优fori=2:Niffitness(x(i,:),D)fitness(pg,D)pg=x(i,:);endend%------进入主要循环,按照公式依次迭代,直到满足精度要求------------fort=1:MaxDTfori=1:Nv(i,:)=w*v(i,:)+c1*rand*(y(i,:)-x(i,:))+c2*rand*(pg-x(i,:));x(i,:)=x(i,:)+v(i,:);iffitness(x(i,:),D)p(i)p(i)=fitness(x(i,:),D);y(i,:)=x(i,:);endifp(i)fitness(pg,D)pg=y(i,:);endendPbest(t)=fitness(pg,D);end%------最后给出计算结果disp('*************************************************************')disp('函数的全局最优位置为:')Solution=pg'disp('最后得到的优化极值为:')Result=fitness(pg,D)disp('*************************************************************')%------算法结束---DreamSunGL&HF-----------------------------------适应度函数源程序(fitness.m)functionresult=fitness(x,D)sum=0;fori=1:Dsum=sum+x(i)^2;endresult=sum;