[譯] 最優控制:LQR

一份關於 LQR 的簡單易懂的入門級教程,它是最優控制的基礎概念。前端

我將會在這篇文章中討論最優控制,並會更具體的討論性能很是優秀的線性二次調節器。在最優控制領域中,它的使用頻率很是高,而且還指明瞭最優控制和最近很火的強化學習之間的類似之處。它們二者都用來解決順序決策過程當中類似的問題,但有趣的是命名卻不一樣。話雖如此,可是仍是小小警告一下讀者,接下來可能會涉及一些數學問題:android

這篇文章包括一些線性代數和微積分的運算,可是不用怕,它們很簡單,你沒問題的。ios

閒言少敘,如今咱們開始吧。首先咱們先來給出最優控制問題的通常定義,或者最好說是優化問題。它其實就意味着最大化或者最小化某些受到特定變量約束的函數。一個典型的最優控制問題函數以下所示:git

這個函數很是直白簡單,就是最小化受到某些約束的函數 f(s.t. 是約束條件的縮寫)。在優化領域中,基於目標函數和約束條件,難度也會隨之變更。而基於實際的問題,固然約束條件也會保持相同或有所變化。不用多說,優化問題中的非凸函數是更難優化的,但若是是凸函數,咱們就能高效快速地解決。不管如何,凸函數至關重要,因此當你在解決的問題中找出它的時候,你的反應差很少是這樣子的:github

在控制問題中,咱們經過優化軌跡來最小化代價函數或者最大化回報函數,這和強化學習的處理方式是同樣的。天然而然地,條件也是動態變化的,即給出咱們下一狀態的函數是基於當前的行爲和狀態的,也是優化約束的一部分。因此咱們能夠像這樣描述控制優化問題:算法

這是一個到 N 的有限集合的例子。讓咱們來分塊解析一下。x 是每一個時間點的狀態變量。u 是行爲函數。E 是最終狀態的最終代價,g 是每對狀態-行爲函數的代價函數。帶橫線的 x 是咱們想要開始優化的初始狀態,f 則是動態函數。在這個例子中,沒有不等式約束。事實證實,若是 f 函數是一個關於 xu 的線性函數,而且 g 函數是 xu 的二次函數,那麼這個問題將變得容易不少。因而咱們得出了線性二次調節問題的定義:後端

在這幾個式子中,Q、R 和 E 是代價矩陣,它們決定了多項式係數。咱們也能夠用矩陣的形式寫出每個時間點的代價,使得表達式更加簡單。函數

在上面這個例子中,咱們忽略了 S,或者更確切的說咱們假設 S = 0,但這不會顯著改變數學運算的結果,S 也能夠是代價函數中影響 x 和 u 的關係的某個矩陣。工具

接下來咱們將要應用最優原則,它陳述了一個理所固然的事實,即若是在 A 和 C 之間存在一條最優路徑,而後咱們在這條路徑上取一點 B,那麼從 A 到 B 的子路徑也是最優路徑。這真的是憑直覺就能得出的事實。基於此,咱們能夠定義最優代價函數,或者說是遞歸路徑總代價。由此咱們得出哈密頓-雅可比-貝爾曼方程:性能

J* 函數是最優代價函數。在本例中,咱們將目標函數聲明爲多項式函數,因此邏輯上咱們能夠假設最優代價函數也是多項式函數,因而咱們就能夠這樣寫:

而且最終的代價函數在邏輯上也基於最優問題的定義,以下所示:

如今,若是咱們將函數 g 的定義以及動態條件變量插入到貝爾曼等式中,咱們就能得出:

基於二次代價假設,咱們該如何得出這個函數的最小值呢?很簡單,咱們取 u 的梯度並讓其等於 0,將全部的變量放到一個大的中心矩陣中去:

爲了看上去比較簡單,咱們用以下的矩陣代替(這是不言自明的):

將每一項都相乘,因爲咱們是要對 u 求導,因此只須要關注含有 u 的項,因而能夠得出以下的中間結果:

在計算出梯度並從新排列後,咱們得出了 u*,它能夠最小化代價,即最優行爲函數:

也許如今你能夠先停下來想想。這個式子意味這什麼?它意味着對於最優行爲函數,咱們有了一個封閉形式的解答。這個答案很是乾淨利落。那麼接下來咱們還須要作什麼來解析它呢?咱們還須要 k+1 時間點的矩陣 P。基於下面的等式,咱們能夠從最後一個時間點遞歸計算:

這就是廣爲人知的代數 Riccati 等式。在某些狀況下,咱們想要某個固定時間點的解決方案,對於無限時間,方程能夠求解出一個固定的 P。在這種狀況下,咱們甚至不須要遞歸。咱們能夠直接獲取到最優反饋控制的答案。

基本上這就是本篇文章的全部內容了。你必定在讚揚 LQR 的能力了。固然,不少問題並不能簡化爲線性動態問題,可是若是咱們可以簡化,咱們能得出的解答是讓人很是驚喜的。這種方法甚至被應用於動態函數是非線性的狀況下,這時候咱們就用泰勒擴展將其轉化爲線性問題。這是複雜的軌跡優化問題中常用的方法,被稱爲差分動態規劃(DDP),一個例子就是 iLQR(迭代 LQR),讀者能夠自行查閱。

如今你已經學到了 LQR 功夫,那麼你就獲得了理解最優控制的工具。

我但願這樣解釋 LQR 可以讓你理解。它是一個很是簡單可是很是有用的概念,也是不少最優控制算法的基石。

若是發現譯文存在錯誤或其餘須要改進的地方,歡迎到 掘金翻譯計劃 對譯文進行修改並 PR,也可得到相應獎勵積分。文章開頭的 本文永久連接 即爲本文在 GitHub 上的 MarkDown 連接。


掘金翻譯計劃 是一個翻譯優質互聯網技術文章的社區,文章來源爲 掘金 上的英文分享文章。內容覆蓋 AndroidiOS前端後端區塊鏈產品設計人工智能等領域,想要查看更多優質譯文請持續關注 掘金翻譯計劃官方微博知乎專欄

相關文章
相關標籤/搜索