该文档用以总结离散LQR的基本原理,反馈控制率的求解和一些拓展(时变系统,跟踪命题等)。主要参考的是Stanford的课程EE363: Linear Dynamical Systems的部分课件。
目录
1 有限时域离散LQR的基本原理
这里我们首先考虑一个离散的线性系统:
xt+1=Axt+But,x0=xinit
LQR的目标就在于,找到一组控制序列
u0,u1,... 能够使得:
- x0,x1,... 尽量小,即将状态调节到零点;
- u0,u1,... 尽量小,即控制器付出较小的努力;
然而,这两个目标往往是冲突的,因为较大的控制作用u 能更快地将状态调节到零点。因此LQR就是根据需要设计出一组控制率来实现上面两个目标的权衡。
为此,我们定义如下的二次代价函数(quadratic cost function):
J(U)=∑τ=0N−1(xTτQxτ+uTτRuτ)+xTNQfxN
这里
U=(u0,u1,...,uN−1) ,且
Q=QT≥0,Qf=QTf≥0,R=RT>0
分别被称为 state cost, final state cost, input cost 矩阵。
代价函数中的三项分别用来衡量状态偏差,输入偏差以及最终状态偏差。Q 和 R 用来确定状态和输入的相对权重。
因此,LQR的问题就是,找到一组序列:ulqr0,...,ulqrN−1 来最小化代价函数 J(U) 。
通常 Q 和 R 的形式为:
R=ρI,Q=Qf=CTC
这里
C∈Rp×n,ρ∈R,ρ>0 。
于是,代价函数就可以变形为:
J(U)=∑τ=0N∥yτ∥2+ρ∑τ=0N−1∥uτ∥2
这里
y=Cx ,
ρ√ 在这里给出了输出和输入的相对权重。
2 基于动态规划(Dynamic Programming)的求解
LQR命题也可以通过最小二乘(least-squares)的方法求解,但这里我们只讨论基于动态规划的求解方法。
这里我们首先定义一个价值函数(value function)Vt:Rn→R
Vt(z)=minut,...,uN−1∑τ=tN−1(xTτQxτ+uTτRuτ)+xTNQfxN
满足约束
xt=z,xτ+1=Axτ+Buτ,τ=t,...,N−1
即,Vt(z) 给出的是从 t 时刻的状态 z 开始的LQR的代价函数。当 t=0 时,V0(x0) 就是原始的LQR代价函数。
我们可以证明 Vt 是二次型,即Vt(z)=zTPtz ,其中 Pt=PTt≥0 。
首先,我们可以知道,当 t=N 时有:
VN(z)=zTQfz
因此我们有
PN=Qf 。
现在我们假设Vt+1(z) 已知,根据动态规划(DP)的原理,有:
Vt(z)=minw(zTQz+wTRw+Vt+1(Az+Bw))
- zTQz+wTRw 是从当前时刻的代价值
- Vt+1(A+Bwz) 是从下一时刻到 N 时刻的代价值。
因此这就是一个典型的动态规划问题。
因为当前状态 z 与优化命题无关,因此上面的优化命题也可以改写为:
Vt(z)=zTQz+minw(wTRw+Vt+1(Az+Bw))
也就是说,当前时刻
t 的控制率
ut 取值应该如下:
ulqrt=argminw(wTRw+Vt+1(Az+Bw))
假设Vt+1(z)=zTPt+1z,Pt+1=PTt+1≥0 ,我们可以证明Vt 具有同样的形式。
将Vt+1(z)=zTPt+1z 代入上面Vt(z) 的表达式,即有:
Vt(z)=zTQz+minw(wTRw+(Az+Bw)TPt+1(Az+Bw))
对于这样一个无约束的凸优化命题令其导数等于0即可以得到最优解。导数等于0得到的等式为:
2wTR+2(Az+Bw)TPt+1B=0
因此,当前时刻的最优控制率为:
w∗=−(R+BTPt+1B)−1BTPt+1Az
将上面的结果代入Vt(x) 的表达式,即
Vt(z)=zTQz+w∗TRw∗+(Az+Bw∗)TPt+1(Az+Bw∗)=zT(Q+ATPt+1A−ATPt+1B(R+BTPt+1)−1BTPt+1A)z=zTPtz
其中,
Pt=Q+ATPt+1A−ATPt+1B(R+BTPt+1)−1BTPt+1A
容易证明 Pt=PTt≥0
因此,LQR的求解过程可以总结如下:
- set PN:=Qf
- for t=N,...,1,
Pt−1:=Q+ATPtA−ATPtB(R+BTPt)−1BTPtA
- for t=0,...,.N−1 , define Kt:=−(R+BTPt+1B)−1BTPt+1A
- for t=0,...,.N−1 , ulqrt=Ktxt
从上面的推导我们可以看出,LQR中,最优控制率是状态的线性反馈。
当t 远小于 N 的时候,稳态的 Pss 可以近似收敛并满足下面的方程:
Pss=Q+ATPssA−ATPssB(R+BTPss)−1BTPssA
这个方程被称为代数黎卡提方程(algebraic Riccati equation, ARE)。
因此,当时刻
t 距时域终点
N 较远时,LQR的控制率可以近似看作状态
x 的常数反馈,即
ut=Kssxt,Kss=−(R+BTPssB)−1BTPssA
3 一些拓展
针对时变系统
xt+1=Atxt+Btut
我们可以定义对应的时变代价函数
J=∑τ=0N−1(xTτQτxτ+uTτRτuτ)+xTNQfxN
可以看到,终点时刻的加权阵 Qf 并没有发生变化,因此前面根据DP推导得到的LQR的架构可以直接拓展到时变系统。显然,前面提到的稳态情况下的常值反馈在时变系统中将不复存在。
针对跟踪命题,代价函数可以写成
J=∑τ=0N−1(xτ−x¯τ)TQτ(xτ−x¯τ)+∑τ=0N−1(uτ−u¯τ)TRτ(uτ−u¯τ)
(简要起见这里舍去了终端状态的代价)
其中,
x¯τ 和
u¯τ 分别是状态和输入要跟踪的轨迹。
通过一些附加的推导,前面DP推导的结果也可以运用在这样的跟踪命题中。
Ref.
Stanford, EE363: Linear Dynamical Systems