智能控制作业

  • 格式:doc
  • 大小:456.50 KB
  • 文档页数:22

智能控制实验报告一.专家控制一系统的传递函数为24G()s2s s=+采用专家PID控制,输入信号为阶跃信号,用MATLAB进行仿真,取采样时间为0.001s,图1.1为阶跃响应曲线,图1.2为误差变化曲线。

图1.1专家PID控制阶跃响应曲线图1.2误差变化曲线专家PID控制仿真程序如下:%Expert PID Controllerclear all;close all;ts=0.001;sys=tf(4,[1,2,0]);dsys=c2d(sys,ts,'z');[num,den]=tfdata(dsys,'v');u_1=0.0;u_2=0.0;y_1=0;y_2=0;x=[0,0,0]';x2_1=0;kp=600;ki=2;kd=47;error_1=0;for k=1:1:1000time(k)=k*ts;rin(k)=1.0; %Tracing Jieyue Signal u(k)=kp*x(1)+kd*x(2)+ki*x(3); %PID Controller%Expert control ruleif abs(x(1))>0.8 %Rule1:Unclosed control firstly u(k)=0.45;elseif abs(x(1))>0.40u(k)=0.40;elseif abs(x(1))>0.20u(k)=0.12;elseif abs(x(1))>0.01u(k)=0.10;endif x(1)*x(2)>0|(x(2)==0) %Rule2if abs(x(1))>=0.05u(k)=u_1+2*kp*x(1);elseu(k)=u_1+0.4*kp*x(1);endendif (x(1)*x(2)<0&x(2)*x2_1>0)|(x(1)==0) %Rule3u(k)=u(k);endif x(1)*x(2)<0&x(2)*x2_1<0 %Rule4if abs(x(1))>=0.05u(k)=u_1+2*kp*error_1;elseu(k)=u_1+0.6*kp*error_1;endendif abs(x(1))<=0.001 %Rule5:Integration separation PI control u(k)=0.5*x(1)+0.010*x(3);end%Restricting the output of controllerif u(k)>=1000u(k)=1000;endif u(k)<=-1000u(k)=-1000;end%Linear modelyout(k)=-den(2)*y_1-den(3)*y_2+num(1)*u(k)+num(2)*u_1+num(3)*u_2; error(k)=rin(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 Px2_1=x(2);x(2)=(error(k)-error_1)/ts; % Calculating Dx(3)=x(3)+error(k)*ts; % Calculating Ierror_1=error(k);endfigure(1);plot(time,rin,'b',time,yout,'r'); xlabel('time(s)');ylabel('rin,yout'); figure(2);plot(time,rin-yout,'r');xlabel('time(s)');ylabel('error');二.模糊PID 控制一系统的传递函数为:采用模糊自适应PID 控制,输入信号为阶跃信号,用MATLAB 进行仿真,取采样时间为0.001s 。

在第4000个采样时间控制器输出加1.0的干扰。

仿真过程见图。

图2.1模糊系统以误差e 和误差变化率de 为模糊PID 的输入,以kp 、ki 、kd 作为模糊PID 的输出。

