【控制理论】离散及连续的LQR控制算法原理推导
文章目錄
- 參考資料
- 1. 全狀態(tài)反饋控制系統(tǒng)
- 2. LQR控制器
- 2.1 連續(xù)時(shí)間
- 2.1.1 Q、R矩陣的選取
- 2.1.2推導(dǎo)過(guò)程
- 2.1.3 連續(xù)時(shí)間下的LQR算法步驟
- 2.2 離散時(shí)間
- 2.2.1 推導(dǎo)
- 2.2.2 離散時(shí)間下的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控制算法推導(dǎo)以及簡(jiǎn)單分析
- Riccati 黎卡提 system
- LQR-離散時(shí)間有限邊界
1. 全狀態(tài)反饋控制系統(tǒng)
假設(shè)有一個(gè)線性系統(tǒng)用狀態(tài)向量表示:
{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 。
設(shè)計(jì)狀態(tài)反饋控制器
u=?Kx(2)\tag{2} u=-K x u=?Kx(2)
將式(2)帶入系統(tǒng)狀態(tài)方程(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)
設(shè)定系統(tǒng)中的各個(gè)狀態(tài)量都可知,式(1)所示的開(kāi)環(huán)系統(tǒng),傳遞函數(shù)的極點(diǎn)就是系統(tǒng)矩陣A的特征值。 式(2)所示的閉環(huán)形式,通過(guò)配置反饋矩陣 KKK ,可以使得閉環(huán)系統(tǒng)達(dá)到所期望的系統(tǒng)狀態(tài)。
接下來(lái)講解如何使用LQR設(shè)計(jì)控制量uuu。
2. LQR控制器
最優(yōu)控制理論主要探討的是讓動(dòng)力系統(tǒng)以最小成本來(lái)運(yùn)作,若系統(tǒng)動(dòng)態(tài)可以用一組線性微分方程表示,而其成本為二次泛函,這類的問(wèn)題稱為線性二次(LQ)問(wèn)題。此類問(wèn)題的解即為線性二次調(diào)節(jié)器,簡(jiǎn)稱LQR。
LQR(Linear quadratic regulator,線性二次型調(diào)節(jié)器),它假設(shè)模型是locally linear 和 time-varied的。
2.1 連續(xù)時(shí)間
LQR的目標(biāo)就是找到一組控制量u0,u1,...u_0,u_1,...u0?,u1?,...,使得同時(shí)有x0,x1,...x_0,x_1,...x0?,x1?,...能夠快速、穩(wěn)定地趨近于零,并保持平衡(系統(tǒng)達(dá)到穩(wěn)定狀態(tài)),u0,u1,...u_0,u_1,...u0?,u1?,...盡可能小(控制量盡量小的變化)。
這是一個(gè)典型的多目標(biāo)優(yōu)化最優(yōu)控制問(wèn)題,選取代價(jià)函數(shù)(目標(biāo)函數(shù))為
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分別是需要設(shè)計(jì)的半正定矩陣和正定矩陣。
代價(jià)函數(shù) JJJ需要達(dá)到最小值,那么在 ttt趨近于無(wú)窮時(shí),狀態(tài)向量 x(t)x(t)x(t)肯定趨近于0,即是達(dá)到了系統(tǒng)穩(wěn)態(tài);同理, ttt趨近于無(wú)窮時(shí),控制向量 u(t)u(t)u(t)也會(huì)趨近于0,意味著,隨著時(shí)間的推移,需要對(duì)系統(tǒng)施加的控制量會(huì)越來(lái)越小,意味著使用最小的控制量使得系統(tǒng)達(dá)到了最終控制目標(biāo),反映的是控制能量的損耗優(yōu)化。
2.1.1 Q、R矩陣的選取
QQQ為半正定的狀態(tài)加權(quán)矩陣, RRR為正定的控制加權(quán)矩陣,兩者通常取為對(duì)角陣。QQQ矩陣元素變大意味著希望狀態(tài)量能夠快速趨近于零; RRR 矩陣元素變大意味著希望控制輸入能夠盡可能小,它意味著系統(tǒng)的狀態(tài)衰減將變慢。比如, Q11Q_{11}Q11??選取較大的值,會(huì)讓 x1x_1x1??很快的衰減到0;所以,Q、RQ、RQ、R的選取,要綜合看具體的實(shí)際應(yīng)用場(chǎng)景來(lái)調(diào)節(jié)。
2.1.2推導(dǎo)過(guò)程
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} \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)
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趨近于無(wú)窮時(shí),系統(tǒng)狀態(tài)向量 x(t)x(t)x(t) 趨近于 0 ,這樣就直接計(jì)算出了積分方程。
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)要有解,那么括號(hào)里面的部分必須等于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)
化簡(jiǎn)后得
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 都是已知量,那么通過(guò)式(15)可以求解出 PPP(n×nn \times nn×n維) ,式(15)就是著名的連續(xù)時(shí)間代數(shù)Riccati方程(CARE)。
2.1.3 連續(xù)時(shí)間下的LQR算法步驟
LQR的算法步驟如下:
- 選擇參數(shù)矩陣Q,R(分別滿足半正定和正定)
- 根據(jù)公式(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 - 根據(jù)P計(jì)算增益K=R?1BTPK=R^{-1}B^{T}PK=R?1BTP
- 計(jì)算控制量 u?=?Kxu^*=-Kxu?=?Kx
2.2 離散時(shí)間
2.2.1 推導(dǎo)
假設(shè)一個(gè)離散的系統(tǒng)表示為
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的目標(biāo)函數(shù)如下:
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 的狀態(tài)向量, u\mathbf{u}u 是 k×1k \times 1k×1 的控制變數(shù)向量, AAA 是 n×nn \times nn×n 的狀態(tài)遞移矩陣, BBB 是 n×kn \times kn×k 的控制系數(shù)矩陣, QQQ 是n×nn \times nn×n的半正定狀態(tài)損失函數(shù)矩陣, RRR 是k×kk \times kk×k的正定控制損失函數(shù)矩陣。
求解LQR的方法,有最小二乘法和動(dòng)態(tài)規(guī)劃算法。詳情請(qǐng)參考博客
這里直接給出結(jié)果:從后往前推導(dǎo)可以找到每一個(gè)時(shí)間的最優(yōu)控制律:
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 會(huì)依據(jù)下式并且配合初始值 PN=QP_{N}=QPN?=Q 進(jìn)行迭代求解
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)
這個(gè)就是離散時(shí)間的代數(shù) Riccati 方程(DARE)。 PPP 的穩(wěn)態(tài)解和和 NNN 趨近無(wú)限大時(shí)的無(wú)限時(shí)間問(wèn)題有關(guān),可以將方程(19)反復(fù)迭代直到收斂,來(lái)求得 PPP 的穩(wěn)態(tài)解。
2.2.2 離散時(shí)間下的LQR算法步驟
綜上,采用LQR算法進(jìn)行控制率求解的步驟概括為:
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的研究對(duì)象是現(xiàn)代控制理論中的狀態(tài)空間方程給出的線性系統(tǒng),而MPC的研究對(duì)象可以是線性系統(tǒng),也可以是非線性系統(tǒng)。不過(guò)現(xiàn)在很多的做法都是將非線性系統(tǒng)線性化,然后進(jìn)行相關(guān)計(jì)算,具體要根據(jù)自己的工程情況來(lái)確定哪種方式比較好。
- 其次,既然是優(yōu)化問(wèn)題,那就離不開(kāi)目標(biāo)函數(shù)的設(shè)計(jì),LQR的目標(biāo)函數(shù)在上面已經(jīng)有描述,MPC的目標(biāo)函數(shù),多數(shù)都是多個(gè)優(yōu)化目標(biāo)乘以不同權(quán)重然后求和的方式。雖然方式不同,不過(guò)都是對(duì)達(dá)到控制目標(biāo)的代價(jià)累計(jì)。
- 最后,工作時(shí)域上的不同,LQR的計(jì)算針對(duì)同一工作時(shí)域,在一個(gè)控制周期內(nèi),LQR只計(jì)算一次,并將此次計(jì)算出的最優(yōu)解下發(fā)給控制器即可;而MPC是滾動(dòng)優(yōu)化的,計(jì)算未來(lái)一段時(shí)間內(nèi),每個(gè)采樣周期都會(huì)經(jīng)過(guò)計(jì)算,得出一組控制序列,但是只將第一個(gè)控制值下發(fā)給控制器。
總結(jié)
以上是生活随笔為你收集整理的【控制理论】离散及连续的LQR控制算法原理推导的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python超市管理系统实训报告_超市管
- 下一篇: AxureUX 复制Iconfont图标