• 大小: 2KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-07
  • 语言: 其他
  • 标签:

资源简介

利用PSO粒子群算法实现PID参数的自整定,找出最优的PID参数

资源截图

代码片段和文件信息

function BsJ=pid_pso(Kpidi)
ts=0.001;
sys=tf([1.05][6.8e-6 2.47e-3 0.7925]);
dsys=c2d(systs‘z‘);
[numden]=tfdata(dsys‘v‘);
u_1=0.0;u_2=0.0;
y_1=0.0;y_2=0.0;
x=[000]‘;
B=0;
error_1=0;
tu=1;
s=0;
P=100;
for k=1:1:P
    timef(k)=k*ts;
    r(k)=1;
    u(k)=Kpidi(1)*x(1)+Kpidi(2)*x(3)+Kpidi(3)*x(2);
    if u(k)>=10
        u(k)=10;
    end
    if u(k)<=-10
        u(k)=-10;
    end
    yout(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2;
    error(k)=r(k)-yout(k);
    %Return of PID parameters
    u_2=u_1;u_1=u(k);
    y_2=y_1;y_1=yout(k);
    x(1)=error(k);                % Calculating  P
    x(2)=(error(k)-error_1)/ts;   %          D
    x(3)=x(3)+error(k)*ts;        %           I 
    error_2=error_1;
    error_1=error(k);
    if s==0
        if yout(k)>0.95&yout(k)<1.05
            tu=timef(k);
            s=1;
        end
    end
end
for i=1:1:P
    Ji(i)=0.999*abs(error(i))+0.01*u(i)^2*0.1;
    B=B+Ji(i);
    if i>1
        erry(i)=yout(i)-yout(i-1);
        if erry(i)<0
            B=B+100*abs(erry(i));
        end
    end
end
BsJ=B+0.2*tu*10;

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1119  2013-09-26 12:49  pid_pso.m

     文件       2664  2013-09-26 12:49  PSO.m

     文件        955  2013-09-26 12:49  shuchuquxianpso.m

----------- ---------  ---------- -----  ----

                 4738                    3


评论

共有 条评论

相关资源