1、实验一无限时间状态调节器问题的最优控制 MATLAB 仿真1.实验目的:(1) 通过上机操作,加深最优控制理论知识的理解。(2) 学习并掌握连续线性二次型最优控制的 MATLAB 实现。(3) 通过上机实验,提高动手能力,提高分析和解决问题的能力。2.实验时间:2010 年 5 月 26 日3.实验步骤:(1)实验一中的状态方程如下: (1) )(21txu0)(21(2) xyu01164根据状态方程(1) ,令输出量 y(t)=x1(t),写出对应的 A,B,C,D 矩阵如下: 01AB10CD根据状态方程(2) ,写出对应的 A,B,C,D 矩阵如下:D=00146010(2)判定上述两
2、个系统的可控性,分别求的第一个系统的秩判据=12,因此对应的系统不完全可控,所以无法设计对应的状态调rankBA节器。第二个系统对应的秩判据 =3,满足条件,因此可设2rankBA计出对应的状态调节器。(3)根据从系统中得到的四个状态矩阵,由于是三维矩阵,对应的 Q 矩阵也为三维矩阵,取性能指标为: ,其中矩阵 Q 的对角线上0()TJxQuRdt的值分别为:Q11、Q22、Q33,令 R=1,则接下来就是通过改变 Q11、Q22、Q33的值,即三个状态量在整个性能指标所占比重,来找到一组比较合适的数以使控制效果相对最优。(4)运用 Matlab 编写 M-file 求出对应不同 Q 矩阵权重
3、值的控制向量K,改变权重,便可得到不同的控制向量 K,比较对应得到的阶跃响应信号及状态量的变化曲线,分析实验结果。(5)由得到的控制向量 K,可知: 。结合状态方程,便可画出系ux统框图,在这里可以用 Matlab 自带的 Simulink 工具箱完成,完成结构图后,便可在输入端加入阶跃信号和随机干扰信号,观察系统的性能,包括动态性能和稳态误差等系统参数。(6)重复上述步骤,得到一系列的控制向量 K,总结规律,得到比较合适的权重 Q,并推断能使性能优良的 Q 的取值范围。4、完成的实验内容:(1)首先编写实验程序,输入的系统各个矩阵 A,B,C,D,改变权重,便可以得到对应的控制向量,其程序代
4、码如下:A=0 1 0;0 0 1;-1 -4 -6;B=0 0 1;C=1 0 0;D=0;Q11=500;Q22=200;Q33=1;Q=diag(Q11,Q22,Q33);R=1;K=lqr(A,B,Q,R);Ac=(A-B*K);Bc=B;Cc=C;Dc=D;T=0:0.005:5;U=1*ones(size(T);Cn=1 0 0 0;Y,X=lsim(Ac,Bc,Cc,Dc,U,T);figure(1);plot(T,Y);hold on;figure(2);plot(T,X(:,1),R);hold on;plot(T,X(:,2),M);hold on;plot(T,X(:,3
5、),K);hold on;legend(X1,X2,X3)上述程序完成的功能是:已知 A,B,Q,R,利用 lqr()求出控制向量 K,利用lsim()得到对应的阶跃信号状态响应和输出响应,并利用 plot()画出输出量的阶跃响应变化曲线以及 X 中三个状态量的变化曲线。(2)利用 Simulink 画出系统结构框图如下: 其中两个阶跃信号用来产生干扰信号,为时间从 5s-6s 的单位矩形脉冲信号。可以把它夹在上图中的四个相加节点位置(如上图) ,以表示干扰加在回路不同的位置,这样输出信号在加入状态调节器后便会有不同的响应曲线。 (3)给出不同的权值矩阵 Q 以后,运行上述程序,便得到不同的响
6、应曲线,在此例中由于输出量: ,所以应该把状态量 的对应权重取得较大,1ytxt1xt分别取全职矩阵 Q 的值依次如下:101201301Q450150Q650175018201(4)运行程序便可得到有上述 Q 对应的控制向量 K,其对应值如下19.8.395.26k13.740.916.72k367048534052.1k 62.51k78598107982并且得到了对应的响应曲线如下:对应的输出响应曲线和状态变化曲线1Q对应的输出响应曲线和状态变化曲线2Q对应的输出响应曲线和状态变化曲线3Q对应的输出响应曲线和状态变化曲线4Q对应的输出响应曲线和状态变化曲线5Q对应的输出响应曲线和状态变化
7、曲线6Q对应的输出响应曲线和状态变化曲线7Q从上面得到的响应曲线可以看出,改变权重值相应的阶跃响应变化不大,但是这并不能代表他们的性能相似,任意的权值都能达到使系统性能满足要求,其实不然,下面对系统加入单位矩阵脉冲干扰,可以发现他们的响应发生了一定的变化,很容易区分其中的优劣指标。(4)已知,利用 lqr()函数可以求出对应的控制向量 K,下面讨论,不同的K 值作用系统后,对于干扰信号不同的输入点得到下列响应曲线,便可知不同的 K 决定了系统抗干扰能力的强弱。对应的干扰信号响应曲线1Q对应的干扰信号响应曲线3Q对应的干扰信号响应曲线4Q对应的干扰信号响应曲线6Q对应的干扰信号响应曲线7Q对应的
8、干扰信号响应曲线8Q上面各图中,左上方皆为当矩形脉冲干扰加在输出端时的输出响应曲线,右上方皆为矩形脉冲干扰加在 通道上的输出响应曲线,左下方皆为当矩形脉冲干2x扰加在 时的输出响应曲线,右下方皆为矩形脉冲干扰加在 通道上的输出响3x 3x应曲线,下图为输入矩形脉冲干扰波形: 由上面列出的各个 Q 对应下的响应曲线可以看出,当干扰信号加在输出端时,都会经历一次振荡才能回复到初始零状态,但是当 Q 中 Q11,即对应的输出状态量权重加大时,输出的响应曲线明显得到了改善,振荡现象减弱,超调量减少,且,整个调节时间也缩短了,所以,由以上分析可知,如果输出量就是某个状态量,则再设计反馈控制器的时候就优先
9、考虑它的权重,这样当受到干扰时,就能够很快的恢复到零状态,即,当 Q11 从 100 到 500 变化时,显然,对应的输出响应曲线得到了一定的改善。当干扰从 通道引入时,若此时只改变2xQ11 的值,随着 Q11 的逐渐增大,显然输出的调节时间变短,且峰值变小,抗干扰性能逐渐变好,若在得到一定的控制效果后再适当改变 Q22,逐渐增大Q22,右上面各图则会发现,进一步改善了输出响应,调节时间进一步缩短,且负的峰值逐渐变小,到最后整个输出响应都不会出现负值,控制效果得到很大的改善。同样,若干扰加在 通道上,随着 Q11 的增大,控制效果得到了改3x善,系统抗干扰性能明显变好了,同时,在此基础上若增
10、大 Q22 的值,则会进一步改善性能,但是,与前面一样,如果加大 Q33,则会又使得系统性能变差。若干扰出现在控制回路,出现的情况基本相同,唯一的区别就是当加大 Q33 权值时,输出响应曲线的峰值变小了,但是以牺牲调节时间为代价的。综上所述,当实际设计一个状态反馈控制器时,需要分析干扰的引入量在哪个环节,或者主要影响哪个环节,这样就可以根据实际情况来设计状态反馈向量了,当然,评判一个控制系统的好坏,还要看系统的功能以及系统的最重要的性能指标,如一些事需要小的峰值,一些是需要小的调节时将,一些是需要振荡环节等等,所以设计系统参数就要考虑到多个因素,不仅要考虑外界干扰的存在,同时要考虑控制系统要实
11、现的功能。实验二无限时间跟踪问题的最优控制 MATLAB 仿真1.实验目的(1)通过上机操作,加深最优控制理论知识的理解。(2)学习并掌握连续线性二次型最优控制的 MATLAB 实现。(3)通过上机实验,提高动手能力,提高分析和解决问题的能力。2.实验时间:2010 年 5 月 263.实验步骤:(1)实验系统状态方程如下: )(2tux2021)(x1y性能指标为: dtUtYr02)()(2根据状态方程求出它的各个矩阵: 10AB10CD(2)判定上述两个系统的可控性,分别求的第一个系统的秩判据=2,因此对应的系统可控,可以设计对应的状态调节器。rankB(3)根据从系统中得到的四个状态矩
12、阵,显然,对应的 Q=1,取性能指标为: ,令 R=1,则接下来就是通过改变 R 的值,控dtUtYr02)()(21制量在整个性能指标所占比重,来找到一组比较合适的数以使控制效果相对最优。(4)运用Matlab编写M-file求出对应不同R权重值的,改变权重,得到不同的B,P,g三个矩阵,并得到对应的阶跃响应曲线,再根据式可以求得近似最优控制u(t),比较不同的R对应得到的阶跃响应信号及状态量变化曲线,分析实验结果。*11()()TTUtBPXtRg(5)由得到的近似最优控制 u(t)。结合状态方程,便可画出系统框图,在这里可以用 Matlab 自带的 Simulink 工具箱完成,完成结构
13、图后,便可在输入端加入阶跃信号和随机干扰信号,观察系统的性能,包括动态性能和稳态误差等系统参数。(6)重复上述步骤,总结规律,得到比较合适的权重 Q,并推断能使跟踪性能优良的 R 的取值范围。4.完成的实验内容:(1)首先编写实验程序,输入的系统各个矩阵 A,B,C,D,改变权重,便可以得到对应的控制向量,其程序代码如下:A=0 1;0 0;B=0 1;C=1 0;D=0;Q=1;R=0.001;yr=1;E=B*inv(R)*B;F=C*inv(Q)*C;P=are(A,E,F);g=inv(P*E-A)*C*Q*yr;L=inv(R)*B*g;K=-inv(R)*B*P;M=A-E*P;y
14、=poly(M);r=roots(y);S=E*inv(P*E-A)*C*Q;T=0:0.005:5;U=1*ones(size(T);Y1,X1=lsim(A+B*K,S,C,D,U,T);Y2,X2=lsim(A,B,C,D,U,T);figure(1);plot(T,Y1);figure(2);plot(T,Y2);figure(3);plot(T,X1(:,1),R);hold on;plot(T,X1(:,2),B);legend(X1,X2)上述程序完成的功能是:已知 A,B,Q,R,求出控制向量 P,g,B,利用lsim()得到对应的阶跃信号状态响应和输出响应,并利用 plot(
15、)画出输出量的阶跃响应变化曲线以及 X 中两个个状态量的变化曲线。(2)利用 Simulink 画出系统结构框图如下: 其中输入为单位阶跃信号,它经过对应的增益后与控制量 u(t)相加,而控制量是将求得的 P,g,B 矩阵带入上述的式中,便可得到控制量与状态量之间的关系式,这样输出信号在 P,B,g 变化时便会有不同的响应曲线,其跟踪性能也就不同。(3) ,给出不同的 R,计算出对应的 P,B,g 矩阵,然后计算出上述系统结构图中的增益量,便可得到输出响应曲线,下面为不同的 R 值对应的响应曲线:R=1R=0.5R=0.3R=0.1R=0.05从以上改变 R 的权值得到的不同的跟踪曲线,很明显
16、的发现,随着 R 的减小,跟踪效果越来越好,调节时间越来越短,究其原因,是因为 r 越小,就是表示越少的考虑控制量能耗的权重,以下为控制量在不同 R 权重下的波形,便可以看出控制量的变化规律:R=1R=0.5R=0.3R=0.1R=0.05从上列各图中可以看出,随着 R 的减少,控制量 u(t)也发生了变化,它是逐渐变大的,即耗能是逐渐变大的,所以要想得到很好的跟踪效果就必须消耗更多的能耗才能得以实现,控制量必须要更大的代价才能将输出量与输入量拉近,跟踪效果越好,说明系统的滞后效果就越消弱,这样对于一个实时性要求很高的系统来说,是非常有必要的,然而这种一状态未反馈量的控制系统都存在一个很大的瓶颈,就是状态量必须能得到,即系统必须可观,否则就无法实现控制其的设计,其次,系统可观也不一定能直接设计出控制器,因为系统中可能存在状态量不能直接测量,这时就需要状态观测器来得到对应的状态估值,所以在实际应用中多为理论依据来指导设计实际的控制器。