最优算法-LQR-离散时间有限边界

概述

本文介绍离散时间有限范围内的LQR(Linear Quadratic Regulator)算法求解过程.

LQR问题背景

对于一个离散时间系统:
x t + 1 = A x t + B u t , x 0 = x i n i t (1) x_{t+1}=Ax_t + Bu_t,x_0=x_{init}\tag{1} xt+1=Axt+But,x0=xinit(1)
其中, A ∈ R n × n A\in R^{n\times n} ARn×n B ∈ R n × m B\in R^{n\times m} BRn×m

关于最优问题,就在于如何选择合适的 u 0 , u 1 , . . . u_0,u_1,... u0,u1,...,使得状态量 x 0 , x 1 , . . . x_0,x_1,... x0,x1,...足够小,因此得到好的调节和控制;或者使得 u 0 , u 1 , . . . u_0,u_1,... u0,u1,...足够小,以使用更少的能量。这两个量通常相互制约,如果采用更大的输入 u u u,就会驱使状态量 x x x更快达到0。采用线性二次调节原理可以解决这个问题。

LQR代价函数

为了表示控制系统达到稳定控制所付出的代价,定义如下二次型代价函数:
J ( U ) = ∑ τ = 0 N − 1 ( x τ T Q x τ + u τ T R u τ ) + x N T Q f x N (2) J(U)=\sum^{N-1}_{\tau=0}(x^{T}_{\tau}Qx_{\tau} + u^{T}_{\tau}Ru_{\tau})+ x^{T}_{N}Q_{f}x_{N}\tag{2} J(U)=τ=0N1(xτTQxτ+uτTRuτ)+xNTQfxN(2)
其中函数参数 U = ( u 0 , u 1 , . . , u N ) U = (u_0,u_1,..,u_N) U=(u0,u1,..,uN),并且矩阵 Q , Q f , R Q,Q_f,R Q,Qf,R为正定矩阵,及
Q = Q T ≥ 0 , Q f = Q f T ≥ 0 , R = R T > 0 \begin{array}{cl} Q=Q^{T}\geq0,&Q_f=Q_{f}^{T}\geq0,&R=R^{T}>0 \end{array} Q=QT0,Qf=QfT0,R=RT>0

Q Q Q Q f Q_f Qf R R R
给定状态代价矩阵最终状态代价矩阵输入代价矩阵
  • N N N:时间范围(考虑 N = ∞ N = \infty N=)
  • x τ T Q x τ x^{T}_{\tau} Q x_{\tau} xτTQxτ:衡量状态偏差
  • u τ T R u τ u^{T}_{\tau} R u_{\tau} uτTRuτ:衡量输入大小
  • x N T Q f x N x^{T}_{N} Q_{f} x_{N} xNTQfxN:衡量最终状态偏差
  • Q Q Q R R R:分别设定状态偏差和输入的相对权重
  • R > 0 R>0 R>0:意味着任何非零输入都增加 J J J的代价

因此,关于LQR问题就是找出使得代价函数 J ( U ) J(U) J(U)最小的一组控制输入 ( u 0 , u 1 , . . . , u N − 1 ) l q r (u_0,u_1,...,u_{N-1})_{lqr} (u0,u1,...,uN1)lqr

求解LQR方法

本文主要介绍两种求解LQR的方法,分别为最小二乘法和动态规划算法。

最小二乘法

