【控制理论】离散及连续的LQR控制算法原理推导
文章目錄
- 參考資料
- 1. 全狀態反饋控制系統
- 2. LQR控制器
- 2.1 連續時間
- 2.1.1 Q、R矩陣的選取
- 2.1.2推導過程
- 2.1.3 連續時間下的LQR算法步驟
- 2.2 離散時間
- 2.2.1 推導
- 2.2.2 離散時間下的LQR算法步驟
- 3. MPC與LQR比較
參考資料
- https://www.bilibili.com/video/BV1RW411q7FD?spm_id_from=333.999.0.0
- LQR控制器_simulink
- https://jonathan-hui.medium.com/rl-lqr-ilqr-linear-quadratic-regulator-a5de5104c750
- LQR控制算法推導以及簡單分析
- Riccati 黎卡提 system
- LQR-離散時間有限邊界
1. 全狀態反饋控制系統
假設有一個線性系統用狀態向量表示:
{x˙=Ax+Buy=Cx+Du(1)\tag{1} \left\{\begin{array}{l} \dot{x}=A x+B u \\ y=C x+D u \end{array}\right. {x˙=Ax+Buy=Cx+Du?(1)
其中, x(t)∈Rn,u(t)∈Rmx(t) \in R^{n} , u(t) \in R^{m}x(t)∈Rn,u(t)∈Rm 。
設計狀態反饋控制器
u=?Kx(2)\tag{2} u=-K x u=?Kx(2)
將式(2)帶入系統狀態方程(1)中,有
x˙=(A?BK)x=Acx(3)\tag{3} \dot{x}=(A-B K) x=A_{c} x x˙=(A?BK)x=Ac?x(3)
設定系統中的各個狀態量都可知,式(1)所示的開環系統,傳遞函數的極點就是系統矩陣A的特征值。 式(2)所示的閉環形式,通過配置反饋矩陣 KKK ,可以使得閉環系統達到所期望的系統狀態。
接下來講解如何使用LQR設計控制量uuu。
2. LQR控制器
最優控制理論主要探討的是讓動力系統以最小成本來運作,若系統動態可以用一組線性微分方程表示,而其成本為二次泛函,這類的問題稱為線性二次(LQ)問題。此類問題的解即為線性二次調節器,簡稱LQR。
LQR(Linear quadratic regulator,線性二次型調節器),它假設模型是locally linear 和 time-varied的。
2.1 連續時間
LQR的目標就是找到一組控制量u0,u1,...u_0,u_1,...u0?,u1?,...,使得同時有x0,x1,...x_0,x_1,...x0?,x1?,...能夠快速、穩定地趨近于零,并保持平衡(系統達到穩定狀態),u0,u1,...u_0,u_1,...u0?,u1?,...盡可能小(控制量盡量小的變化)。
這是一個典型的多目標優化最優控制問題,選取代價函數(目標函數)為
J=12∫0∞xTQx+uTRudt(4)\tag{4} J=\frac{1}{2} \int_{0}^{\infty} x^{T} Q x+u^{T} R u d t J=21?∫0∞?xTQx+uTRudt(4)
其中,Q、R分別是需要設計的半正定矩陣和正定矩陣。
代價函數 JJJ需要達到最小值,那么在 ttt趨近于無窮時,狀態向量 x(t)x(t)x(t)肯定趨近于0,即是達到了系統穩態;同理, ttt趨近于無窮時,控制向量 u(t)u(t)u(t)也會趨近于0,意味著,隨著時間的推移,需要對系統施加的控制量會越來越小,意味著使用最小的控制量使得系統達到了最終控制目標,反映的是控制能量的損耗優化。
2.1.1 Q、R矩陣的選取
QQQ為半正定的狀態加權矩陣, RRR為正定的控制加權矩陣,兩者通常取為對角陣。QQQ矩陣元素變大意味著希望狀態量能夠快速趨近于零; RRR 矩陣元素變大意味著希望控制輸入能夠盡可能小,它意味著系統的狀態衰減將變慢。比如, Q11Q_{11}Q11??選取較大的值,會讓 x1x_1x1??很快的衰減到0;所以,Q、RQ、RQ、R的選取,要綜合看具體的實際應用場景來調節。
2.1.2推導過程
J=12∫0∞xT(Q+KTRK)xdt(5)\tag{5} J=\frac{1}{2} \int_{0}^{\infty} x^{T}\left(Q+K^{T} R K\right) x d t J=21?∫0∞?xT(Q+KTRK)xdt(5)
ddt(xTPx)=?xT(Q+KTRK)x(6)\tag{6} \fracze8trgl8bvbq{d t}\left(x^{T} P x\right)=-x^{T}\left(Q+K^{T} R K\right) x dtd?(xTPx)=?xT(Q+KTRK)x(6)
J=?12∫0∞ddtxT(P)xdt=?12xTPx∣0∞=12xT(0)Px(0)(7)\tag{7} J=-\frac{1}{2} \int_{0}^{\infty} \fracze8trgl8bvbq{d t} x^{T}(P) x dt=-\frac{1}{2} x^{T}P x\bigg|^{\infty}_{0}=\frac{1}{2} x^{T}(0) P x(0) J=?21?∫0∞?dtd?xT(P)xdt=?21?xTPx∣∣∣∣?0∞?=21?xT(0)Px(0)(7)
式(7)的意思就是,t趨近于無窮時,系統狀態向量 x(t)x(t)x(t) 趨近于 0 ,這樣就直接計算出了積分方程。
x˙TPx+xTPx˙+xTQx+xTKTRKx=0(8)\tag{8} \dot{x}^{T} P x+x^{T} P \dot{x}+x^{T} Q x+x^{T} K^{T} R K x=0 x˙TPx+xTPx˙+xTQx+xTKTRKx=0(8)
x˙\dot xx˙用式(3)表示,代入式(8)
xTAcTPx+xTPAcx+xTQx+xTKTRKx=0(9)\tag{9} 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 xTAcT?Px+xTPAc?x+xTQx+xTKTRKx=0(9)
整理后,有
xT(AcTP+PAc+Q+KTRK)x=0(10)\tag{10} x^{T}\left(A_{c}^{T} P+P A_{c}+Q+K^{T} R K\right) x=0 xT(AcT?P+PAc?+Q+KTRK)x=0(10)
如果式(10)要有解,那么括號里面的部分必須等于0.
AcTP+PAc+Q+KTRK=0(11)\tag{11} A_{c}^{T} P+P A_{c}+Q+K^{T} R K=0 AcT?P+PAc?+Q+KTRK=0(11)
把 Ac=A?BKA_{c}=A-B KAc?=A?BK 代入式(11)
(A?BK)TP+P(A?BK)+Q+KTRK=0(12)\tag{12} (A-B K)^{T} P+P(A-B K)+Q+K^{T} R K=0 (A?BK)TP+P(A?BK)+Q+KTRK=0(12)
即
ATP+PA+Q+KTRK?KTBTP?PBK=0(13)\tag{13} A^{T} P+P A+Q+K^{T} R K-K^{T} B^{T} P-P B K=0 ATP+PA+Q+KTRK?KTBTP?PBK=0(13)
ATP+PA+Q+KTR(R?1BTP)?KTBTP?PB(R?1BTP)=0(14)\tag{14} A^{T} P+P A+Q+K^{T} R\left(R^{-1} B^{T} P\right)-K^{T} B^{T} P-P B\left(R^{-1} B^{T} P\right)=0 ATP+PA+Q+KTR(R?1BTP)?KTBTP?PB(R?1BTP)=0(14)
化簡后得
ATP+PA?PBR?1BTP+Q=0(15)\tag{15} A^{T} P+P A-P B R^{-1} B^{T} P+Q=0 ATP+PA?PBR?1BTP+Q=0(15)
式(15)中, A,B,Q,RA, B, Q, RA,B,Q,R 都是已知量,那么通過式(15)可以求解出 PPP(n×nn \times nn×n維) ,式(15)就是著名的連續時間代數Riccati方程(CARE)。
2.1.3 連續時間下的LQR算法步驟
LQR的算法步驟如下:
- 選擇參數矩陣Q,R(分別滿足半正定和正定)
- 根據公式(15)求解Riccati方程得到矩陣P
ATP+PA?PBR?1BTP+Q=0A^{T} P+P A-P B R^{-1} B^{T} P+Q=0 ATP+PA?PBR?1BTP+Q=0 - 根據P計算增益K=R?1BTPK=R^{-1}B^{T}PK=R?1BTP
- 計算控制量 u?=?Kxu^*=-Kxu?=?Kx
2.2 離散時間
2.2.1 推導
假設一個離散的系統表示為
X(k+1)=AX(k)+Bu(k)(16)\tag{16} \mathbf{X}(k+1) = A \mathbf{X}(k)+B \mathbf{u}(k) X(k+1)=AX(k)+Bu(k)(16)
離散得LQR的目標函數如下:
J=∑k=1N(XTQX+uTRu)(17)\tag{17} J=\sum_{k=1}^{N}\left(\mathbf{X}^{T} Q \mathbf{X}+\mathbf{u}^{T} R \mathbf{u}\right) J=k=1∑N?(XTQX+uTRu)(17)
其中 X\mathbf{X}X 是 n×1n \times 1n×1 的狀態向量, u\mathbf{u}u 是 k×1k \times 1k×1 的控制變數向量, AAA 是 n×nn \times nn×n 的狀態遞移矩陣, BBB 是 n×kn \times kn×k 的控制系數矩陣, QQQ 是n×nn \times nn×n的半正定狀態損失函數矩陣, RRR 是k×kk \times kk×k的正定控制損失函數矩陣。
求解LQR的方法,有最小二乘法和動態規劃算法。詳情請參考博客
這里直接給出結果:從后往前推導可以找到每一個時間的最優控制律:
Kt=(R+BTPt+1B)?1BTPt+1Aut?=?KtXt(18)\tag{18} \begin{aligned} K_{t}&=\left(R+B^{T} P_{t+1} B\right)^{-1} B^{T} P_{t+1} A\\ u_{t}^{*}&=-K_{t} X_{t} \end{aligned} Kt?ut???=(R+BTPt+1?B)?1BTPt+1?A=?Kt?Xt??(18)
其中矩陣 PPP 會依據下式并且配合初始值 PN=QP_{N}=QPN?=Q 進行迭代求解
Pt?1=Q+ATPtA?ATPtB(R+BTPt+1B)?1BTPtA(19)\tag{19} P_{t-1}=Q+A^{T} P_{t} A-A^{T} P_{t} B\left(R+B^{T} P_{t+1} B\right)^{-1} B^{T} P_{t} A Pt?1?=Q+ATPt?A?ATPt?B(R+BTPt+1?B)?1BTPt?A(19)
這個就是離散時間的代數 Riccati 方程(DARE)。 PPP 的穩態解和和 NNN 趨近無限大時的無限時間問題有關,可以將方程(19)反復迭代直到收斂,來求得 PPP 的穩態解。
2.2.2 離散時間下的LQR算法步驟
綜上,采用LQR算法進行控制率求解的步驟概括為:
Pt?1=Q+ATPtA?ATPtB(R+BTPtB)?1BTPtAP_{t-1}=Q+A^{T} P_{t} A-A^{T} P_{t} B\left(R+B^{T} P_{t} B\right)^{-1} B^{T} P_{t} A Pt?1?=Q+ATPt?A?ATPt?B(R+BTPt?B)?1BTPt?A
3. MPC與LQR比較
MPC和LQR兩種控制方式有很多的相似之處,但是也有很多不相同的地方,
- 首先,LQR的研究對象是現代控制理論中的狀態空間方程給出的線性系統,而MPC的研究對象可以是線性系統,也可以是非線性系統。不過現在很多的做法都是將非線性系統線性化,然后進行相關計算,具體要根據自己的工程情況來確定哪種方式比較好。
- 其次,既然是優化問題,那就離不開目標函數的設計,LQR的目標函數在上面已經有描述,MPC的目標函數,多數都是多個優化目標乘以不同權重然后求和的方式。雖然方式不同,不過都是對達到控制目標的代價累計。
- 最后,工作時域上的不同,LQR的計算針對同一工作時域,在一個控制周期內,LQR只計算一次,并將此次計算出的最優解下發給控制器即可;而MPC是滾動優化的,計算未來一段時間內,每個采樣周期都會經過計算,得出一組控制序列,但是只將第一個控制值下發給控制器。
總結
以上是生活随笔為你收集整理的【控制理论】离散及连续的LQR控制算法原理推导的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python超市管理系统实训报告_超市管
- 下一篇: 关于matlab的图像显示方法