怕一些沒碰過實際工程系統的朋友們誤解,做一點資訊上的補充。“MPC難以做到Realtime”這句話是錯的,並不是因為前沿的MPC實現已經到處跑了,而是最學生、最實驗室的方法都能做到即時:simulink中的時變線性含約束MPC,用PLC Coder生成的ST語言代碼,200個步長的horizon,放到x86 based PLC裡基本都是ms級別,這還附帶了狀態觀測器。更不用說分多核,生成c code,或者自己寫求解器等等操作了。
真的,在今天,工業應用中使用MPC真的是舉手之勞,是相當省事而且沒什麼副作用的方法。比如原本的tune多環PD參數,對應MPC上修改一下cost就可以;有干擾,用點技巧構造一個“自適應狀態”即可;原本的做延遲補償,對應MPC上多掛一個一階過程就可以;如果存在系統切換和參數在線辨識,做一個時變線性MPC即可;若考慮輸入約束或不希望頻繁換向,在線修改約束也可以做;最不濟,把線性MPC當作在線多項式軌跡產生器也很好用。
本質上最優控制和RL並無差異,甚至和傳統的反饋控制也沒什麼太大差異。RL可以說是最優控制的surrogate modeling版本,只不過有的對模型唯象擬合,有的對value唯象擬合,還有的對policy唯象擬合,也有的對value和policy同時擬合。
僅限電機運動控制/過程控制這種傳統工控領域的話,RL是非常難用的。不是說surrogate modeling的方法論不好,而是大部分工業控制所面對的系統都是相當簡單的。這些對象特點是在快時間尺度上,第一性模型一定比任何surrogate model要簡單,因為物理模型就是我們發展的描述世界的最簡“surrogate model”;而且結構極其確定,大部分參數都是可辨識的,誠然“任何真實系統都是非線性的”,但並不是所有非線性都有資格改變系統結構,任何忽略系統結構的方法都是偷懶。我們甚至可以下結論說這類系統用純RL的上限一定沒有傳統方法高。
當然,我也能舉出一堆擬合出來遠比第一性模型簡單,並且誤差很小的研究物件,這就特別適合用RL。所以並不是抨擊RL這個方法,而是批評用扳手卸螺絲。判斷到底用什麼工具,其實只要老老實實採樣並擬合過你的研究物件,並且統計一下兩種方法在一個loop中要算的浮點計算量,就清楚了。