根据公式(1)可知, x 0 x_0 x0 X = ( x 0 , . . . , x N ) X = (x_0,...,x_N) X=(x0,...,xN)的线性函数,并且 U = ( u 0 , . . . , u N − 1 ) U = (u_0,...,u_{N-1}) U=(u0,...,uN1),可以得出如下关系:
x 1 = A x 0 + B u 0 x 2 = A x 1 + B u 1 ⋮ x n = A x N − 1 + B u N − 1 (3) \begin{array}{cl} x_1 &= Ax_0 + Bu_0\\ x_2 &= Ax_1 + Bu_1\\ \vdots\\ x_n &= Ax_{N-1} + Bu_{N-1} \end{array}\tag{3} x1x2xn=Ax0+Bu0=Ax1+Bu1=AxN1+BuN1(3)
将上述公式(3)逐个带入得
x 1 = A x 0 + B u 0 x 2 = A 2 x 0 + A B u 0 + B u 1 ⋮ x n = A N x 0 + A N − 1 B u 0 + A N − 2 B u 1 + ⋯ + B u N − 1 (4) \begin{array}{cl} x_1 &= Ax_0 + Bu_0\\ x_2 &= A^{2}x_0 + ABu_0 + Bu_1\\ \vdots\\ x_n &= A^{N}x_0 + A^{N-1}Bu_0 + A^{N-2}Bu_1 + \dots+ Bu_{N-1} \end{array} \tag{4} x1x2xn=Ax0+Bu0=A2x0+ABu0+Bu1=ANx0+AN1Bu0+AN2Bu1++BuN1(4)
整理得
[ x 0 x 1 ⋮ x N ] = [ 0 … B 0 … A B B 0 … ⋮ ⋮ A N − 1 B A N − 2 B … B ] [ u 0 u 1 ⋮ u N − 1 ] + [ I A ⋮ A N ] x 0 (5) \left[\begin{array}{cl} x_0\\ x_1\\ \vdots\\ x_N \end{array}\right]= \left[ \begin{array}{cl} 0 & \dots \\ B & 0 & \dots \\ AB & B & 0 & \dots \\ \vdots & \vdots \\ A^{N-1}B & A^{N-2}B & \dots & B \end{array}\right] \left[ \begin{array}{cl} u_0\\ u_1\\ \vdots\\ u_{N-1} \end{array} \right]+ \left[ \begin{array}{cl} I\\ A\\ \vdots\\ A^{N} \end{array} \right]x_0 \tag{5} x0x1xN=0BABAN1B0BAN2B0Bu0u1uN1+IAANx0(5)
其中
G = [ 0 … B 0 … A B B 0 … ⋮ ⋮ A N − 1 B A N − 2 B … B ] , H = [ I A ⋮ A N ] G=\left[ \begin{array}{cl} 0 & \dots \\ B & 0 & \dots \\ AB & B & 0 & \dots \\ \vdots & \vdots \\ A^{N-1}B & A^{N-2}B & \dots & B \end{array}\right],H=\left[ \begin{array}{cl} I\\ A\\ \vdots\\ A^{N} \end{array} \right] G=0BABAN1B0BAN2B0B,H=IAAN

等式(5)可以进一步表示为
X = G U + H x 0 (6) X= GU + Hx_0 \tag{6} X=GU+Hx0(6)
其中, G ∈ R N n × N m G\in R^{Nn\times Nm} GRNn×Nm H ∈ R N n × n H\in R^{Nn\times n} HRNn×n

从而等式(2)所表示得代价函数可以表示为
J ( U ) = ∥ d i a g ( Q 1 / 2 , … , Q 1 / 2 , Q f 1 / 2 ) ( G U + H x 0 ) ∥ 2 + ∥ d i a g ( R 1 / 2 , … , R 1 / 2 ) U ∥ 2 (7) J(U)=\parallel diag(Q^{1/2},\dots,Q^{1/2},Q^{1/2}_{f})(GU+Hx_0)\parallel^2+ \parallel diag(R^{1/2},\dots,R^{1/2})U\parallel^2 \tag{7} J(U)=diag(Q1/2,,Q1/2,Qf1/2)(GU+Hx0)2+diag(R1/2,,R1/2)U2(7)
这就转化成一个求解最小二乘法的问题,其问题大小为 N ( n + m ) × N m N(n + m)\times Nm N(n+m)×Nm

动态规划法(Dynamic Programming)

动态规划算法是解决多阶段决策过程最优化的一种有效的数学方法。

值函数

