function main
clear all
E0=0.001;
MaxNum=100;
n=1;
m=50;
c1=2;
c2=2;
w=1;
vmax=0.5;
x=-4+8*rand(m,n);
v=2*rand(m,n);
for i=1:m
for j=1:n
f(i)=fitness(x(i,j));
end
end
pbx=x;
pbf=f;
[gbf i]=min(pbf);
gbx=pbx(i,:);
k=1;
while k<=MaxNum
for i=1:m
for j=1:n
f(i)=fitness(x(i,j));
end
end
[gbf i]=min(pbf);
gbx=pbx(i,:);
for i=1:m
v(i,:)=w*v(i,:)+c1*rand*(pbx(i,:)-x(i,:))+c2*rand*(gbx-x(i,:));
for j=1:n
if v(i,j)>vmax;
v(i,j)=vmax;
elseif v(i,j)<-vmax;
v(i,j)=-vmax;
end
end
x(i,:)=x(i,:)+v(i,:);
end
if abs(gbf)<E0,break,end
k=k+1;
end
disp('the maximum value is');
disp('and the corresponding coordinate is');
x=-4:0.01:4;
y=1.1*(1-x+2*x.^2).*exp(-x.^2/2);
plot(x,y);
hold on;
plot(gbx,1/gbf-1,'r*');
function y=fitness(x)
y=1.1*(1-x+2*x.^2).*exp(-x.^2/2);
y=1/(1+y);
PSO.zip_PSO c++_pso c_寻优
版权申诉
107 浏览量
2022-09-24
19:24:50
上传
评论
收藏 576B ZIP 举报
JaniceLu
- 粉丝: 84
- 资源: 1万+