输入输出的隶属度函数如下图所示20.5G()s 3ss =+图2.2 误差e的隶属度函数图2.3 误差变化率de的隶属度函数图2.4 kp 隶属度函数图2.5 ki隶属度函数图2.6 kd隶属度函数图2.7 模糊PID控制阶跃响应图2.8 模糊PID控制的误差变化曲线图2.9 模糊PID控制器的输出u图2.10 kp的自适应调整图2.11 ki的自适应调整图2.12 kd的自适应调整仿真程序如下:%Fuzzy Tunning PID Controlclear all;close all;a=newfis('fuzzpid');a=addvar(a,'input','e',[-3,3]); %Parameter e a=addmf(a,'input',1,'NB','gaussmf',[1,-3]);a=addmf(a,'input',1,'NM','gaussmf',[1,-2]);a=addmf(a,'input',1,'NS','gaussmf',[1,-1]);a=addmf(a,'input',1,'Z','gaussmf',[1,0]);a=addmf(a,'input',1,'PS','gaussmf',[1,1]);a=addmf(a,'input',1,'PM','gaussmf',[1,2]);a=addmf(a,'input',1,'PB','gaussmf',[1,3]);a=addvar(a,'input','ec',[-3,3]); %Parameter ec a=addmf(a,'input',2,'NB','gaussmf',[1,-3]);a=addmf(a,'input',2,'NM','gaussmf',[1,-2]);a=addmf(a,'input',2,'NS','gaussmf',[1,-1]);a=addmf(a,'input',2,'Z','gaussmf', [1,0]);a=addmf(a,'input',2,'PS','gaussmf',[1,1]);a=addmf(a,'input',2,'PM','gaussmf',[1,2]);a=addmf(a,'input',2,'PB','gaussmf',[1,3]);a=addvar(a,'output','kp',[-6,6]); %Parameter kpa=addmf(a,'output',1,'NB','trimf',[-8,-6,-4]);a=addmf(a,'output',1,'NM','trimf',[-6,-4,-2]);a=addmf(a,'output',1,'NS','trimf',[-4,-2,0]);a=addmf(a,'output',1,'Z','trimf', [-2,0,2]);a=addmf(a,'output',1,'PS','trimf',[0,2,4]);a=addmf(a,'output',1,'PM','trimf',[2,4,6]);a=addmf(a,'output',1,'PB','trimf',[4,6,8]);a=addvar(a,'output','ki',[-6,6]); %Parameter kia=addmf(a,'output',2,'NB','trimf',[-8,-6,-4]);a=addmf(a,'output',2,'NM','trimf',[-6,-4,-2]);a=addmf(a,'output',2,'NS','trimf',[-4,-2,0]);a=addmf(a,'output',2,'Z','trimf', [-2,0,2]);a=addmf(a,'output',2,'PS','trimf',[0,2,4]);a=addmf(a,'output',2,'PM','trimf',[2,4,6]);a=addmf(a,'output',2,'PB','trimf',[4,6,8]);a=addvar(a,'output','kd',[-6,6]); %Parameter kp a=addmf(a,'output',3,'NB','trimf',[-8,-6,-4]);a=addmf(a,'output',3,'NM','trimf',[-6,-4,-2]);a=addmf(a,'output',3,'NS','trimf',[-4,-2,0]);a=addmf(a,'output',3,'Z','trimf',[-2,0,2]);a=addmf(a,'output',3,'PS','trimf',[0,2,4]);a=addmf(a,'output',3,'PM','trimf',[2,4,6]);a=addmf(a,'output',3,'PB','trimf',[4,6,8]);rulelist=[1 1 7 1 5 1 1;1 2 7 1 3 1 1;1 3 62 1 1 1;1 4 62 1 1 1;1 5 5 3 1 1 1;1 6 4 42 1 1;1 7 4 4 5 1 1;2 1 7 1 5 1 1;2 2 7 13 1 1;2 3 6 2 1 1 1;2 4 53 2 1 1;2 5 53 2 1 1;2 6 4 43 1 1;2 734 4 1 1;3 1 6 14 1 1;3 2 6 2 3 1 1;3 3 6 3 2 1 1;3 4 5 3 2 1 1;3 54 4 3 1 1;3 6 3 5 3 1 1;3 7 3 54 1 1;4 1 6 2 4 1 1;4 2 6 2 3 1 1;4 35 3 3 1 1;4 4 4 4 3 1 1;4 5 3 5 3 1 1;4 6 2 6 3 1 1;4 7 2 6 4 1 1;5 1 5 2 4 1 1;5 2 5 3 4 1 1;5 3 4 4 4 1 1;5 4 3 5 4 1 1;5 5 3 5 4 1 1;5 6 2 6 4 1 1;5 7 2 7 4 1 1;6 1 5 47 1 1;6 2 4 4 5 1 1;6 3 3 5 5 1 1;6 4 2 5 5 1 1;6 5 2 6 5 1 1;6 6 27 5 1 1;6 7 1 7 7 1 1;7 1 4 4 7 1 1;7 2 4 4 6 1 1;7 3 2 5 6 1 1;7 4 2 6 6 1 1;7 5 2 6 5 1 1;7 6 1 7 5 1 1;7 7 1 7 7 1 1];a=addrule(a,rulelist);a=setfis(a,'DefuzzMethod','mom');writefis(a,'fuzzpid');a=readfis('fuzzpid');%PID Controllerts=0.001;sys=tf(0.5,[1,3,0]);dsys=c2d(sys,ts,'tustin');[num,den]=tfdata(dsys,'v');u_1=0.0;u_2=0.0;y_1=0;y_2=0;x=[0,0,0]';error_1=0;e_1=0.0;ec_1=0.0;kp0=90;kd0=0.4;ki0=0;for k=1:1:5000time(k)=k*ts;rin(k)=1;%Using fuzzy inference to tunning PIDk_pid=evalfis([e_1,ec_1],a);kp(k)=kp0+k_pid(1);ki(k)=ki0+k_pid(2);kd(k)=kd0+k_pid(3);u(k)=kp(k)*x(1)+kd(k)*x(2)+ki(k)*x(3);if k==4000 % Adding disturbance(1.0v at time 0.3s) u(k)=u(k)+1.0;endif u(k)>=10u(k)=10;endif u(k)<=-10u(k)=-10;endyout(k)=-den(2)*y_1-den(3)*y_2+num(1)*u(k)+num(2)*u_1+num(3)*u_2;error(k)=rin(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 Px(2)=error(k)-error_1; % Calculating Dx(3)=x(3)+error(k); % Calculating Ie_1=x(1);ec_1=x(2);error_2=error_1;error_1=error(k);endshowrule(a)figure(1);plot(time,rin,'b',time,yout,'r');xlabel('time(s)');ylabel('rin,yout');figure(2);plot(time,error,'r');xlabel('time(s)');ylabel('error');figure(3);plot(time,u,'r');xlabel('time(s)');ylabel('u');figure(4);plot(time,kp,'r');xlabel('time(s)');ylabel('kp');figure(5);plot(time,ki,'r');xlabel('time(s)');ylabel('ki');figure(6);plot(time,kd,'r');xlabel('time(s)');ylabel('kd');figure(7);plotmf(a,'input',1);figure(8);plotmf(a,'input',2);figure(9);plotmf(a,'output',1);figure(10);plotmf(a,'output',2);figure(11);plotmf(a,'output',3);figure(12); plotfis(a);fuzzy fuzzpid.fis三.基于BP 神经网络整定的PID 控制设被控对象的近似数学模型为2()(1)()(1)1yout (1)a k yout k yout k u k k -=+-+- 其中0.1() 1.2(10.8)ka k e -=-。