首先定义一个值函数 V t : R n → R V_t:R^n \to R Vt:RnR,其中 t = ( 0 , … , N ) t=(0,\dots,N) t=(0,,N)
V t ( z ) = min ⁡ u t , … , u N − 1 ( ∑ τ = t N − 1 ( x τ T Q x τ + u τ t R u τ ) + x N T Q f x N ) (8) V_t(z)=\min_{u_t,\dots,u_{N-1}}\Bigl(\sum_{\tau=t}^{N-1}(x^T_\tau Qx_\tau + u^t_\tau Ru_\tau) + x_N^TQ_fx_N\Bigr) \tag{8} Vt(z)=ut,,uN1min(τ=tN1(xτTQxτ+uτtRuτ)+xNTQfxN)(8)
如果设置 x t = z x_t = z xt=z,根据公式(1)的关系, x τ + 1 = A x τ + B u τ x_{\tau+1} = Ax_{\tau} + Bu_{\tau} xτ+1=Axτ+Buτ,并且 τ = t , … , N \tau=t,\dots,N τ=t,,N

  • V t ( z ) V_t(z) Vt(z)可以表示在 t t t时刻,从状态 z z z开始的LQR最小代价值
  • V 0 ( x 0 ) V_0(x_0) V0(x0)表示在0时刻,从状态 x 0 x_0 x0开始的LQR最小代价值

V t V_t Vt可以表示为二次型的形式,即 V T ( z ) = z T P t z , 其 中 P t = P t T ≥ 0 V_T(z)=z^TP_tz,其中P_t=P_t^T \geq 0 VT(z)=zTPtz,Pt=PtT0。当 t = N t=N t=N时,代价值函数为:
V N ( z ) = z T Q f z (9) V_N(z) = z^TQ_f z \tag{9} VN(z)=zTQfz(9)
因此 P N = Q f P_N = Q_f PN=Qf

根据动态规划原理,等式(8)可以写成如下递归关系式:
V t ( z ) = min ⁡ w ( z T Q z + w T R w + V t + 1 ( A z + B w ) ) (10) V_t(z)=\min_w\bigl(z^TQz + w^TRw + V_{t+1}(Az+Bw)\bigr)\tag{10} Vt(z)=wmin(zTQz+wTRw+Vt+1(Az+Bw))(10)
其中,

  • z T Q z + w T R w z^TQz + w^TRw zTQz+wTRw:如果 u t = w u_t = w ut=w,则代表 t t t时刻产生的代价值;
  • V t + 1 ( A z + B w ) V_{t+1}(Az+Bw) Vt+1(Az+Bw):代表从 t + 1 t+1 t+1时刻开始,引起的最小代价值;

提取等式(10)中与 w w w无关的选项得
V t ( z ) = z T Q z + min ⁡ w ( w T R w + V t + 1 ( A z + B w ) ) (11) V_t(z)=z^TQz + \min_w\bigl(w^TRw + V_{t+1}(Az+Bw)\bigr)\tag{11} Vt(z)=zTQz+wmin(wTRw+Vt+1(Az+Bw))(11)
等式(11)描述了 V t ( z ) V_t(z) Vt(z) V t + 1 ( z ) V_{t+1}(z) Vt+1(z)之间的递归关系。

求极值

