基于S函数的RBF神经网络PID控制器

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

基于径向基函数的神经网络的PID控制器摘要RBF神经网络在分类问题中得到了广泛的应用,尤其是模式识别的问题。许多模式识别实验证明,RBF具有更有效的非线性逼近能力,并且RBF神经网络的学习速度较其他网络快。本文在具有复杂控制规律的S函数构造方法的基础上,给出了基于MATLAB语言的RBF神经网络PID控制器,及该模型的一非线性对象的仿真结果。关键词:S函数;RBF神经网络PID控制器;Simulink仿真模型径向基函数(RBF-RadialBasisFunction)神经网络是由J.Moody和C.Darken在20世纪80年代末提出的一种神经网络,它具有单隐层的三层前馈网络。由于它模拟了人脑中局部调整、相互覆盖接受域(或称野-ReceptiveField)的神经网络结构,因此,RBF神经网络是一种局部逼近网络,已证明它能以任意精度逼近任意连续函数。1.S函数的编写方法S函数是Simulink中的高级功能模块,Simulink是运行在MATLAB环境下用于建模、仿真和分析动态系统的软件包。只要所研究的系统模型能够由MATLAB语言加以描述,就可构造出相应的S函数,从而借助Simulink中的S函数功能模块实现MATLAB与Simulink之间的沟通与联系,这样处理可以充分发挥MATLAB编程灵活与Simulink简单直观的各自优势。当系统采用较复杂的控制规律时,Simulink中没有现成功能模块可用,通常都要采用MATLAB编程语言,编写大量复杂而繁琐的源程序代码进行仿真,一是编程复杂、工作量较大,二来也很不直观。如果能利用Simulink提供的S函数来实现这种控制规律,就可以避免原来直接采取编程的方法,不需要编写大量复杂而繁琐的源程序,编程快速、简捷,调试方便,则所要完成的系统仿真工作量会大大减少。RBF神经网络PID控制器的核心部分的S函数为:function[sys,x0,str,ts]=nnrbf_pid(t,x,u,flag,T,nn,K_pid,eta_pid,xite,alfa,beta0,w0)switchflag,case0,[sys,x0,str,ts]=mdlInitializeSizes(T,nn);case2,sys=mdlUpdates(u);case3,sys=mdlOutputs(t,x,u,T,nn,K_pid,eta_pid,xite,alfa,beta0,w0);case{1,4,9},sys=[];otherwise,error(['Unhandledflag=',num2str(flag)]);endfunction[sys,x0,str,ts]=mdlInitializeSizes(T,nn)sizes=simsizes;sizes.NumContStates=0;sizes.NumDiscStates=3;sizes.NumOutputs=4+5*nn;sizes.NumInputs=9+15*nn;sizes.DirFeedthrough=1;sizes.NumSampleTimes=1;sys=simsizes(sizes);x0=zeros(3,1);str=[];ts=[T0];functionsys=mdlUpdates(u)sys=[u(1)-u(2);u(1);u(1)+u(3)-2*u(2)];functionsys=mdlOutputs(t,x,u,T,nn,K_pid,eta_pid,xite,alfa,beta0,w0)ci_3=reshape(u(7:6+3*nn),3,nn);ci_2=reshape(u(7+5*nn:6+8*nn),3,nn);ci_1=reshape(u(7+10*nn:6+13*nn),3,nn);bi_3=u(7+3*nn:6+4*nn);bi_2=u(7+8*nn:6+9*nn);bi_1=u(7+13*nn:6+14*nn);w_3=u(7+4*nn:6+5*nn);w_2=u(7+9*nn:6+10*nn);w_1=u(7+14*nn:6+15*nn);xx=u([6;4;5]);ift==0ci_1=w0(1)*ones(3,nn);bi_1=w0(2)*ones(nn,1);w_1=w0(3)*ones(nn,1);K_pid0=K_pid;else,K_pid0=u(end-2:end);endforj=1:nn%Gaussianbasishh(j,1)=exp(-norm(xx-ci_1(:,j))^2/(2*bi_1(j)*bi_1(j)));enddym=u(4)-w_1'*h;w=w_1+xite*dym*h+alfa*(w_1-w_2)+beta0*(w_2-w_3);forj=1:nnd_bi(j,1)=xite*dym*w_1(j)*h(j)*(bi_1(j)^(-3))*norm(xx-ci_1(:,j))^2;d_ci(:,j)=xite*dym*w_1(j)*h(j)*(xx-ci_1(:,j))*(bi_1(j)^(-2));endbi=bi_1+d_bi+alfa*(bi_1-bi_2)+beta0*(bi_2-bi_3);ci=ci_1+d_ci+alfa*(ci_1-ci_2)+beta0*(ci_2-ci_3);dJac=sum(w.*h.*(-xx(1)+ci(1,:)')./bi.^2);%JacobianKK=K_pid0+u(1)*dJac*eta_pid.*x;sys=[u(6)+KK'*x;KK;ci(:);bi(:);w(:)];该控制器中的外部参数均在封装后的控制器参数对话框中给出。2.RBF神经网络PID控制器Simulink仿真模型编写好S函数之后,就可以建立其Simulink模型,其步骤是:(1)输入函数变量名及参数变量名。单击Simulink模型库中非线性环节的S函数模块,并拖动到所打开的模型窗口上,双击S函数模块,按照相关的提示输入函数变量名nnrbf-pid和参数名T,nn,xite,alfa。(2)创建子系统(createsubsystem)(3)屏蔽子系统(masksubsystem)在屏蔽子系统的对话框中按照提示输入参数变量。双击该模块也可以对参数进行修改。RBF神经网络控制器的Simulink模块如图1所示。其中输入1为给定信号与对象输出信号的误差e(k),输入2为对象输出信号y(k)。输出1为控制器的输出u(k),输出2为kp,ki,kd三个权值的变化量。21Saturationnnrbf_pidS-FunctionDemuxz1Delay7z1Delay6z1Delay5z1Delay4z1z1Delay2z1Delay1z1Delay2133303030303030303333499303030图1RBF神经网络PID控制器Simulink模型3.系统仿真系统仿真框图如图2所示。被控对象为一非线性环节,其Simulink仿真框图如图3所示,其模型描述为)()1(1)1()8.01(2.1)(2/1.0tutytyetyTt,其中采样周期T为0.001.控制器的参数nn取6,xite取0.25,alfa取0.05.输入为多阶梯波信号,具体参数如图4所示。tToWorkspace2y1ToWorkspace1yToWorkspaceScope1ScopeRBFPIDControllerRBFAdaptivePIDControllerNLPlantNonlinearPlantModelMulti-stepsignalgeneratorClock222333图2系统仿真框图1z1UnitDelay1Product10.1Gain21Constant1图3非线性受控对象图4RBF网络PID参数对话框仿真结果分别如图5和图6所示:00.20.40.60.811.21.41.6-1-0.500.511.52图5多阶梯波信号跟踪曲线00.20.40.60.811.21.41.6-0.15-0.1-0.0500.050.10.150.2图6kp,ki,kd参数的变化曲线4.结论RBF神经网络PID控制器由于采用RBF神经网络在线实时调整PID控制器的三个参数,可以对任意非线性对象实现很好的跟随控制。由上图5课件,用S函数实现RBF神经网络PID控制规律的复杂系统仿真模型,仿真结果显示其多阶梯波非线性信号跟踪效果比较理想,同时实现了PID参数的在线调整。PID参数的变化如图6所示。仿真程序编写简捷、快速,调试方便。参考文献[1]刘金琨.先进PID控制MATLAB(第3版)[M].北京:电子工业出版社,2011.3[2]薛定宇.控制系统计算机辅助设计——MATALAB语言与应用[M].北京:清华大学出版社,2006[3]李绍铭,赵伟.基于S函数的RBF神经网络PID控制器Simulink仿真[J].安徽冶金科技职业学院学报,2008

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功