欢迎来到天天文库
浏览记录
ID:58450043
大小:17.50 KB
页数:2页
时间:2020-09-03
《带压缩因子的粒子群算法.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、主程序:%------基本粒子群优化算法(ParticleSwarmOptimization)-----------%------名称:带压缩因子的粒子群优化算法(PSO)%------作用:求解优化问题%------说明:全局性,并行性,高效的群体智能算法,提高解的精度%------初始格式化--------------------------------------------------clearall;clc;formatlong;%------给定初始化条件------------------------------
2、----------------%c1=1.4962;%学习因子1c1=3;c2=2;%c2=1.4962;%学习因子2w=0.7298;%惯性权重MaxDT=100;%最大迭代次数D=6;%搜索空间维数(未知数个数)N=20;%初始化群体个体数目eps=10^(-6);%设置精度(在已知最小值时候用)phi=c1+c2;ifphi<=4disp('c1与c2的和必须大于4!');xm=NaN;fv=NaN;return;end%------初始化种群的个体(可以在这里限定位置和速度的范围)------------fori=1
3、:Nforj=1:Dx(i,j)=randn;%随机初始化位置v(i,j)=randn;%随机初始化速度endend%------先计算各个粒子的适应度,并初始化Pi和Pg----------------------figure(3)fori=1:NP(i)=fitness2(x(i,:));y(i,:)=x(i,:);endPg=x(N,:);%Pg为全局最优fori=1:(N-1)iffitness2(x(i,:))4、满足精度要求------------fort=1:MaxDTfori=1:Nksi=2/abs(2-phi-sqrt(phi^2-4*phi));%ksi为压缩因子v(i,:)=w*v(i,:)+c1*rand*(y(i,:)-x(i,:))+c2*rand*(Pg-x(i,:));v(i,:)=ksi*v(i,:);x(i,:)=x(i,:)+v(i,:);iffitness2(x(i,:))5、(i,:);endendPbest(t)=fitness2(Pg);endplot(Pbest)TempStr=sprintf('c1=%g,c2=%g',c1,c2);title(TempStr);xlabel('迭代次数');ylabel('适应度值');%------最后给出计算结果disp('*************************************************************')disp('函数的全局最优位置为:')Solution=Pgdisp('最后得到的优化极值为:')Res6、ult=fitness2(Pg)disp('*************************************************************')功能函数:适应度函数源程序(fitness2.m)functionresult=fitness2(x)sum=0;D=6;fori=1:Dsum=sum+x(i)^2;endresult=sum;
4、满足精度要求------------fort=1:MaxDTfori=1:Nksi=2/abs(2-phi-sqrt(phi^2-4*phi));%ksi为压缩因子v(i,:)=w*v(i,:)+c1*rand*(y(i,:)-x(i,:))+c2*rand*(Pg-x(i,:));v(i,:)=ksi*v(i,:);x(i,:)=x(i,:)+v(i,:);iffitness2(x(i,:))
5、(i,:);endendPbest(t)=fitness2(Pg);endplot(Pbest)TempStr=sprintf('c1=%g,c2=%g',c1,c2);title(TempStr);xlabel('迭代次数');ylabel('适应度值');%------最后给出计算结果disp('*************************************************************')disp('函数的全局最优位置为:')Solution=Pgdisp('最后得到的优化极值为:')Res
6、ult=fitness2(Pg)disp('*************************************************************')功能函数:适应度函数源程序(fitness2.m)functionresult=fitness2(x)sum=0;D=6;fori=1:Dsum=sum+x(i)^2;endresult=sum;
此文档下载收益归作者所有