假设 V t + 1 = z T P t + 1 z V_{t+1}= z^TP_{t+1}z Vt+1=zTPt+1z,并且 P t + 1 = P t + 1 T ≥ 0 P_{t+1}=P^{T}_{t+1} \geq0 Pt+1=Pt+1T0,等式(11)可以进一步转化为 P t + 1 P_{t+1} Pt+1的形式:
V t ( z ) = z T Q z + min ⁡ w ( w T R w + ( A z + B w ) T P t + 1 ( A z + B w ) ) (12) V_t(z)=z^TQz + \min_w\bigl(w^TRw + (Az+Bw)^TP_{t+1}(Az+Bw)\bigr)\tag{12} Vt(z)=zTQz+wmin(wTRw+(Az+Bw)TPt+1(Az+Bw))(12)
为了求最小值,对 w w w求导,导数为零的点即为最值点。
2 w T R + 2 ( A z + B w ) T P t + 1 B = 0 (13) 2w^TR + 2(Az+Bw)^TP_{t+1}B = 0 \tag{13} 2wTR+2(Az+Bw)TPt+1B=0(13)
推导等式(13),求取 w w w:
w T R + z T A T P t + 1 B + w T B T P t + 1 B = 0 w T ( R + B T P t + 1 B ) = − z T A T P t + 1 B (合并同类项并移项) ( R + B T P t + 1 B ) T w = − B T P t + 1 T A z (转置) ( R + B T P t + 1 B ) w = − B T P t + 1 A z ( P t + 1 = P t + 1 T , R = R T ) w = − ( R + B T P t + 1 B ) − 1 B T P t + 1 A z (矩阵求逆) (14) \begin{array}{cl} w^TR + z^{T}A^{T}P_{t+1}B+w^{T}B^{T}P_{t+1}B &= 0\\ w^T(R + B^TP_{t+1}B) &= - z^{T}A^{T}P_{t+1}B &\text{(合并同类项并移项)}\\ (R + B^TP_{t+1}B)^Tw &= -B^TP_{t+1}^{T}Az & \text{(转置)}\\ (R + B^TP_{t+1}B)w &= -B^TP_{t+1}Az &(P_{t+1}=P^{T}_{t+1},R=R^T)\\ w &=-(R + B^TP_{t+1}B)^{-1}B^TP_{t+1}Az &\text{(矩阵求逆)} \end{array}\tag{14} wTR+zTATPt+1B+wTBTPt+1BwT(R+BTPt+1B)(R+BTPt+1B)Tw(R+BTPt+1B)ww=0=zTATPt+1B=BTPt+1TAz=BTPt+1Az=(R+BTPt+1B)1BTPt+1Az(合并同类项并移项)(转置)(Pt+1=Pt+1T,R=RT)(矩阵求逆)(14)
由等式(14)可知,最优输入为
w ∗ = − ( R + B T P t + 1 B ) − 1 B T P t + 1 A z (15) w^* =-(R + B^TP_{t+1}B)^{-1}B^TP_{t+1}Az \tag{15} w=(R+BTPt+1B)1BTPt+1Az(15)
将等式(15)带入等式(12)得
V t ( z ) = z T Q z + w ∗ T R w ∗ + ( A z + B w ∗ ) T P t + 1 ( A z + B w ∗ ) (16) V_t(z)=z^TQz + w^{*T}Rw^* + (Az+Bw^*)^TP_{t+1}(Az+Bw^*)\tag{16} Vt(z)=zTQz+wTRw+(Az+Bw)TPt+1(Az+Bw)(16)
对等式(16)化简得
V t ( z ) = z T Q z + w ∗ T R w ∗ + ( A z + B w ∗ ) T P t + 1 ( A z + B w ∗ ) = z T Q z + w ∗ T R w ∗ + z T A T P t + 1 A z + 2 z T A T P t + 1 B w ∗ + w ∗ T B T P t + 1 B w ∗ = z T Q z + z T A T P t + 1 A z + w ∗ T ( R + B T P t + 1 B ) w ∗ + 2 z T A T P t + 1 B w ∗ = z T Q z + z T A T P t + 1 A z + z T A T P t + 1 B ( R + B T P t + 1 B ) − 1 ( R + B T P t + 1 B ) ( R + B T P t + 1 B ) − 1 B T P t + 1 A z − 2 z T A T P t + 1 B ( R + B T P t + 1 B ) − 1 B T P t + 1 A z = z T Q z + z T A T P t + 1 A z + z T A T P t + 1 B ( R + B T P t + 1 B ) − 1 B T P t + 1 A z − 2 z T A T P t + 1 B ( R + B T P t + 1 B ) − 1 B T P t + 1 A z = z T Q z + z T A T P t + 1 A z − z T A T P t + 1 B ( R + B T P t + 1 B ) − 1 B T P t + 1 A z = z T ( Q + A T P t + 1 A − A T P t + 1 B ( R + B T P t + 1 B ) − 1 B T P t + 1 A ) z = z T P t z (17) \begin{array}{cl} V_t(z) &= z^TQz + w^{*T}Rw^* + (Az+Bw^*)^TP_{t+1}(Az+Bw^*)\\ &= z^TQz + w^{*T}Rw^* + z^TA^TP_{t+1}Az + 2z^TA^TP_{t+1}Bw^* + w^{*T}B^TP_{t+1}Bw^*\\ & = z^TQz + z^TA^TP_{t+1}Az + w^{*T}(R+B^TP_{t+1}B)w^* + 2z^TA^TP_{t+1}Bw^*\\ & = z^TQz + z^TA^TP_{t+1}Az\\ &+z^TA^TP_{t+1}B(R + B^TP_{t+1}B)^{-1}(R+B^TP_{t+1}B)(R + B^TP_{t+1}B)^{-1}B^TP_{t+1}Az\\ &-2z^TA^TP_{t+1}B(R + B^TP_{t+1}B)^{-1}B^TP_{t+1}Az\\ &=z^TQz + z^TA^TP_{t+1}Az\\ &+z^TA^TP_{t+1}B(R + B^TP_{t+1}B)^{-1}B^TP_{t+1}Az\\ &-2z^TA^TP_{t+1}B(R + B^TP_{t+1}B)^{-1}B^TP_{t+1}Az\\ &= z^TQz + z^TA^TP_{t+1}Az - z^TA^TP_{t+1}B(R + B^TP_{t+1}B)^{-1}B^TP_{t+1}Az\\ &= z^T(Q + A^TP_{t+1}A - A^TP_{t+1}B(R + B^TP_{t+1}B)^{-1}B^TP_{t+1}A)z\\ &= z^TP_tz \end{array}\tag{17} Vt(z)=zTQz+wTRw+(Az+Bw)TPt+1(Az+Bw)=zTQz+wTRw+zTATPt+1Az+2zTATPt+1Bw+wTBTPt+1Bw=zTQz+zTATPt+1Az+wT(R+BTPt+1B)w+2zTATPt+1Bw=zTQz+zTATPt+1Az+zTATPt+1B(R+BTPt+1B)1(R+BTPt+1B)(R+BTPt+1B)1BTPt+1Az2zTATPt+1B(R+BTPt+1B)1BTPt+1Az=zTQz+zTATPt+1Az+zTATPt+1B(R+BTPt+1B)1BTPt+1Az2zTATPt+1B(R+BTPt+1B)1BTPt+1Az=zTQz+zTATPt+1AzzTATPt+1B(R+BTPt+1B)1BTPt+1Az=zT(Q+ATPt+1AATPt+1B(R+BTPt+1B)1BTPt+1A)z=zTPtz(17)
上述公式化简过程中,由于 P t + 1 = P t + 1 T , R = R T P_{t+1}=P^{T}_{t+1},R=R^T Pt+1=Pt+1T,R=RT,所以 ( ( R + B T P t + 1 B ) − 1 ) T = ( R + B T P t + 1 B ) − 1 \bigl((R + B^TP_{t+1}B)^{-1}\bigr)^T = (R + B^TP_{t+1}B)^{-1} ((R+BTPt+1B)1)T=(R+BTPt+1B)1

