【Matlab】线性二次型最优控制问题(LQR控制)
前面介紹了變分法與極小值原理的基礎(chǔ)思想,之后有一個(gè)非常重要的應(yīng)用就是線性二次型的最優(yōu)控制問題。假如系統(tǒng)是線性的,性能泛函是狀態(tài)變量與控制變量的二次型函數(shù)的積分,那么這樣的問題稱之為線性二次型最優(yōu)控制問題。形如:
上式中,Q1為狀態(tài)加權(quán)矩陣,Q2為控制加權(quán)矩陣,Q0為終端加權(quán)矩陣。(有些書中把Q2矩陣寫作R矩陣)
在實(shí)際應(yīng)用中,Q1,Q2是對(duì)稱矩陣并且常取對(duì)角陣。
在實(shí)際的應(yīng)用中,第一項(xiàng)為 Lx = 1/2 * xT * Q1 * x,其中x表示狀態(tài)誤差,x越大,代價(jià)函數(shù)Lx越大,Q1的對(duì)角線上的元素q1i表示的是對(duì)應(yīng)誤差分量xi的重視程度,越被重視的誤差分量,就希望它越小,相應(yīng)的加權(quán)系數(shù)就取得越大:
例如上式,對(duì)x1更重視,就把q11設(shè)置得更大一點(diǎn)。
被積函數(shù)中的第二項(xiàng) Lu = 1/2 * uT * Q2 * u,代表動(dòng)態(tài)過程中對(duì)控制的約束與要求。一般就取單位陣就可以。
被積函數(shù)中的第三項(xiàng)突出了對(duì)終端誤差的要求,看自身需求來確定,在有些場(chǎng)合需要,在有些場(chǎng)合不需要。
對(duì)于一般的系統(tǒng),如何進(jìn)行求解?可以按照下面的步驟:
對(duì)于以上的一般系統(tǒng),可以先構(gòu)造哈密頓函數(shù):
之后根據(jù)最優(yōu)控制求出最優(yōu)控制時(shí)的控制量u的表達(dá)式,之后根據(jù)正則方程,將最優(yōu)的u帶入進(jìn)去,得到一個(gè)最優(yōu)軌跡的表達(dá)式以及λ:
之后引入一個(gè)新的矩陣P來表示λ與x的關(guān)系:λ = Px,之后便可以由P表示出最優(yōu)控制率K,之后再將引入控制器的u帶入回原系統(tǒng)(此時(shí)u可以由x來表示,因此可以合并),得到原系統(tǒng)的閉環(huán)表達(dá)式,之后便可以得到一個(gè)黎卡提方程:
以上只是演示一下推導(dǎo)的步驟,實(shí)際上當(dāng)然不需要這么繁瑣,這個(gè)黎卡提方程也不需要我們每次都手算,由matlab,我們可以得到一個(gè)matlab推薦的值,不過這個(gè)黎卡提的一般求解方法也確實(shí)是一個(gè)世界難題。
實(shí)例:
假設(shè)我們有一個(gè)比較簡(jiǎn)單的系統(tǒng):x_dot = x + u,性能泛函就是線性二次型性能泛函的一般形式,那么按照這個(gè)步驟,便可以求出一個(gè)最優(yōu)控制率:
其實(shí)使用matlab的話,是可以直接得到這個(gè)矩陣K的,之后代入就可以了,我自己做了一個(gè)簡(jiǎn)單的sumilink模型來驗(yàn)證一下:
按照那個(gè)方程畫出模型:
之后就可以看出最后的控制效果:
總結(jié)
以上是生活随笔為你收集整理的【Matlab】线性二次型最优控制问题(LQR控制)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 牛客网产品笔试题刷题打卡——用户研究/项
- 下一篇: itextpdf 简介