神经网络非线性系统辨识与模型参考自适应控制器设计_第1页
神经网络非线性系统辨识与模型参考自适应控制器设计_第2页
神经网络非线性系统辨识与模型参考自适应控制器设计_第3页
神经网络非线性系统辨识与模型参考自适应控制器设计_第4页
神经网络非线性系统辨识与模型参考自适应控制器设计_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上试论述神经网络系统建模的几种基本方法。利用BP网络对以下非线性系统进行辨识。非线性系统1)首先利用u(k)=sin(2*pi*k/3)+1/3*sin(2*pi*k/6),产生样本点500,输入到上述系统,产生y(k), 用于训练BP网络;2)网络测试,利用u(k)=sin(2*pi*k/4)+1/5*sin(2*pi*k/7), 产生测试点200,输入到上述系统,产生y(k), 检验BP/RBF网络建模效果。3)利用模型参考自适应方法,设计NNMARC控制器,并对周期为50,幅值为+/- 0.5的方波给定,进行闭环系统跟踪控制仿真,检验控制效果(要求超调<5%

2、)。要求给出源程序和神经网络结构示意图,计算结果(权值矩阵),动态过程仿真图。1、系统辨识题目中的非线性系统可以写成下式:使用BP网络对非线性部分进行辨识,网络结构如图1.1所示,各层神经元个数分别为2-8-1,输入数据为y(k-1)和y(k-2),输出数据为y(k)。图1.1 辨识非线性系统的BP网络结构使用500组样本进行训练,最终达到设定的0.0001的误差,训练过程如图1.2所示图1.2 网络训练过程使用200个新的测试点进行测试,得到测试网络输出和误差结果分别如下图1.3,1.4所示。从图中可以看出,相对训练数据而言,测试数据的辨识误差稍微变大,在±0.06范围内,拟合效果

3、还算不错。图1.3 使用BP网络辨识的测试结果图1.4 使用BP网络辨识的测试误差情况clear all;close all;% 产生训练数据和测试数据U=0; Y=0; T=0;u_1(1)=0; y_1(1)=0; y_2(1)=0; for k=1:1:500 %使用500个样本点训练数据 U(k)=sin(2*pi/3*k) + 1/3*sin(2*pi/6*k); T(k)= y_1(k) * (2*y_2(k) + 1) / (1+ y_1(k)2 + y_2(k)2); %对应目标值 Y(k) = u_1(k) + T(k); %非线性系统输出,用于更新y_1 if k<5

4、00 u_1(k+1) = U(k); y_2(k+1) = y_1(k); y_1(k+1) = Y(k); endend y_1(1)=0.0001; y_1(2)=0; y_2(1)=0; y_2(2)=0.0001; y_2(3)=0; %为避免组合后出现零向量,加上一个很小的数X=y_1;y_2; save('traindata','X','T'); clearvars -except X T ; %清除其余变量 U=0; Y=0; Tc=0;u_1(1)=0; y_1(1)=0; y_2(1)=0; for k=1:1:200 %使用

5、500个样本点训练数据 U(k)=sin(2*pi/4*k) + 1/5*sin(2*pi/7*k); %新的测试函数Y(k) = u_1(k) + y_1(k) * (2*y_2(k) + 1) / (1+ y_1(k)2 + y_2(k)2); if k<200 u_1(k+1) = U(k); y_2(k+1) = y_1(k); y_1(k+1) = Y(k); endend Tc=Y; Uc=u_1;y_1(1)=0.0001; y_1(2)=0; y_2(1)=0; y_2(2)=0.0001; y_2(3)=0; %为避免组合后出现零向量,加上一个很小的数Xc=y_1;y_

6、2; save('testdata','Xc','Tc','Uc'); %保存测试数据 clearvars -except Xc Tc Uc ; %清除其余变量,load traindata; load testdata; %加载训练数据和测试数据% 网络建立与训练R,Q= size(X); S,= size(T); Sc,Qc= size(Tc);Hid_num = 8; %隐含层选取8个神经元较合适val_iw =rands(Hid_num,R); %隐含层神经元的初始权值val_b1 =rands(Hid_num,1); %

7、隐含层神经元的初始偏置val_lw =rands(S,Hid_num); %输出层神经元的初始权值val_b2 =rands(S,1); %输出层神经元的初始偏置net=newff(X,T,Hid_num); %建立BP神经网络,使用默认参数net.trainParam.epochs=400; %设置训练次数net.trainParam.max_fail = 50;net.trainParam.goal=0.0001; %设置mean square error, 均方误差,net.trainParam.lr=0.05; %设置学习速率net.iw1,1=val_iw; %初始权值和偏置net.

8、lw2,1=val_lw;net.b1=val_b1;net.b2=val_b2;net,tr=train(net,X,T); %训练网络save('aaa', 'net'); %将训练好的网络保存下来% 网络测试A=sim(net,X); %测试网络E=T-A; %测试误差error = sumsqr(E)/(S*Q) %测试结果的的MSEA1=sim(net,Xc); %测试网络Yc= A1 + Uc;E1=Tc-Yc; %测试误差error_c = sumsqr(E1)/(Sc*Qc) %测试结果的的MSEfigure(1);plot(Tc,'r&

9、#39;);hold on;plot(Yc,'b');legend('exp','act');xlabel('test smaple');ylabel('output')figure(2);plot(E1);xlabel('test sample');ylabel('error')2、MRAC控制器被控对象为非线性系统:由第一部分对的辨识结果,可知该非线性系统的辨识模型为:可知u(k)可以表示为和的函数,因此可使用系统的逆模型进行控制器设计。选取参考模型为低阶线性模型:;因此神经网络

10、控制器为:根据上述原理,设计控制器相应程序如下:% MRAC控制器load('-mat','aaa');v1 = 0.3 ;v2 =0.2 ;ym_2=0; ym_1=0; y_2=0; y_1=0; u_1=0;r_1=0;%系统初始输入输出for k=1:1:500 time(k)=k; rin(k) = 0.5*sign(sin(2*pi*k/50); %周期50,幅值0.5的阶跃信号 ym(k) = v1*ym_1 + v2*ym_2 + r_1; %参考系统模型,根据要求的性能指标进行选择 yout(k) = u_1+ y_1 * (2*y_2 + 1

11、) / (1+ y_12 + y_22); %非线性系统 e_c(k) = ym_1 - yout(k); %当前误差,这里ym和yout差了一步,故应用ym_1减去 ym_2=ym_1; ym_1=ym(k); y_2=y_1; y_1=yout(k); X=y_1;y_2; fn=sim(net,X); %网络对非线性部分的预测输出 u(k) = -fn + v1*y_1 + v2*y_2 + r_1; u_1=u(k); r_1=rin(k);endfigure(1);plot(time,rin,'g',time,ym,'r',time,yout,'b');xlabel('time(s)');ylabel('ym,y');figure(2);plot(time,u);xlabel('time(s)');ylabel('Control input');figure(3);plot(time,e_c,'r');xlabel('time(s)');ylabel('

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论