资源描述:
《整数空间粒子群算法MATLAB程序.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、整数空间粒子群算法clearallclcticT=1200;%最大迭代次数PopSize=40;%种群大小c1=2;%学习因子1c2=2;%学习因子2w=0.9;%惯性因子NDim=60;%空间维数fori=1:PopSizeforj=1:NDim%初始化各粒子初始位置,在有效范围内随机选数x(i,j)=round(rand*20)+20;endendvmax=zeros(PopSize,NDim);fori=1:PopSizeforj=1:NDim%初始化各粒子最大速度,使粒子不能越出边界vmax(i,j)=10;endendv=vmax.*rand(PopS
2、ize,NDim);%计算初始各粒子的适应度值fori=1:PopSizefvalue(i)=youhualianxuduo(x(i,:));endpbest=x;%记录各粒子的个体极值点位置fpbest=fvalue;%记录初始个体最佳适应度值[fbestval,index]=min(fvalue);%找出全局极值和相应的序号gbest1=fbestval;g1=x(index,:);%浸入主循环,按照公式依次迭代直到满足迭代次数fori=1:Tforj=1:PopSizeif(youhualianxuduo(x(j,:))3、,:)=x(j,:);fpbest(j)=youhualianxuduo(x(j,:));endif(fpbest(j)x(j,d)a1=0;elsea1=c1*(pbest(j,d)-x(j,d));endifpbest(j,d)>x(j,d)b1=c1*(pbest(j,d)-x(j,d));elseb1=0;endifg1(d)>x(j,d)a2=0;elsea2=c2*(g1(d)-x(j,d));endifg1(d)>x(
4、j,d)b2=c2*(g1(d)-x(j,d));elseb2=0;endR1=randi([a1,b1],1,1);R2=randi([a2,b2],1,1);v(j,d)=round(w*v(j,d))+R1+R2;end%更新速度Vforn=1:PopSize%速度v的限定,最大值为10fork=1:NDimifv(n,k)>10v(n,k)=10;endifv(n,k)<-10v(n,k)=-10;endendendx(j,:)=x(j,:)+v(j,:);%更新位置x%逸出标志forl=1:PopSize%阻止逸出form=1:NDimifx(l,m)
5、<1
6、x(l,m)>40x(l,m)=round(rand*20+20);endendendendw=0.9-i*0.5/Tgb1(i)=gbest1;endfigure(7)plot(gb1);TempStr=sprintf('c1=%g,c2=%g',c1,c2);title(TempStr);xlabel('迭代次数');ylabel('适应度值');toc