PSO算法中的微粒飞行规则类似于鸟类的运动,从而使得整个微粒群的运动表现出与鸟类觅食类似的特性,进而用于求解复杂的优化问题,该算法的基本思想是通过群体中之间的协作和信息共享来寻找最优解。
基本流程:初始化种群和速度—>计算适应度值—>找到个体的极值和种群的极值——>速度更新和个体更新—>计算适应度值—>更新个体极值和种群的极值—>判断是否满足终止条件(如果是否则返回速度更新和个体的更新,是的话就结束该算法)
%自适应权重粒子群优化算法的matlab程序
%fitness适应度函数
%N种群个数
%c1粒子群参数
%c2粒子群参数
%wmax最大权重
%wmin最小权重
%M循环迭代次数
%D种群中个体
format long;
for i=1:N
for j=1:D
x(i,j)=randn;
v(x,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 j=1:N
fv(j)=fitness(x(j,:));
end
fvg=sum(fv)/N;
fmin=min(fv);
for i=1:N
if fv(i)<=fvag
w=wmin+(fv(i)-fmin)*(wmax-wmin)/(fvg-fmin);
else
w=wmax;
end
v(i,:)=w*v(i,:)+c1*rand*(y(i,:)-x(i,:))+c2*rand*(pg-x(i,:));
x(i,:)=x(i,;)+v(i,;);
end
if p(i)<fitness(pg)
pg=y(i,:);
end
end
pbest(t)=fitness(pg);