文档详情

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

发布:2018-09-11约3.48千字共7页下载文档
文本预览下载声明
基于径向基函数的神经网络的PID控制器 摘要 RBF神经网络在分类问题中得到了广泛的应用,尤其是模式识别的问题。许多模式识别实验证明,RBF具有更有效的非线性逼近能力,并且RBF神经网络的学习速度较其他网络快。本文在具有复杂控制规律的S函数构造方法的基础上,给出了基于MATLAB语言的RBF神经网络PID控制器,及该模型的一非线性对象的仿真结果。 关键词:S函数;RBF神经网络PID控制器;Simulink仿真模型 径向基函数(RBF-Radial Basis Function)神经网络是由J.Moody和C.Darken在20世纪80年代末提出的一种神经网络,它具有单隐层的三层前馈网络。由于它模拟了人脑中局部调整、相互覆盖接受域(或称野-Receptive Field)的神经网络结构,因此,RBF神经网络是一种局部逼近网络,已证明它能以任意精度逼近任意连续函数。 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) switch flag, case 0, [sys,x0,str,ts] = mdlInitializeSizes(T,nn); case 2, sys = mdlUpdates(u); case 3, sys = mdlOutputs(t,x,u,T,nn,K_pid,eta_pid,xite,alfa,beta0,w0); case {1, 4, 9}, sys = []; otherwise, error([Unhandled flag = ,num2str(flag)]); end function [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=[T 0]; function sys = mdlUpdates(u) sys=[u(1)-u(2); u(1); u(1)+u(3)-2*u(2)]; function sys = 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]); if t==0 ci_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); end for j=1: nn % Gaussian ba
显示全部
相似文档