由等式(17)可知
P t = Q + A T P t + 1 A − A T P t + 1 B ( R + B T P t + 1 B ) − 1 B T P t + 1 A (18) P_t = Q + A^TP_{t+1}A - A^TP_{t+1}B(R + B^TP_{t+1}B)^{-1}B^TP_{t+1}A \tag{18} Pt=Q+ATPt+1AATPt+1B(R+BTPt+1B)1BTPt+1A(18)

求解过程

关于LQR的求解过程,可以采用动态规划算法,依据上述公式(20)的递归关系,反向递推,求出满足一定条件的最小代价值。

  1. 确定迭代范围 N N N
  2. 设置迭代初始值 P N = Q f P_N=Q_f PN=Qf
  3. 循环迭代, t = N , … , 1 t = N,\dots,1 t=N,,1

P t − 1 = Q + A T P t + 1 A − A T P t + 1 B ( R + B T P t + 1 B ) − 1 B T P t + 1 A P_{t-1} = Q + A^TP_{t+1}A - A^TP_{t+1}B(R + B^TP_{t+1}B)^{-1}B^TP_{t+1}A Pt1=Q+ATPt+1AATPt+1B(R+BTPt+1B)1BTPt+1A

  1. 则反馈系数 K t = − ( R + B T P t + 1 B ) − 1 B T P t + 1 A K_t = -(R + B^TP_{t+1}B)^{-1}B^TP_{t+1}A Kt=(R+BTPt+1B)1BTPt+1A,对于时间 t = 0 , … , N − 1 t=0,\dots,N-1 t=0,,N1
  2. 优化的控制量 u t l q r = K t x t u_t^{lqr}=K_tx_t utlqr=Ktxt
  • 6
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

henry.zhu51

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值