logo资料库

粒子群算法程序.docx

第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
资料共3页,全文预览结束
求函数最小值
求函数最小值 f(x)  -5.0 2 2 (sin x 1 001.01(   x  2 2 ( x 1 2   x 粒子群算法程序: 主程序: )5.0 )) 2 2 2  10  xi  ,10 i  2,1 %学习因子 1 %学习因子 2 clear all; clc; format long; %------给定初始化条件---------------------------------------------- c1=0.2; c2=0.2; w=0.7; MaxDT=200; D=2; M=50; eps=10^(-6); Y1=10; Y2=-10; %------初始化种群的个体(可以在这里限定位置和速度的范围)------------ for i=1:M %惯性权重 %最大迭代次数 %搜索空间维数(未知数个数) %初始化群体个体数目 %设置精度(在已知最小值时候用) for j=1:D x(i,j)=unifrnd(Y2,Y1); end for j=1:D if x(i,j)>Y1 x(i,j)=Y1; end if x(i,j)
end gbest=x(1,:); %gbest 为全局最优 if fitness(x(i,:)) > fitness(gbest) gbest=x(i,:); for i=2:M end end %------进入主要循环,按照公式依次迭代,直到满足精度要求------------ for t=1:MaxDT time(t)=t; for i=1:M v(i,:)=w*v(i,:)+c1*rand*(xgb(i,:)-x(i,:))+c2*rand*(gbest-x(i,:)); x(i,:)=x(i,:)+v(i,:); for j=1:D if x(i,j)>Y1 x(i,j)=Y1; end if x(i,j)
figure(2) plot(time,yy); xlabel('Times');ylabel('最优个体的函数值'); figure(3) plot(fj(:,1),'*'); grid on figure(4) plot(fj(:,2),'*'); grid on figure(5) plot(fj(:,15),'*'); grid on figure(6) plot(fj(:,200),'*'); grid on %------显示计算结果 disp('*************************************************************') disp('函数的全局最优位置为:') Solution=gbest disp('最后得到的优化极值为:') Result=fitness(gbest) disp('*************************************************************') 子程序如下: function result=fitness(x) sum=0.5-((sin(sqrt((x(1)^2+x(2)^2))))^2-0.5)/(1+0.001*(x(1)^2+x(2)^2)) ^2; result=sum; end
分享到:
收藏