日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【控制理论】离散及连续的LQR控制算法原理推导

發布時間:2023/12/14 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【控制理论】离散及连续的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)Rnu(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、RQR的選取,要綜合看具體的實際應用場景來調節。

2.1.2推導過程

  • u=?Kxu=-K xu=?Kx 代入代價函數后,有
    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)
  • 假設存在一個常量矩陣 PPP 使得,
    ddt(xTPx)=?xT(Q+KTRK)x(6)\tag{6} \fracozvdkddzhkzd{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)
  • 把式(6)代入(5)后,有
    J=?12∫0∞ddtxT(P)xdt=?12xTPx∣0∞=12xT(0)Px(0)(7)\tag{7} J=-\frac{1}{2} \int_{0}^{\infty} \fracozvdkddzhkzd{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 ,這樣就直接計算出了積分方程。
  • 把式(6)左邊微分展開,并且將右邊移到左邊后有
    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)
  • K=R?1BTPK=R^{-1} B^{T} PK=R?1BTP ,式(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)可以求解出 PPPn×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=1N?(XTQX+uTRu)(17)

    其中 X\mathbf{X}Xn×1n \times 1n×1 的狀態向量, u\mathbf{u}uk×1k \times 1k×1 的控制變數向量, AAAn×nn \times nn×n 的狀態遞移矩陣, BBBn×kn \times kn×k 的控制系數矩陣, QQQn×nn \times nn×n的半正定狀態損失函數矩陣, RRRk×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算法進行控制率求解的步驟概括為

  • 確定迭代范圍 NNN
  • 設置迭代初始值 PN=QfP_{N}=Q_{f}PN?=Qf?,其中Qf=QQ_f=QQf?=Q
  • 循環迭代, 從后往前t=N,…,1t=N, \ldots, 1t=N,,1
    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
  • t=0,…,N?1t=0, \ldots, N-1t=0,,N?1,循環計算反饋系數 Kt=(R+BTPt+1B)?1BTPt+1AK_{t}=\left(R+B^{T} P_{t+1} B\right)^{-1} B^{T} P_{t+1} AKt?=(R+BTPt+1?B)?1BTPt+1?A
  • 最終得優化的控制量 ut?=?KtXtu_{t}^{*}=-K_{t} X_{t}ut??=?Kt?Xt?
  • 3. MPC與LQR比較

    MPC和LQR兩種控制方式有很多的相似之處,但是也有很多不相同的地方,

    • 首先,LQR的研究對象是現代控制理論中的狀態空間方程給出的線性系統,而MPC的研究對象可以是線性系統,也可以是非線性系統。不過現在很多的做法都是將非線性系統線性化,然后進行相關計算,具體要根據自己的工程情況來確定哪種方式比較好。
    • 其次,既然是優化問題,那就離不開目標函數的設計,LQR的目標函數在上面已經有描述,MPC的目標函數,多數都是多個優化目標乘以不同權重然后求和的方式。雖然方式不同,不過都是對達到控制目標的代價累計。
    • 最后,工作時域上的不同,LQR的計算針對同一工作時域,在一個控制周期內,LQR只計算一次,并將此次計算出的最優解下發給控制器即可;而MPC是滾動優化的,計算未來一段時間內,每個采樣周期都會經過計算,得出一組控制序列,但是只將第一個控制值下發給控制器。

    總結

    以上是生活随笔為你收集整理的【控制理论】离散及连续的LQR控制算法原理推导的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。