概述
%粒子群优化算法(Particle Swarm Optimization)
%初始格式化
clear all;
clc;
format;
%相关参数的设置
c1=2;%学习因子1
c2=2;%学习因子2
w=0.65;%惯性权重
Dim=3;%粒子维度
SwarmSize=100;种群规模
ObjFun=@PSO_PID;
MaxIter=100;%最大迭代次数
MinFit=0.1;
Vmax=1;
Vmin=-1;
Ub=[300 300 300];
Lb=[0 0 0];
%粒子群初始化
Range=ones(SwarmSize,1)*(Ub-Lb);
Swarm=rand(SwarmSize,Dim).*Range+ones(SwarmSize,1)*Lb;
VStep=rand(SwarmSize,Dim)*(Vmax-Vmin)+Vmin;
fSwarm=zeros(SwarmSize,1);
for i=1:SwarmSize
fSwarm(i,:)=feval(ObjFun,Swarm(i,:));
end
%个体极值和群体极值
[bestf bestindex]=min(fSwarm);
zbest=Swarm(bestindex,:);
gbest=Swarm;
fgbest=fSwarm;
fzbest=bestf;
%迭代寻优
inter=0;
y_fitness=zeros(1,MaxIter);
K_p=zeros(1,MaxIter);
K_i=zeros(1,MaxIter);
K_d=zeros(1,MaxIter);
while((iterMinFit))
for j=1:SwarmSize
%速度更新
VStep(j,:)=w*VSstep(j,:)+c1*rand*(gbest(j,:)-Swarm(j,:))+c2*rand*(zbest-Swarm(j,:));
if VStep(j,:)>Vmax,VStep(j,:)=Vmax;end
if VStep(j,:)
%位置更新
Swarm(j,:)=Swarm(j,:)+VStep(j,:);
for k=1:Dim
if Swarm(j,k)>Ub(k),Swarm(j,k)=Ub(k);end
if Swarm(j,k)
end
%适应度
fSwarm(j,:)=feval(ObjFun,Swarm(j,:));
%个体最优更新
if fSwarm(j)
gbest(j,:)=Swarm(j,:);
end
%群体最优更新
if fSwarm(j)
zbest=Swarm(j,:);
fbest=fSwarm(j);
end
end
iter=iter+1;
y_fitness(1,iter)=fzbest;
K_p(1,iter)=zbest(1)
K_i(1,iter)=zbest(2);
K_d(1,iter)=zbest(3);
end
%绘图输出
figure(1)
plot(y_fitness,'LineWidth',2)
title('最优个体适应值','fontsize',18);
xlabel('迭代次数','fontsize',18);ylabel('适应值','fontsize',18);
set(gca,'Fontsize',18);
figure(2)
plot(K_p)
hold on
plot(K_i,'k','LineWidth',3)
plot(k_d,'--r')
title('Kp,Ki,Kd优化曲线','fontsize',18);
xlabel('迭代次数','fontsize',18);ylabel('参数值','fontsize',18);
set(gca,'Fontsize',18);
legend('Kp','Ki','Kd',1);
最后
以上就是直率砖头为你收集整理的智能pid matlab,粒子群算法优化pid参数,照智能算法案例来写的,为啥.....的全部内容,希望文章能够帮你解决智能pid matlab,粒子群算法优化pid参数,照智能算法案例来写的,为啥.....所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复