function [xm,fv]=PSO_Kades(fitness,N,c1,c2,w,M,D)
%待优化的函数:fitness
%粒子数目:N
%学习因子:c1
%学习因子:c2
%惯性权重:W
%最大迭代次数:M
%取得最小值时的自变量值:xm
%目标函数的最小值:fv
%初始化初始位置
format long;
for i=1:N
for j=1:D
x(i,j)=randn;
v(i,j)=randn;
end
end
%
for i=1:N
p(i)=fitness(x(i));
y(i,:)=x(i,:);
end
%找到初始最好粒子
pg=x(N,:);
for i=1:(N-1)
if fitness(x(i,:))<fitness(pg)
pg=x(i,:);
end
end
%按照步数开始迭代
for t=1:M
for i=1:N
v(i,:)=w*v(i,:)+c1*rand*(y(i,:)-x(i,:))+c2*rand*(pg-x(i,:));
x(i,:)=x(i,:)+v(i,:)
if fitness(x(i,:))<p(i) %更新粒子本身历史最优
y(i,:)=x(i,:);
end
if fitness(y(i,:))<fitness(pg) %更新全局最优
pg=y(i,:)
end
end
end
xm=pg';
fv=fitness(pg);
基础的粒子群算法代码
最新推荐文章于 2023-01-13 14:46:17 发布