基于S函数的BP神经网络PID控制器及Simulink仿真-杨艺

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

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

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

资源描述

基于S函数的BP神经网络PID控制器及Simulink仿真杨艺,虎恩典(北方民族大学电气信息工程学院,宁夏银川750021)摘要:BP网络在人工神经网络中应用最为广泛,文中给出基于MATLAB语言的BP神经网络PID控制器的S函数实现,在此基础上建立BP神经网络PID控制器的Simulink仿真模型,最后给出了该仿真模型应用在非线性对象中的仿真结果。关键词:S函数;BP神经网络;PID控制器;Simulink仿真中图分类号:TN915文献标识码:A文章编号:1674-6236(2014)04-0029-03SimulinksimulationofBPneuralnetworkPIDcontrollerbasedonS-functionYANGYi,HUEn-dian(SochoolofElectricalandInformationEngineering,BeifangUniversityforNationlities,Yinchuan750021,China)Abstract:BPnetworkiswidelyappliedintheartificialneuralnetwork.Inthispaper,S-functionofBPneuralnetworkPIDcontrollerbasedonMATLABlanguageispresented.AlsotheSimulinksimulationmodelofBPneuralnetworkPIDcontrollerhasbeenset.Finally,theresultofthesimulationmodewhichisappliedtononlinearobjecthasbeengiven.Keywords:S-function;BPneuralnetwork;PIDcontroller;Simulinksimulation收稿日期:2013-04-24稿件编号:201304289作者简介:杨艺(1972—),女,宁夏银川人,硕士,高级工程师。研究方向:计算机控制技术,实践教学管理。S函数是Simulink中的高级功能模块,Simulink是运行在MATLAB环境下用于建模、仿真和分析动态系统的软件包[3]。当系统采用一些特殊的控制规律(如不能直接用传递函数加以描述)时,若直接使用Simulink进行仿真,由于没有现成的功能模块可用,通常都要编写大量复杂而烦琐的源程序进行仿真,这样一来编程复杂,工作量较大,故需引入S函数。S函数的本质是对动态系统行为模式的一种描述,因此对于一些结构庞大、算法复杂、而且参数变化的系统,无疑S函数具有非常大的优势[2]。用MATLAB中的各种函数和语言编写M文件,从而形成特定功能的S函数[3]。只要所研究的系统模型能够由MATLAB语言加以描述,就可构造出相应的S函数,于是借助Simulink中的S函数功能模块来实现MATLAB与Simulink之间的联系,这样处理可充分发挥MATLAB编程灵活及Simulink简单直观的优势[4-5]。1S函数的编写格式S函数的基本格式如下[1]:function[sys,x0,str,ts]=函数名(t,x,u,flag)其中,t为仿真时间,对应连续系统t连续,而离散系统则t为一系列的采样点;x为系统的状态变量,包括连续和离散状态,若没有状态变量,则NumStates=0;u为输入矢量,sys为系统输出,不同调用函数下sys表示的含义不同;x0为系统状态变量初值;str为保留参数而且始终是空集;ts为采样时间;flag为仿真流程控制标志变量,用于控制程序的调用顺序和过程。表1所示为flag对应的调用函数及功能描述。在编写S函数时,必须清楚知道系统在不同时刻所需要的信息。例如系统有多少个状态变量、输入变量以及输出变量等。其中哪些是连续变量,哪些又是离散变量,以及这些变量的初始条件等信息。这些信息可在S函数中设置flag=0获取。若系统是连续变量,则要根据条件得到状态变量的导数,可令flag=1得到;若是离散变量,则必须确定采样时间以及下一个离散状态,这通过flag=2得到;最后令flag=3可获取系统的输出。由此可见,可以利用Simulink模块库或编写S函数,画电子设计工程ElectronicDesignEngineering第22卷Vol.22第4期No.42014年2月Feb.2014表1Flag对应的调用函数及功能描述Tab.1FlagthecallingfunctionandfunctionofthecorrespondingdescriptionFlag标志调用函数功能描述0mdlInitializeSize系统模型初始化函数1mdlDerivatives连续系统状态变量导数2mdlUpdate离散系统状态变量更新3mdlOutputs系统模型输出4mdlGetTimeOfNextVarHit计算下一个采样点时间9mdlTerminate仿真结束调用函数-29-DOI:10.14022/j.cnki.dzsjgc.2014.04.014《电子设计工程》2014年第4期出任意复杂的系统框图,进而对系统进行仿真分析。仿真结果既可以通过示波器直接显示,也可以将值返回MATLAB到工作空间作进一步处理。2BP神经网络PID控制器核心部分S函数BP神经网络PID控制器不能直接用传递函数来描述,简单应用Simulink进行仿真无效。BP神经网络PID控制器的核心部分S函数如下:function[sys,x0,str,ts]=exp_pidf(t,x,u,flag)switchflag,case0[sys,x0,str,ts]=mdlInitializeSizes;case2sys=mdlUpdates(x,u);case3sys=mdlOutputs(t,x,u);case{1,4,9}sys=[];otherwiseerror([′unhandledflag=′,num2str(flag)]);endfunction[sys,x0,str,ts]=mdlInitializeSizessizes=simsizes;sizes.NumContStates=0;sizes.NumDiscStates=3;sizes.NumOutputs=4;sizes.NumInputs=7;sizes.DirFeedthrough=1;sizes.NumSampleTimes=1;sys=simsizes(sizes);x0=zeros(3,1);str=[];ts=[10];functionsys=mdlUpdates(x,u)T=0.001;x=[u(5);x(2)+u(5)*T;(u(5)-u(4))/T];sys=[x(1);x(2);x(3)];functionsys=mdlOutputs(t,x,u)xite=0.2;alfa=0.05;IN=3;H=5;OUT=3;wi=rand(H,IN);wi_1=wi;wi_2=wi;wi_3=wi;wo=rand(IN,H);wo_1=wo;wo_2=wo;wo_3=wo;Oh=zeros(H,1);I=Oh;xi=[u(1),u(3),u(5)];epid=[x(1);x(2);x(3)];I=xi*wi’;forj=1:HOh(j)=(exp(I(j))-exp(-I(j)))/(exp(I(j))+exp(-I(j)));endK1=wo*Oh;fori=1:OUTK(i)=exp(K1(i))/(exp(K1(i))+exp(-K1(i)));endu_k=K*epid;dyu=sign((u(3)-u(2))/(u(7)-u(6)+0.0001));forj=1:OUTdK(j)=2/(exp(K1(j))+exp(-K1(j)))^2;endfori=1:OUTdelta3(i)=u(5)*dyu*epid(i)*dK(i);endforj=1:OUTfori=1:Hd_wo=xite*delta3(j)*Oh(i)+alfa*(wo_1-wo_2);endendwo=wo_1+d_wo;fori=1:HdO(i)=4/(exp(I(i))+exp(-I(i)))^2;endsegma=delta3*wo;delta2=dO.*segma;d_wi=xite*delta2′*xi+alfa*(wi_1-wi_2);wi=wi_1+d_wi;wo_3=wo_2;wo_2=wo_1;wo_1=wo;wi_3=wi_2;wi_2=wi_1;wi_1=wi;Kp=K(1);Ki=K(2);Kd=K(3);sys=[u_k,Kp,Ki,Kd];该控制器采用三层(3—5—3)BP网络结构,即3输入(IN)(期望值、实际值、偏差),隐含层数(H)为5,输出层数(OUT)为3(对应比例系数Kp、积分系数Ki、微分系数Kd),隐含层加权系数wi和输出层加权系数wo,初始值分别由随机函数产生;xite和alfa分别为学习速率和惯性因子,T是采样周期。S函数模块初始化时设定为7输入,4输出(对应为控制变量u_k,Kp、Ki、Kd),3个离散状态变量,即偏差、偏差和、偏差变化。-30-3BP神经网络PID控制器的Simulink模型编写好S函数后,然后建立被控系统的Simulink模型,其步骤如下:1)输入函数变量名及参数变量名。将S函数模块拖动到模型窗口后,编辑S函数模块,输入函数变量名exp_pidf(m文件名,不能与模型文件名相同)。2)创建子系统(createsubsystem)。3)屏蔽子系统(masksubsystem)[6]。建立好的系统模型如图1所示。图3Kp、Ki、Kd参数的变化曲线Fig.3Kp,Ki,Kdcurveparameterschange图2常规PID控制、BP神经网络PID控制阶跃响应Fig.2RoutinePIDcontrolandBPneuralnetworkPIDcontrolstepresponse图1BP神经网络PID控制模型Fig.1BPneuralnetworkPIDcontrolmodel其中被控对象的传递函数设为:G(s)=1.2208s+1e-80s,仿真结果分别如图2、图3所示。4结论根据仿真结果,用S函数可以实现复杂控制规律的系统仿真模型,由于BP神经网络PID控制器能实时调整PID控制器[7]的3个参数,因此可以实现对非线性对象很好地跟踪控制[4]。仿真结果显示,这种方法比普通PID控制的跟踪效果要好。因此,通过编写S函数来建立BP神经网络PID控制器的Simulink仿真模型,或者编写其他较复杂控制规律模型,可以充分发挥MATLAB编程灵活与Simulink简单直观的各自优势,拓宽了Simulink的应用范围[2]。参考文献:[1]李绍铭,赵伟.基于S函数的BP神经网络PID控制器Simulink仿真[J].可编程控制器与工厂自动化,2008(3):95-96.LIShao-ming,ZHAOWei.BPneuralnetworkPIDcontrollerbasedontheSfunctionSimulinksimulation[J].JournalofProgrammableControllerandFactoryAutomation,2008(3):95-96.[2]刘金琨.先进PID控制MATLAB仿真[M].北京:电子工业出版社,2006.[3]MATLAB中文论坛.MATLAB神经网络30个案例分析[M].北京:北京航空航天大学出版社,2010.[4]林瑞全,邱公伟.基于S函数的神经元PID控制Simulink仿真模型[J].中国仪器仪表,2001(6):4-5.LINRui-quan,QIUGong-wei.BasedontheSfunctionoftheneuronPIDcontrolSimulinkmodel[J].ChinaInstrumentation,2001(6):4-5.[5]张

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

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

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

×
保存成功