目录
1 前言
线性二次调节(Linear Quadratic Regulator,LQR)是一种经典的控制理论方法,用于设计控制器,使得线性系统在给定的性能指标下表现最优。
LQR的原理基于最小二乘优化问题,它的目标是设计一个状态反馈控制器,以最小化系统的性能指标。
2 连续时间系统
2.1 系统描述
考虑线性时不变系统,用状态空间形式表示:
{
x
˙
=
A
x
+
B
u
y
=
C
x
+
D
u
(1)
\left\{\begin{array}{llllllllll}\dot{x}=Ax+Bu\\ y=Cx+Du\end{array}\right. \tag{1}
{x˙=Ax+Buy=Cx+Du(1)
其中
x
x
x是系统的状态向量,
u
u
u是系统的控制输入,
y
y
y是系统的控制输出,
A
A
A是系统状态矩阵,表示状态量之间的变化关系,
B
B
B是输入矩阵,表示控制输入与状态变量的关系,
C
C
C是输出矩阵,表示状态变量与输出之间的关系,
D
D
D是传递矩阵,表示控制输入与输出之间的关系。
2.2 状态反馈控制器
LQR的目标是找到一个状态反馈控制器,根据状态反馈量 x x x获得控制输入 u u u,即
u = − K x (2) u=-Kx \tag{2} u=−Kx(2)
其中 K K K是控制器增益矩阵。
将式(2)代入式(1)的状态方程,可以得到:
x
˙
=
A
x
−
B
K
x
=
(
A
−
B
K
)
x
=
A
c
x
(3)
\dot{x}=Ax-BKx=(A-BK)x=A_c x \tag{3}
x˙=Ax−BKx=(A−BK)x=Acx(3)
因此通过选择合适的控制器增益矩阵 K K K,使式(3)的闭环系统矩阵 A c A_c Ac的特征值的实部均为负数,从而实现系统稳定控制。
2.3 代价函数
为了设计最优的控制器增益矩阵
K
K
K,LQR定义代价函数:
J
=
∫
0
∞
x
T
Q
x
+
u
T
R
u
d
t
(4)
J=\int_{0}^{\infty}x^{T}Q x+u^{T}{R u}\,\mathrm{d}t \tag{4}
J=∫0∞xTQx+uTRudt(4)
其中
Q
Q
Q是状态向量
x
x
x的半正定加权矩阵,
R
R
R是控制输入
u
u
u的正定加权矩阵。加权矩阵中某一元素数值越大,则其对应状态量或输入量越重视。
目标是找到一个最优的控制器增益矩阵 K ∗ K^* K∗,使代价函数 J J J达到最小值。
2.4 计算推导
将式(2)代入式(4),可以表达为:
J
=
∫
0
∞
x
T
(
Q
+
K
T
R
K
)
x
d
t
(5)
J=\int_{0}^{\infty}x^{T}(Q+K^TRK)x \mathrm{d}t \tag{5}
J=∫0∞xT(Q+KTRK)xdt(5)
定义一个常量对称矩阵
P
P
P,
P
=
P
T
>
0
P=P^T > 0
P=PT>0,假定其满足:
d
d
t
(
x
T
P
x
)
=
−
x
T
(
Q
+
K
T
R
K
)
x
(6)
\frac{d}{dt} (x^{T}Px) = -x^{T}(Q+K^TRK)x \tag{6}
dtd(xTPx)=−xT(Q+KTRK)x(6)
把式(6)展开化简,可以表示为:
x
˙
T
P
x
+
x
T
P
x
˙
+
x
T
Q
x
+
x
T
K
T
R
K
x
=
0
(7)
\dot{x}^T P x + x^T P \dot{x} + x^T Q x + x^TK^TRKx = 0 \tag{7}
x˙TPx+xTPx˙+xTQx+xTKTRKx=0(7)
将式(3)代入式(7),有:
x
T
A
c
T
P
x
+
x
T
P
A
c
x
+
x
T
Q
x
+
x
T
K
T
R
K
x
=
0
(8)
{x}^T A_c^T P x + x^T P A_c{x} + x^T Q x + x^TK^TRKx = 0 \tag{8}
xTAcTPx+xTPAcx+xTQx+xTKTRKx=0(8)
整理后可得:
x
T
(
A
c
T
P
+
P
A
c
+
Q
+
K
T
R
K
)
x
=
0
(9)
{x}^T ( A_c^T P + P A_c + Q + K^TRK )x = 0 \tag{9}
xT(AcTP+PAc+Q+KTRK)x=0(9)
针对式(9)所示的二次型问题,若式(9)有解,则要求括号内的部分等于0,即:
A
c
T
P
+
P
A
c
+
Q
+
K
T
R
K
=
0
(10)
A_c^T P + P A_c + Q + K^TRK = 0 \tag{10}
AcTP+PAc+Q+KTRK=0(10)
将 A c = A − B K A_c = A-BK Ac=A−BK代入上式,得到:
A T P + P A + Q + K T R K − P B K − K T B T P = 0 (11) A^T P + PA+ Q+ K^TRK -PBK - K^TB^TP = 0 \tag{11} ATP+PA+Q+KTRK−PBK−KTBTP=0(11)
令
K
=
R
−
1
B
T
P
K=R^{-1}B^TP
K=R−1BTP,则上式可以化简为:
A
T
P
+
P
A
+
Q
+
K
T
R
(
R
−
1
B
T
P
)
−
P
B
(
R
−
1
B
T
P
)
−
K
T
B
T
P
=
A
T
P
+
P
A
+
Q
+
K
T
B
T
P
−
P
B
R
−
1
B
T
P
−
K
T
B
T
P
=
A
T
P
+
P
A
+
Q
−
P
B
R
−
1
B
T
P
=
0
(12)
A^T P + PA+ Q+ K^TR(R^{-1}B^TP)-PB(R^{-1}B^TP) - K^TB^TP \\ =A^T P + PA+ Q+ K^TB^TP-PBR^{-1}B^TP - K^TB^TP \\ = A^T P + PA+ Q -PBR^{-1}B^TP = 0 \tag{12}
ATP+PA+Q+KTR(R−1BTP)−PB(R−1BTP)−KTBTP=ATP+PA+Q+KTBTP−PBR−1BTP−KTBTP=ATP+PA+Q−PBR−1BTP=0(12)
式(12)就是连续时间代数Riccati方程,在 A A A, B B B, Q Q Q, R R R已知的情况下,可以求解出矩阵 P P P。
2.5 LQR算法
- 建立系统状态空间模型,确定 A A A, B B B, C C C, D D D;
- 选择加权矩阵 Q Q Q, R R R;
- 根据式(12)求解Riccati方程,得到矩阵 P P P;
- 根据矩阵 P P P计算增益矩阵 K = R − 1 B T P K=R^{-1}B^TP K=R−1BTP;
- 计算控制输入 u = − K x u=-Kx u=−Kx。
3 离散时间系统
3.1 系统描述
考虑线性时不变离散系统:
{
x
t
+
1
=
A
x
t
+
B
u
t
y
t
=
C
x
t
+
D
u
t
(13)
\left\{\begin{array}{llllllllll} x_{t+1}=Ax_t+Bu_t\\ y_t=Cx_t+Du_t\end{array}\right. \tag{13}
{xt+1=Axt+Butyt=Cxt+Dut(13)
3.2 状态反馈控制器
u t = − K t x t (14) u_t=-K_t x_t \tag{14} ut=−Ktxt(14)
3.3 代价函数
离散LQR目标函数:
J
=
∑
t
=
0
N
−
1
(
x
t
T
Q
x
t
+
u
t
T
R
u
t
)
+
x
N
T
Q
f
x
N
(15)
J=\sum_{t=0}^{N-1}\left(x_t^{{\mathrm{T}}}\mathbf{Q}x_t+u_t^{{\mathrm{T}}}\mathbf{R}u_t \right) + x_N^T Q_f x_N \tag{15}
J=t=0∑N−1(xtTQxt+utTRut)+xNTQfxN(15)
其中
Q
Q
Q是给定的状态加权矩阵,
Q
f
Q_f
Qf是最终状态加权矩阵,R是输入加权矩阵,满足
Q
=
Q
T
≥
0
Q=Q^T \ge 0
Q=QT≥0,
Q
f
=
Q
f
T
≥
0
Q_f=Q_f^T \ge 0
Qf=QfT≥0,
R
=
R
T
>
0
R=R^T > 0
R=RT>0。
N
N
N是时间范围。
3.4 计算推导
离散系统状态可以表示为:
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
(16)
x_1 = Ax_0 + Bu_0 \\ x_2 = Ax_1 + Bu_1 \\ \vdots \tag{16}\\ x_n = Ax_{N-1} + Bu_{N-1}
x1=Ax0+Bu0x2=Ax1+Bu1⋮xn=AxN−1+BuN−1(16)
将上式逐个代入,得到:
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
(17)
x_1 = Ax_0 + Bu_0 \tag{17}\\ 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 + \cdots + Bu_{N-1}
x1=Ax0+Bu0x2=A2x0+ABu0+Bu1⋮xn=ANx0+AN−1Bu0+AN−2Bu1+⋯+BuN−1(17)
整理化简:
[
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
(18)
{\left[\begin{array}{l}{x_{0}}\\ {x_{1}}\\ {\vdots}\\ {x_{N}}\end{array}\right]}={\left[\begin{array}{l l l l l}{0}&{\cdots}&{}&{}\\ {B}&{0}&{\cdots}&{}&{}\\ {A B}&{B}&{0}&{\cdots}\\ {\vdots}&{\vdots}&{}\\ {A^{N-1}B}&{A^{N-2}B}&{\cdots}&{B}\end{array}\right]}{\left[\begin{array}{l}{u_{0}}\\ {u_{1}}\\ {\vdots}\\ {u_{N-1}}\end{array}\right]}+{\left[\begin{array}{l}{I}\\ {A}\\ {\vdots}\\ {A^{N}}\end{array}\right] x_{0}} \tag{18}
x0x1⋮xN
=
0BAB⋮AN−1B⋯0B⋮AN−2B⋯0⋯⋯B
u0u1⋮uN−1
+
IA⋮AN
x0(18)
定义
G
=
[
0
⋯
B
0
⋯
A
B
B
0
⋯
⋮
⋮
A
N
−
1
B
A
N
−
2
B
⋯
B
]
G = {\left[\begin{array}{l l l l l}{0}&{\cdots}&{}&{}\\ {B}&{0}&{\cdots}&{}&{}\\ {A B}&{B}&{0}&{\cdots}\\ {\vdots}&{\vdots}&{}\\ {A^{N-1}B}&{A^{N-2}B}&{\cdots}&{B}\end{array}\right]}
G=
0BAB⋮AN−1B⋯0B⋮AN−2B⋯0⋯⋯B
H
=
[
I
A
⋮
A
N
]
H = \left[\begin{array}{l}{I}\\ {A}\\ {\vdots}\\ {A^{N}}\end{array}\right]
H=
IA⋮AN
则式(18)可以简化为:
X
=
G
U
+
H
x
0
(19)
X = GU + Hx_0 \tag{19}
X=GU+Hx0(19)
3.4.1 动态规划法
解决多阶段决策过程最优化问题。
3.4.1.1 值函数
定义值函数
V
t
:
R
n
→
R
V_t:R^n\to R
Vt:Rn→R,其中
t
=
(
0
,
…
,
N
)
t=\left(0,\ldots,N\right)
t=(0,…,N):
V
t
(
x
t
)
=
min
u
t
,
.
.
.
,
u
N
−
1
(
∑
τ
=
t
N
−
1
(
x
τ
T
Q
x
τ
+
u
τ
T
R
u
τ
)
+
x
N
T
Q
f
x
N
)
(20)
V_t(x_t)=\operatorname*{min}_{u_{t,...,u_{N-1}}}\Bigl(\sum_{\tau=t}^{N-1}(x_{\tau}^TQx_{\tau}+u_{\tau}^TRu_{\tau})+x_N^TQ_fx_N\Bigr) \tag{20}
Vt(xt)=ut,...,uN−1min(τ=t∑N−1(xτTQxτ+uτTRuτ)+xNTQfxN)(20)
上式表示在t时刻,从状态
x
t
x_t
xt开始的LQR最小代价值。
令 z = x t z=x_t z=xt, V t V_t Vt可以表示为二次型的形式 V t ( z ) = z T P t z V_t(z) = z^T P_t z Vt(z)=zTPtz。
当
t
=
N
t=N
t=N时,
P
N
=
Q
f
P_N = Q_f
PN=Qf,代价函数为:
V
N
(
z
)
=
z
T
Q
f
z
(21)
V_N(z) = z^T Q_f z \tag{21}
VN(z)=zTQfz(21)
令
w
=
u
t
w=u_t
w=ut,根据动态规划原理,式(8)可以写成如下递归关系式:
V
t
(
z
)
=
min
w
(
z
T
Q
z
+
w
T
R
w
+
V
t
+
1
(
A
z
+
B
w
)
)
(22)
V_t(z)=\operatorname*{min}_{w} (z^TQz + w^TRw + V_{t+1}(Az+Bw)) \tag{22}
Vt(z)=wmin(zTQz+wTRw+Vt+1(Az+Bw))(22)
其中
z
T
Q
z
+
w
T
R
w
z^TQz + w^TRw
zTQz+wTRw是
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时刻开始产生的最小代价。
提取式(22)中与
w
w
w无关的项,得到:
V
t
(
z
)
=
z
T
Q
z
+
min
w
(
w
T
R
w
+
V
t
+
1
(
A
z
+
B
w
)
)
(23)
V_t(z)=z^TQz + \operatorname*{min}_{w} (w^TRw + V_{t+1}(Az+Bw)) \tag{23}
Vt(z)=zTQz+wmin(wTRw+Vt+1(Az+Bw))(23)
上式建立了
V
t
(
z
)
V_t(z)
Vt(z)与
V
t
+
1
(
z
)
V_{t+1}(z)
Vt+1(z)之间的递归关系。因此最有控制率
u
t
u_t
ut可以表示为:
u
t
=
a
r
g
min
w
(
w
T
R
w
+
V
t
+
1
(
A
z
+
B
w
)
)
(24)
u_t =arg \operatorname*{min}_{w} (w^TRw + V_{t+1}(Az+Bw)) \tag{24}
ut=argwmin(wTRw+Vt+1(Az+Bw))(24)
3.4.1.2 求极值
根据上述假设
V
t
(
z
)
=
z
T
P
t
z
V_t(z) = z^T P_t z
Vt(z)=zTPtz,则式(24)可以进一步转化为:
u
t
=
a
r
g
min
w
(
w
T
R
w
+
(
A
z
+
B
w
)
T
P
t
+
1
(
A
z
+
B
w
)
)
(25)
u_t =arg \operatorname*{min}_{w} (w^TRw + (Az+Bw)^T P_{t+1} (Az+Bw)) \tag{25}
ut=argwmin(wTRw+(Az+Bw)TPt+1(Az+Bw))(25)
对式(25)关于
w
w
w求导,导数为零的点则是极值点:
2
w
T
R
+
2
(
A
z
+
B
w
)
T
P
t
+
1
B
=
0
(26)
2w^TR + 2(Az+Bw)^T P_{t+1} B = 0 \tag{26}
2wTR+2(Az+Bw)TPt+1B=0(26)
进一步推导:
2
w
T
R
+
2
(
A
z
+
B
w
)
T
P
t
+
1
B
=
0
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
w
=
−
(
R
+
B
T
P
t
+
1
B
)
−
1
B
T
P
t
+
1
A
z
(27)
2w^TR + 2(Az+Bw)^T P_{t+1} B = 0\\ w^TR +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 Az \\ (R+B^T P_{t+1} B) w = - B^T P_{t+1} Az \\ w = -(R+B^T P_{t+1} B) ^{-1}B^T P_{t+1} Az \tag{27}
2wTR+2(Az+Bw)TPt+1B=0wTR+zTATPt+1B+wTBTPt+1B=0wT(R+BTPt+1B)=−zTATPt+1B(R+BTPt+1B)Tw=−BTPt+1TAz(R+BTPt+1B)w=−BTPt+1Azw=−(R+BTPt+1B)−1BTPt+1Az(27)
因此,最优控制输入为:
w
∗
=
−
(
R
+
B
T
P
t
+
1
B
)
−
1
B
T
P
t
+
1
A
z
(28)
w^* = -(R+B^T P_{t+1} B) ^{-1}B^T P_{t+1} Az \tag{28}
w∗=−(R+BTPt+1B)−1BTPt+1Az(28)
代入式(23),有:
V
t
(
z
)
=
z
T
Q
z
+
w
∗
T
R
w
∗
+
(
A
z
+
B
w
∗
)
T
P
t
+
1
(
A
z
+
B
w
∗
)
(29)
V_t(z)=z^TQz +w^{*T}Rw^* + (Az+Bw^*)^T P_{t+1}(Az+Bw^*) \tag{29}
Vt(z)=zTQz+w∗TRw∗+(Az+Bw∗)TPt+1(Az+Bw∗)(29)
进一步化简:
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
+
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
(30)
\begin{array}{l l l} {{V_{t}(z)}} & {{=}} & {{z^{T}Q z+w^{\ast T}R w^{\ast}+(A z+B w^{\ast})^{T}P_{t+1}(A z+B w^{\ast})}} \\ {{}} & {{=}} & {{z^{T}Q z+w^{\ast T}R w^{\ast}+z^{T}A^{T}P_{t+1}A z+2z^{T}A^{T}P_{t+1}B w^{\ast}+w^{\ast T}B^{T}P_{t+1}B w^{\ast}}} \\ {{}} & {{=}} & {{ z^TQz + z^TA^TP_{t+1}Az + w^{*T}(R+B^TP_{t+1}B)w^* + 2z^TA^TP_{t+1}Bw^* }} \\ {{}} & {{=}} & {{ 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}} \\ \end{array} \tag{30}
Vt(z)====zTQz+w∗TRw∗+(Az+Bw∗)TPt+1(Az+Bw∗)zTQz+w∗TRw∗+zTATPt+1Az+2zTATPt+1Bw∗+w∗TBTPt+1Bw∗zTQz+zTATPt+1Az+w∗T(R+BTPt+1B)w∗+2zTATPt+1Bw∗zT(Q+ATPt+1A−ATPt+1B(R+BTPt+1B)−1BTPt+1A)z(30)
则可以得到:
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
(31)
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{31}
Pt=Q+ATPt+1A−ATPt+1B(R+BTPt+1B)−1BTPt+1A(31)
P
t
=
Q
+
A
T
P
t
+
1
A
+
A
T
P
t
+
1
B
K
t
(32)
P_t= Q + A^TP_{t+1}A+A^TP_{t+1}BK_t \tag{32}
Pt=Q+ATPt+1A+ATPt+1BKt(32)
3.5 LQR算法
- 建立系统状态空间模型,确定 A A A, B B B, C C C, D D D;
- 选择加权矩阵 Q Q Q, Q f Q_f Qf, R R R;
- 确定迭代范围 N N N;
- 迭代初始值 P N = Q f P_N=Q_f PN=Qf;
- 循环迭代, t = N , . . . , 1 t=N,...,1 t=N,...,1,根据式(32)计算 P t P_t Pt;
- 根据矩阵 P t P_t Pt计算增益矩阵 K t = − ( R + B T P t + 1 B ) − 1 B T P t + 1 A K_t=-(R+B^T P_{t+1} B) ^{-1}B^T P_{t+1} A Kt=−(R+BTPt+1B)−1BTPt+1A,时间 t = 0 , . . . , N − 1 t=0,...,N-1 t=0,...,N−1;
- 计算控制输入 u t = − K t x t u_t=-K_tx_t ut=−Ktxt。