您好,欢迎访问三七文档
RBF神经滑膜控制孙文杰201403032将切换函数作为RBF网络的输入,滑膜控制器作为RBF网络的输出,利用神经网络的学习功能,可实现单入单出的神经滑膜控制。1、控制器设计被控对象为)()(221tdbuxfxxx设位置指令为)(tr,切换函数设计为)()()(tetcets其中1)()(xtrte2)()(xtrte将滑膜控制器设计为RBF网络的输出,即mjjjjbcswu1)||||exp(其中m为隐层神经元个数。控制的目标是使0)()(tsts,则RBF网络的权值调整指标为)()(tstsE则)()()()()()()()()(twtututstskwtststwEdwjjjj其中0由于)()()()()(tbsutstsutsts)||||exp()()(2jjjbcstwtu则RBF网络权值学习算法为)()()||||exp()(2shtsbcstsdwjjjiRBF神经滑膜控制器结构如图1所示。S(t)滑膜控制器被控对象自适应律-+图1神经滑膜控制器结构2、实例验证被控对象为一线性系统)(2221tbuaxxxx其中)(tu为控制输入,)*6sin(525ta,)*2sin(50133tb。位置指令为)6sin(5.0(ttr。取25c,则滑膜切换函数为)()(25)(tetets。神经网络的初始为随机值,网络结构为1—5—1.高斯函数参数取]35.105.13[c,Tb]11111[。取系统的初始状态为]015.0[,采用神经滑膜控制,取5.1。采用simulink仿真Simulink主程序如图2所示。uToWorkspace3yToWorkspace2deToWorkspace1eToWorkspacetToWorkspaceSumSignalGeneratorScopechap5_4plantS-Function1chap5_4sS-FunctionMuxMuxMuxdu/dtDerivativeDemux1.5Clock22223、仿真结果仿真的输出y、输入u、误差e的图形如图3、4、5所示。0200040006000800010000120001400016000-0.8-0.6-0.4-0.200.20.40.6图3输出y的波形图2simulink仿真模型01002003004005006007008009001000-50050100150200图4输入u的波形0200040006000800010000120001400016000-0.100.10.20.30.40.50.60.7图5误差e的波形图为了便于比较不同的滑膜控制的控制效果,采用基于比例切换的输出y、输入u仿真结果如图6、7所示。00.10.20.30.40.50.60.70.80.91-0.8-0.6-0.4-0.200.20.40.6time(s)Positiontracking图6采用比例切换控制的输出y波形00.10.20.30.40.50.60.70.80.91-150-100-50050100150200time(s)u图6采用比例切换控制的输入u波形4、仿真结果分析与结论从图3、4、5可以看出,对于一阶线性系统采用神经滑膜控制,系统的输出y大约在仿真开始后的第30个周期能够跟随系统的输入,输出的误差e最终稳定在0;系统的控制量u在仿真刚刚开始的时候,出现较大的冲击,大约在进入30个采用周期之后u最终稳定0左右(围绕着0有着小幅振荡)。而采用比例切换控制的一阶线性系统,大约在第100个采样周期时才能跟随上系统的输入,稳态误差也为0;系统的控制量在仿真刚开始的100个采样周期里,出现较大幅度的振荡,这对某些不允许出现严重斗振是执行机构是不被采用的控制量,并且u最终围绕0的振荡幅度比采用神经滑膜控制的振幅大。由以上分析可以得知,对于一阶线性采用神经滑膜控制的效果比采用比例切换的控制效果好。模型S函数如下:%S-functionforcontinuousstateequationfunction[sys,x0,str,ts]=s_function(t,x,u,flag)switchflag,%Initializationcase0,[sys,x0,str,ts]=mdlInitializeSizes;case1,sys=mdlDerivatives(t,x,u);%Outputscase3,sys=mdlOutputs(t,x,u);%Unhandledflagscase{2,4,9}sys=[];%Unexpectedflagsotherwiseerror(['Unhandledflag=',num2str(flag)]);end%mdlInitializeSizesfunction[sys,x0,str,ts]=mdlInitializeSizessizes=simsizes;sizes.NumContStates=2;sizes.NumDiscStates=0;sizes.NumOutputs=1;sizes.NumInputs=1;sizes.DirFeedthrough=0;sizes.NumSampleTimes=0;sys=simsizes(sizes);x0=[-0.15,0];str=[];ts=[];functionsys=mdlDerivatives(t,x,u)a=-25-5*sin(6*pi*t);b=133+50*sin(2*pi*t);sys(1)=x(2);sys(2)=-a*x(2)+b*u;functionsys=mdlOutputs(t,x,u)sys(1)=x(1);控制器S函数如下:%S-functionforcontinuousstateequationfunction[sys,x0,str,ts]=s_function(t,x,u,flag)switchflag,%Initializationcase0,[sys,x0,str,ts]=mdlInitializeSizes;%Outputscase3,sys=mdlOutputs(t,x,u);%Unhandledflagscase{2,4,9}sys=[];%Unexpectedflagsotherwiseerror(['Unhandledflag=',num2str(flag)]);end%mdlInitializeSizesfunction[sys,x0,str,ts]=mdlInitializeSizessizes=simsizes;sizes.NumContStates=0;sizes.NumDiscStates=0;sizes.NumOutputs=1;sizes.NumInputs=2;sizes.DirFeedthrough=1;sizes.NumSampleTimes=0;sys=simsizes(sizes);x0=[];str=[];ts=[];functionsys=mdlOutputs(t,x,u)persistentww_1w_2gama=1.5;alfa=0.02;c=[-3-1.501.53];b=1.0*ones(5,1);h=[0,0,0,0,0]';ift==0w=rands(5,1);w_1=w;w_2=w;endcc=25;e=u(1);de=u(2);s=cc*e+de;%RBFneuralcontrolxi=s;forj=1:1:5h(j)=exp(-norm(xi-c(:,j))^2/(2*b(j)*b(j)));endut=w'*h;d_w=0*w;forj=1:1:5d_w(j)=gama*s*h(j);endw=w_1+d_w+alfa*(w_1-w_2);%UpdateParametersw_2=w_1;w_1=w;sys(1)=ut;画图命令函数:closeall;figure(1);plot(t,y(:,1),'r',t,y(:,2),'b');xlabel('time');ylabel('positiontracking');figure(2);plot(t,u(:,1),'r');xlabel('time');ylabel('controlinput');figure(3);cc=25;plot(e,de,'b',e,-cc*e,'r');xlabel('x1');ylabel('x2');
本文标题:控制系统仿真作业
链接地址:https://www.777doc.com/doc-2378186 .html