资源描述:
《对一个串级系统进行仿真new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、%对一个串级系统进行仿真,并且计算绝对误差的矩积分functionQ=PsoPidForObj(kp,ki);%kp=0.5;%ki=2;dt=4;LP=1000;k=1;t=20;delay=round(120/dt);%初始化中间变量x1=0;x2=0;x3=0;x=zeros(1,delay);%误差e=0;R=1;Q=0;%中间常数c1=exp(-dt/t);d1=1-c1;fori=1:LP/dt%误差,前一时刻误差e=R-x(delay);%外环PIDx1=x1+dt*e*ki;r=kp*e+x1;x2=x2*c1+d1*r;x3=
2、x3*c1+d1*x2;forj=delay:-1:2x(j)=x(j-1);endx(1)=x3;out(i)=x(delay);%目标值Q=Q+dt*dt*abs(e)*i;end%Q%figure(2)%plot(out);%基于微粒子算法的PID参数整定forN=1:1max_iterations=40;no_particles=20;dimensions=3;cmax=0.9;cmin=0.1;c0=0.9;c1=2;c2=2;Vmax=0.5;u=4;KPmax=1;KPmin=0.7;KImax=0.5;KImin=0.2;KDm
3、ax=0.8;KDmin=0.5;Xmax=[KPmax,KImax,KDmax];Xmin=[KPmin,KImin,KDmin];b=0.2;globalkpkikd;%进行混沌初始化%particles=rand(no_particles,dimensions)*(Xmax-Xmin);%particles(1:no_particles,1)=rand(no_particles,1)*(KPmax-KPmin);%particles(1:no_particles,2)=rand(no_particles,1)*(KImax-KImin);
4、%particles(1:no_particles,3)=rand(no_particles,1)*(KDmax-KDmin);z=rand(1,3);forn=2:no_particlesz(n,:)=u.*z(n-1,:).*(1-z(n-1,:));endparticles(1:no_particles,1)=KPmin+(KPmax-KPmin)*z(1:no_particles,1);particles(1:no_particles,2)=KImin+(KImax-KImin)*z(1:no_particles,2);particle
5、s(1:no_particles,3)=KDmin+(KDmax-KDmin)*z(1:no_particles,3);velocity=rand(no_particles,dimensions);%pbest_val(1:no_particles,1)=(particles(1:no_particles,1)-20).^2+particles(1:no_particles,2).^2;fori=1:no_particlespbest_val(i,1)=itae(particles(i,1),particles(i,2),particles(i
6、,3));%kp,ki,kdendpbest_postion=particles;[gbest_val,gbest_index]=min(pbest_val);gbest_postion=pbest_postion(gbest_index,:);d=rand(1,dimensions);%迭代循环forstep=1:max_iterations%c0=cmax-step*(cmax-cmin)/max_iterations;c0=cmax-(cmax-cmin)*(1-abs(gbest_val-mean(pbest_val))/max(gbe
7、st_val,mean(pbest_val)));clc;disp('循环次数');stepfori=1:no_particlespbest_val_new(i,1)=itae(particles(i,1),particles(i,2),particles(i,3));%pbest_val_new(i)=(particles(i,1)-20)^2+particles(i,2)^2;ifpbest_val_new(i)8、ticles(i,:);end%施加混沌扰动d1=u.*d.*(1-d);r=-b+2*b*d1;d=d1;particles_1(i,:)=part