最優算法-LQR-離散時間有限邊界

概述

本文介紹離散時間有限範圍內的LQR(Linear Quadratic Regulator)算法求解過程.

LQR問題背景

對於一個離散時間系統:
xt+1=Axt+But,x0=xinit(1) x_{t+1}=Ax_t + Bu_t,x_0=x_{init}\tag{1}
其中,ARn×nA\in R^{n\times n}BRn×mB\in R^{n\times m}

關於最優問題,就在於如何選擇合適的u0,u1,...u_0,u_1,...,使得狀態量x0,x1,...x_0,x_1,...足夠小,因此得到好的調節和控制;或者使得u0,u1,...u_0,u_1,...足夠小,以使用更少的能量。這兩個量通常相互制約,如果採用更大的輸入uu,就會驅使狀態量xx更快達到0。採用線性二次調節原理可以解決這個問題。

LQR代價函數

爲了表示控制系統達到穩定控制所付出的代價,定義如下二次型代價函數:
J(U)=τ=0N1(xτTQxτ+uτTRuτ)+xNTQfxN(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}
其中函數參數U=(u0,u1,..,uN)U = (u_0,u_1,..,u_N),並且矩陣Q,Qf,RQ,Q_f,R爲正定矩陣,及
Q=QT0,Qf=QfT0,R=RT>0 \begin{array}{cl} Q=Q^{T}\geq0,&Q_f=Q_{f}^{T}\geq0,&R=R^{T}>0 \end{array}

QQ QfQ_f RR
給定狀態代價矩陣 最終狀態代價矩陣 輸入代價矩陣
  • NN:時間範圍(考慮N=N = \infty)
  • xτTQxτx^{T}_{\tau} Q x_{\tau}:衡量狀態偏差
  • uτTRuτu^{T}_{\tau} R u_{\tau}:衡量輸入大小
  • xNTQfxNx^{T}_{N} Q_{f} x_{N}:衡量最終狀態偏差
  • QQRR:分別設定狀態偏差和輸入的相對權重
  • R>0R>0:意味着任何非零輸入都增加JJ的代價

因此,關於LQR問題就是找出使得代價函數J(U)J(U)最小的一組控制輸入(u0,u1,...,uN1)lqr(u_0,u_1,...,u_{N-1})_{lqr}

求解LQR方法

本文主要介紹兩種求解LQR的方法,分別爲最小二乘法和動態規劃算法。

最小二乘法

根據公式(1)可知,x0x_0X=(x0,...,xN)X = (x_0,...,x_N)的線性函數,並且U=(u0,...,uN1)U = (u_0,...,u_{N-1}),可以得出如下關係:
x1=Ax0+Bu0x2=Ax1+Bu1xn=AxN1+BuN1(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}
將上述公式(3)逐個帶入得
x1=Ax0+Bu0x2=A2x0+ABu0+Bu1xn=ANx0+AN1Bu0+AN2Bu1++BuN1(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}
整理得
[x0x1xN]=[0B0ABB0AN1BAN2BB][u0u1uN1]+[IAAN]x0(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}
其中
G=[0B0ABB0AN1BAN2BB],H=[IAAN] 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]

等式(5)可以進一步表示爲
X=GU+Hx0(6) X= GU + Hx_0 \tag{6}
其中,GRNn×NmG\in R^{Nn\times Nm}HRNn×nH\in R^{Nn\times n}

從而等式(2)所表示得代價函數可以表示爲
J(U)=disg(Q1/2,,Q1/2,Qf1/2)(GU+Hx0)2+diag(R1/2,,R1/2)U2(7) J(U)=\parallel disg(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}
這就轉化成一個求解最小二乘法的問題,其問題大小爲N(n+m)×NmN(n + m)\times Nm

動態規劃法(Dynamic Programming)

動態規劃算法是解決多階段決策過程最優化的一種有效的數學方法。

值函數

首先定義一個值函數Vt:RnRV_t:R^n \to R,其中t=(0,,N)t=(0,\dots,N)
Vt(z)=minut,,uN1(τ=tN1(xτTQxτ+uτtRuτ)+xNTQfxN)(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}
如果設置xt=zx_t = z,根據公式(1)的關係,xτ+1=Axτ+Buτx_{\tau+1} = Ax_{\tau} + Bu_{\tau},並且τ=t,,N\tau=t,\dots,N

  • Vt(z)V_t(z)可以表示在tt時刻,從狀態zz開始的LQR最小代價值
  • V0(x0)V_0(x_0)表示在0時刻,從狀態x0x_0開始的LQR最小代價值

