第3章最优与鲁棒控制系统设计 最优控制系统理论是现代控制理论的核心,它研究的主要问题是: 在满足一定约束条件下,寻求最优控制策略,使得性能指标取极大值或极小值。使控制系统的性能指标实现最优化的基本条件和综合方法可概括为: 对一个受控的动力学系统或运动过程,从一类允许的控制方案中找出一个最优的控制方案,使系统的运动在由某个初始状态转移到指定的目标状态的同时,其性能指标值为最优。这类问题广泛存在于技术领域或社会问题中。 鲁棒控制(Robust Control)的研究始于20世纪50年代。在过去的20年中,鲁棒控制一直是国际自控界的研究热点。所谓“鲁棒性”,是指控制系统在一定(结构,大小)的参数摄动下,维持某些性能的特性。根据对性能的不同定义,可分为稳定鲁棒性和性能鲁棒性。以闭环系统的鲁棒性作为目标设计得到的固定控制器称为鲁棒控制器。 3.1最优控制问题的描述 给定连续时间控制系统为 x·(t)=f(x(t),u(t),t) x(t0)=x0 式中,x(t)为状态向量; u(t)为控制向量; f(x(t),u(t),t)为x(t)、u(t)和t的连续函数。最优控制问题就是在保证系统从已知的初始状态x(t0)转移到预定的目标状态x(tf)的情况下,寻求最优的控制函数u(t),使性能指标取最小值。 J(u)=θ[tf,xf]+∫tft0L(x(t),u(t),t)dt 有时,性能指标也可以采用J(u)=θ[tf,xf]或J(u)=∫tft0L(x(t),u(t),t)dt的形式。 上面的形式是性能指标,表示系统在控制过程结束后,终端状态需要满足一定的需求。比如希望被控对象精确停止在空间中的某一位置、被控对象的温度尽可能地靠近设定值等。终端时间tf可以固定,也可以是自由的,这由控制问题的性质决定。 下面的形式则为最一般的性能指标形式,表示不仅对控制过程结束后的终端状态有一定的要求,还需要整个控制过程满足特定的条件。 J(u)=∫tft0L(x(t),u(t),t)dt中的被积函数L(x(t),u(t),t)还可以有多种形式。比如取L(x(t),u(t),t)=∑∞i=0|ui(t)|,那么J(u)就表示整个控制过程所消耗的能量。此时,最优控制的目标就是使系统消耗的能量最小。这是航天工程中最常见的问题,比如登月飞行器在进行软着陆时,需要发动机产生一个与月球重力相反方向的推力; 希望飞行器在着陆过程中消耗最小的燃料,进而减轻飞行器的重量,就是这类最优控制问题。 当L(x(t),u(t),t)=1时,J(u)=tf-t0,此时最优控制问题的目标就是使整个控制过程的时间最短。 L(x(t),u(t),t)的不同形式代表了不同的优化目标,这里提到的只是几种常见的形式。 对于离散时间控制系统,相应的最优控制问题可描述为 x(k+1)=f[x(k),u(k),k] x(0)=x0 g[x(N)]=0 式中,g[x(N)]表示末状态约束的向量函数。此时,最优控制问题就是求最优的控制序列k=0,1,2,…,N-1,使性能指标 J=θ[x(N)]+∑∞k=0Lk[x(k),u(k),k] 取最小值。 最优控制问题有多种解法。当性能指标、约束条件形式简单时,适合用解析法,将优化问题转化为一组方程或不等式,进行求解; 当性能指标比较复杂,难以解析时,可以采用数值法,通过迭代,逐步逼近理论求解。二者相结合使用即为梯度型法。 3.2连续系统二次型最优控制及其MATLAB实现 如果所研究的问题是线性的,且性能指标为状态变量和控制变量的二次型函数,最优控制问题称为线性二次型问题。由于线性二次型问题的最优解具有统一的解析表达式,且可以导出一个简单的线性状态反馈控制律,易于构成闭环最优反馈控制,因此,在实际工程中得到了广泛应用。 线性二次型问题就是在线性系统的约束下,选择控制输入使得二次型模表函数达到最小。线性二次型最优控制一般涉及两类问题: 一类是具有状态反馈的线性二次型最优控制,即LQ问题; 另一类是线性二次型高斯最优控制,即LQG问题。 1. 连续系统二次型最优控制概述 给定连续定常系统的状态空间x·(t)=Ax(t)+Bu(t),且x(0)=x0,最优控制的性能指标函数为 J(u)=12∫tft0(xTQx+uT-Ru)dt 式中,Q为状态加权系数矩阵; R为控制加权系数矩阵。当tf=∞时,上述问题就是典型的无限时间最优调节器问题,最优控制为 u(t)=-K(t)x(t) 式中,K(t)=R-1BTP(t)为最优控制反馈系数矩阵,P(t)需要满足以下的Riccati方程: P·+PA+ATP+Q-PBR-1BTP=0 因为Riccati方程中的A,B,Q,R均为常数矩阵,所以P(t)存在且唯一,并且为非负定的。 在最优控制下,性能指标可以写为 J=12xT(t0)P(t0)x(t0) 对状态完全可观的系统,如果Q可以分解为Q=STS且(A,S)可观,那么最优控制存在,并且闭环系统为渐进稳定的。 2. 连续系统二次型最优控制的MATLAB实现 在MATLAB控制系统工具箱中,提供了相关函数用于实现连续系统二次型最优控制。 1) lqr函数 该函数用于设计连续系统的LQ调节器。函数的调用格式为: [K,S,e] = lqr(SYS,Q,R,N): 计算连续时间系统的最优反馈增益矩阵K,系统为 x·=Ax+Bx 采用的反馈控制律 u=-Kx 使性能指标函数 J(u)=∫∞0(xTQx+uTRu+2xTNu)dt 最小。同时返回Riccati方程 ATS+SA-(SB+N)R-1(BTS+NT+NT)+Q=0 的解S及闭环系统的特征值e。默认时N=0,且K=R-1(BTS+NT)。 此外,以上问题要有解,必须满足3个条件。 (1) (A,B)是稳定的; (2) R>0且Q-NR-1NT≥0; (3) (Q-NR-1NT,A-BR-1NT)在虚轴上不是非可观模式。 当上述条件不满足时,则说明二次型最优控制无解,函数会显示警告信号。 【例31】设系统状态空间表达式为 x·(t)= 010 001 -1-4-6x(t)+0 0 1u(t) 采用输入反馈,系统的性能指标为 J=12∫x0(yT-Qy+uTRu)dt,Q=100 010 001,R=1 试设计LQ最优控制器,计算最优状态反馈矩阵K=[k1,k2,k3],并绘制闭环系统的单位阶跃响应曲线。 >> clear all; A=[0 1 0;0 0 1;-1 -4 -6]; B=[0 0 1]'; C=[1 0 0];D=0; Q=diag([1 1 1]); R=1; K=lqr(A,B,Q,R) k1=K(1); Ac=A-B*K; Bc=B*k1; Cc=C;Dc=D; step(Ac,Bc,Cc,Dc); xlabel('时间');ylabel('振幅');title('阶跃响应'); 运行程序,输出如下,单位阶跃响应曲线如图31所示。 K= 0.41420.74860.2046 图31闭环系统的单位阶跃响应曲线 2) lqry函数 该函数用于设计系统的LQ调节器。函数的调用格式为: [K,S,e] = lqry(sys,Q,R,N): 计算连续时间系统的最优反馈增益矩阵K,系统为 x·=Ax+Bu y=Cx+Du 采用的反馈控制律 u=Kx 使性能指标函数 J(u)=∫∞0(yTQx+uTRu+2yTNu)dt 最小,同时返回Riccati方程 ATS+SA-(SB+N)R-1(BTS+NT)+Q=0 的解S及闭环系统的特征值e。默认时N=0。此函数也可以计算响应的离散时间系统的最优反馈增益矩阵K。 【例32】设系统状态空间表达式为 x·(t)= 010 0-11 -12-10-6x(t)+0 1 1u(t) y(t)=[101] 系统的性能指标为 J(u)=∫∞0(yTQx+uTRu+2yTNu)dt,Q=1,R=1,N=0 试设计线性二次型最优控制器,计算K,S,e,并绘制闭环系统的单位阶跃响应曲线。 >> clear all; A=[0 1 0;0 -1 1;-12 -10 -6]; B=[0 1 1]'; C=[1 0 1]; D=0; Q=1; R=1; N=0; G=ss(A,B,C,D); [K,S,e]=lqry(G,Q,R,N) Ac=A-B*K Bc=B*K(1); Cc=C; Dc=D; Gc=ss(Ac,Bc,Cc,Dc); step(Gc) title('阶跃响应'); xlabel('时间');ylabel('振幅'); 运行程序,输出如下,效果如图32所示。 K= 0.20700.42870.0374 S = 0.18330.16710.0399 0.16710.4679-0.0393 0.0399-0.03930.0767 e= -3.1876 + 1.3250i -3.1876 - 1.3250i -1.0910 + 0.0000i Ac= 01.00000 -0.2070-1.42870.9626 -12.2070-10.4287-6.0374 图32闭环系统的阶跃响应曲线 3.3离散系统二次型最优控制及其MATLAB实现 下面对离散系统线性二次型最优控制进行详细介绍。 1. 离散系统二次型最优控制概述 如果控制系统为离散的,则状态方程为 x(k+1)=Ax(k)+Bu(k),k=0,1,2,…,N-1 x(0)=x0 最优控制的性能指标为 J=12xT(N)Sx(N)+12∑N-1k=0[xT(k)Qx(k)+uT(k)Ru(k)] 那么,最优控制序列为 u(k)=-Kkx(k),k=0,1,2,…,N-1 式中,最优反馈系数矩阵为 Kk=R-1BT[P-1k+1+BR-1BT]-1A Pk为非负定矩阵,且满足离散的Riccati方程 Pk=Q+ATPk+1[I+BR-1BTPk+1]-1A 当N→∞时,最优控制的解为稳态解,此时的性能指标为 J=12∑∞k=0[xT(k)Qx(k)+uT(k)Ru(k)] 计算可得,最优的性能指标值为J=12xT(0)Px(0)。 2. 离散系统二次型最优控制的MATLAB实现 在MATLAB的控制工具箱中,提供了求解离散二次型最优控制的函数。 1) dlqr函数 该函数用于设计离散系统的LQ调节器。函数的调用格式为: [K,S,e] = dlqr(A,B,Q,R,N): 计算离散系统的最优反馈增益矩阵K,系统为 x[n+1]=Ax[n]+Bu[n] 采用反馈律 u[n]=-Kx[n] 使性能指标函数 J(u)=∑∞n=1(x[n]TQx[n]+u[n]TRu[n]+2x[n]TNu[n]) 最小。同时返回Riccati方程 ATS+SA-(SB+N)R-1(BTS+NT)+Q=0 的解S及闭环系统的特征值e。默认时N=0,且K=R-1(BTS+NT)。 【例33】设离散系统的状态方程为 x(k+1)=3x(k)+u(k) y(k)=x(k) 设定性能指标为 J=12∑∞k=0(xT(k)Qx(k)+uT(k)Ru(k)),Q=10000 01,R=1 试计算稳定最优反馈增益矩阵,并绘制闭环系统的单位阶跃响应曲线。 >> clear all; a=3;b=1;c=1;d=0; Q=[1000 0;0 1]; R=1; A=[a 0;-c*a,1]; B=[b;-c*b]; Kx=dlqr(A,B,Q,R) k1=-Kx(2);k2=Kx(1); axc=[(a-b*k2),b*k1;(-c*a+c*b*k1),(1-c*b*k1)]; bxc=[0 1]';cxc=[1 0]; dxc=0; dstep(axc,bxc,cxc,dxc,1,100); xlabel('时间');ylabel('振幅');title('阶跃响应'); 运行程序,输出如下,效果如图33所示。 Kx= 2.9971-0.0310 图33离散系统的单位阶跃响应曲线 2) lqrd函数 lqrd函数用于设计连续指标函数离散控制器,函数的调用格式为: (1) [Kd,S,e]=lqrd(A,B,Q,R,Ts): 使用以下反馈法则,计算最佳增益矩阵K,即 u[n]=-Kdx[n] 并使二次型控制器最小化,即 J=∫∞0(xTQx+uTRu)dt 矩阵A与B为指定的连续指定装置 x·=Ax+Bu (2) [Kd,S,e]=lqrd(A,B,Q,R,N,Ts): 求解一般离散化系统问题,函数如下,其他参数说明同上。 J=∫∞0(xTQx+uTRu+2xTNu)dt