概述
本文介紹離散時間有限範圍內的LQR(Linear Quadratic Regulator)算法求解過程.
LQR問題背景
對於一個離散時間系統:
xt+1=Axt+But,x0=xinit(1)
其中,A∈Rn×n,B∈Rn×m
關於最優問題,就在於如何選擇合適的u0,u1,...,使得狀態量x0,x1,...足夠小,因此得到好的調節和控制;或者使得u0,u1,...足夠小,以使用更少的能量。這兩個量通常相互制約,如果採用更大的輸入u,就會驅使狀態量x更快達到0。採用線性二次調節原理可以解決這個問題。
LQR代價函數
爲了表示控制系統達到穩定控制所付出的代價,定義如下二次型代價函數:
J(U)=τ=0∑N−1(xτTQxτ+uτTRuτ)+xNTQfxN(2)
其中函數參數U=(u0,u1,..,uN),並且矩陣Q,Qf,R爲正定矩陣,及
Q=QT≥0,Qf=QfT≥0,R=RT>0
Q |
Qf |
R |
給定狀態代價矩陣 |
最終狀態代價矩陣 |
輸入代價矩陣 |
- N:時間範圍(考慮N=∞)
- xτTQxτ:衡量狀態偏差
- uτTRuτ:衡量輸入大小
- xNTQfxN:衡量最終狀態偏差
- Q,R:分別設定狀態偏差和輸入的相對權重
- R>0:意味着任何非零輸入都增加J的代價
因此,關於LQR問題就是找出使得代價函數J(U)最小的一組控制輸入(u0,u1,...,uN−1)lqr。
求解LQR方法
本文主要介紹兩種求解LQR的方法,分別爲最小二乘法和動態規劃算法。
最小二乘法
根據公式(1)可知,x0是X=(x0,...,xN)的線性函數,並且U=(u0,...,uN−1),可以得出如下關係:
x1x2⋮xn=Ax0+Bu0=Ax1+Bu1=AxN−1+BuN−1(3)
將上述公式(3)逐個帶入得
x1x2⋮xn=Ax0+Bu0=A2x0+ABu0+Bu1=ANx0+AN−1Bu0+AN−2Bu1+⋯+BuN−1(4)
整理得
⎣⎢⎢⎢⎡x0x1⋮xN⎦⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎢⎡0BAB⋮AN−1B…0B⋮AN−2B…0……B⎦⎥⎥⎥⎥⎥⎤⎣⎢⎢⎢⎡u0u1⋮uN−1⎦⎥⎥⎥⎤+⎣⎢⎢⎢⎡IA⋮AN⎦⎥⎥⎥⎤x0(5)
其中
G=⎣⎢⎢⎢⎢⎢⎡0BAB⋮AN−1B…0B⋮AN−2B…0……B⎦⎥⎥⎥⎥⎥⎤,H=⎣⎢⎢⎢⎡IA⋮AN⎦⎥⎥⎥⎤
等式(5)可以進一步表示爲
X=GU+Hx0(6)
其中,G∈RNn×Nm,H∈RNn×n。
從而等式(2)所表示得代價函數可以表示爲
J(U)=∥disg(Q1/2,…,Q1/2,Qf1/2)(GU+Hx0)∥2+∥diag(R1/2,…,R1/2)U∥2(7)
這就轉化成一個求解最小二乘法的問題,其問題大小爲N(n+m)×Nm。
動態規劃法(Dynamic Programming)
動態規劃算法是解決多階段決策過程最優化的一種有效的數學方法。
值函數
首先定義一個值函數Vt:Rn→R,其中t=(0,…,N):
Vt(z)=ut,…,uN−1min(τ=t∑N−1(xτTQxτ+uτtRuτ)+xNTQfxN)(8)
如果設置xt=z,根據公式(1)的關係,xτ+1=Axτ+Buτ,並且τ=t,…,N。
- Vt(z)可以表示在t時刻,從狀態z開始的LQR最小代價值
- V0(x0)表示在0時刻,從狀態x0開始的LQR最小代價值
Vt可以表示爲二次型的形式,即VT(z)=zTPtz,其中Pt=PtT≥0。當t=N時,代價值函數爲:
VN(z)=zTQfz(9)
因此PN=Qf。
根據動態規劃原理,等式(8)可以寫成如下遞歸關係式:
Vt(z)=wmin(zTQz+wTRw+Vt+1(Az+Bw))(10)
其中,
- zTQz+wTRw:如果ut=w,則代表t時刻產生的代價值;
- Vt+1(Az+Bw):代表從t+1時刻開始,引起的最小代價值;
提取等式(10)中與w無關的選項得
Vt(z)=zTQz+wmin(wTRw+Vt+1(Az+Bw))(11)
等式(11)描述了Vt(z)與Vt+1(z)之間的遞歸關係。
求極值
假設Vt+1=zTPt+1z,並且Pt+1=Pt+1T≥0,等式(11)可以進一步轉化爲Pt+1的形式:
Vt(z)=zTQz+wmin(wTRw+(Az+Bw)TPt+1(Az+Bw))(12)
爲了求最小值,對w求導,導數爲零的點即爲最值點。
2wTR+2(Az+Bw)TPt+1B=0(13)
推導等式(13),求取w:
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+BTPt+1B)−1BTPt+1Az(15)
將等式(15)帶入等式(12)得
Vt(z)=zTQz+w∗TRw∗+(Az+Bw∗)TPt+1(Az+Bw∗)(16)
對等式(16)化簡得
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∗=zTQz+zTATPt+1Az+zTATPt+1B(R+BTPt+1B)−1(R+BTPt+1B)(R+BTPt+1B)−1BTPt+1Az−2zTATPt+1B(R+BTPt+1B)−1BTPt+1Az=zTQz+zTATPt+1Az+zTATPt+1B(R+BTPt+1B)−1BTPt+1Az−2zTATPt+1B(R+BTPt+1B)−1BTPt+1Az=zTQz+zTATPt+1Az−zTATPt+1B(R+BTPt+1B)−1BTPt+1Az=zT(Q+ATPt+1A−ATPt+1B(R+BTPt+1B)−1BTPt+1A)z=zTPtz(17)
上述公式化簡過程中,由於Pt+1=Pt+1T,R=RT,所以((R+BTPt+1B)−1)T=(R+BTPt+1B)−1。
由等式(17)可知
Pt=Q+ATPt+1A−ATPt+1B(R+BTPt+1B)−1BTPt+1A(18)
求解過程
關於LQR的求解過程,可以採用動態規劃算法,依據上述公式(20)的遞歸關係,反向遞推,求出滿足一定條件的最小代價值。
- 確定迭代範圍N
- 設置迭代初始值PN=Qf
- 循環迭代,t=N,…,1
Pt−1=Q+ATPt+1A−ATPt+1B(R+BTPt+1B)−1BTPt+1A
- 則反饋係數Kt=−(R+BTPt+1B)−1BTPt+1A,對於時間t=0,…,N−1
- 優化的控制量utlqr=Ktxt