VtV_t可以表示爲二次型的形式,即VT(z)=zTPtz,Pt=PtT0V_T(z)=z^TP_tz,其中P_t=P_t^T \geq 0。當t=Nt=N時,代價值函數爲:
VN(z)=zTQfz(9) V_N(z) = z^TQ_f z \tag{9}
因此PN=QfP_N = Q_f

根據動態規劃原理,等式(8)可以寫成如下遞歸關係式:
Vt(z)=minw(zTQz+wTRw+Vt+1(Az+Bw))(10) V_t(z)=\min_w\bigl(z^TQz + w^TRw + V_{t+1}(Az+Bw)\bigr)\tag{10}
其中,

  • zTQz+wTRwz^TQz + w^TRw:如果ut=wu_t = w,則代表tt時刻產生的代價值;
  • Vt+1(Az+Bw)V_{t+1}(Az+Bw):代表從t+1t+1時刻開始,引起的最小代價值;

提取等式(10)中與ww無關的選項得
Vt(z)=zTQz+minw(wTRw+Vt+1(Az+Bw))(11) V_t(z)=z^TQz + \min_w\bigl(w^TRw + V_{t+1}(Az+Bw)\bigr)\tag{11}
等式(11)描述了Vt(z)V_t(z)Vt+1(z)V_{t+1}(z)之間的遞歸關係。

求極值

假設Vt+1=zTPt+1zV_{t+1}= z^TP_{t+1}z,並且Pt+1=Pt+1T0P_{t+1}=P^{T}_{t+1} \geq0,等式(11)可以進一步轉化爲Pt+1P_{t+1}的形式:
Vt(z)=zTQz+minw(wTRw+(Az+Bw)TPt+1(Az+Bw))(12) V_t(z)=z^TQz + \min_w\bigl(w^TRw + (Az+Bw)^TP_{t+1}(Az+Bw)\bigr)\tag{12}
爲了求最小值,對ww求導,導數爲零的點即爲最值點。
2wTR+2(Az+Bw)TPt+1B=0(13) 2w^TR + 2(Az+Bw)^TP_{t+1}B = 0 \tag{13}
推導等式(13),求取ww:
wTR+zTATPt+1B+wTBTPt+1B=0wT(R+BTPt+1B)=zTATPt+1B(合併同類項並移項)(R+BTPt+1B)Tw=BTPt+1TAz(轉置)(R+BTPt+1B)w=BTPt+1Az(Pt+1=Pt+1T,R=RT)w=(R+BTPt+1B)1BTPt+1Az(矩陣求逆)(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}
由等式(14)可知,最優輸入爲
w=(R+BTPt+1B)1BTPt+1Az(15) w^* =-(R + B^TP_{t+1}B)^{-1}B^TP_{t+1}Az \tag{15}
將等式(15)帶入等式(12)得
Vt(z)=zTQz+wTRw+(Az+Bw)TPt+1(Az+Bw)(16) V_t(z)=z^TQz + w^{*T}Rw^* + (Az+Bw^*)^TP_{t+1}(Az+Bw^*)\tag{16}
對等式(16)化簡得
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) \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}
上述公式化簡過程中,由於Pt+1=Pt+1T,R=RTP_{t+1}=P^{T}_{t+1},R=R^T,所以((R+BTPt+1B)1)T=(R+BTPt+1B)1\bigl((R + B^TP_{t+1}B)^{-1}\bigr)^T = (R + B^TP_{t+1}B)^{-1}

由等式(17)可知
Pt=Q+ATPt+1AATPt+1B(R+BTPt+1B)1BTPt+1A(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}

求解過程

關於LQR的求解過程,可以採用動態規劃算法,依據上述公式(20)的遞歸關係,反向遞推,求出滿足一定條件的最小代價值。

  1. 確定迭代範圍NN
  2. 設置迭代初始值PN=QfP_N=Q_f
  3. 循環迭代,t=N,,1t = N,\dots,1

Pt1=Q+ATPt+1AATPt+1B(R+BTPt+1B)1BTPt+1A 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

  1. 則反饋係數Kt=(R+BTPt+1B)1BTPt+1AK_t = -(R + B^TP_{t+1}B)^{-1}B^TP_{t+1}A,對於時間t=0,,N1t=0,\dots,N-1
  2. 優化的控制量utlqr=Ktxtu_t^{lqr}=K_tx_t
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章