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