发布时间 : 星期二 文章神经网络非线性系统辨识与模型参考自适应控制器设计 - 图文更新完毕开始阅读
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) / (1+ y_1^2 + y_2^2); %非线性系统 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); end
figure(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('error');
对于周期为50,幅值为+/- 0.5的方波给定,仿真结果分别如图2.1-2.3所示。
图2.1控制器对方波信号的跟踪性能
图2.2 控制器对方波信号的跟踪误差
图2.3 控制器的控制量输出情况
由上图可以看出,所示的神经网络控制器对于给定方波信号,能够准确跟踪,稳态误差几乎为0,超调量在10%左右,要满足设计指标要求还需进一步调试。