跳到主要內容

[控制理論] 非線性模型預測控制 (0) - 引論

此文我們針對 非線性模型預測控制 (Nonlinear Model Predictive Control, NMPC) 做簡單的介紹: 是一套針對受控廠為 非線性系統 所發展的 回授控制理論,其控制律透過不斷求解最佳化問題而得。以下我們將其簡稱 NMPC。


基本想法:
假設你是一個圍棋高手正在與旗鼓相當的對手對弈,那麼你可能在心中盤算好幾步可能的走法 並同時 試圖來 "預測" 對手的路數,但輪到自己下子的時候,我們只能選取剛才在心中盤算出的所有走法中 " 最佳" 的那一步,並且只動那一步旗,動了之後都必須重新盤算上述過程。這個精神大概與 模型預測控制 本質幾乎相同。就是逐步最佳化,慢慢朝向目標前進。以下我們會逐步將此概念規範化,讀者可以讀完之後再回頭瞧瞧這個基本想法,也許會發現異曲同工之妙。


對 $n=0,1,2,...$,令 $x(n)$ 為當前系統狀態 且 $x^{ref}(n)$ 為 給定的參考目標軌跡。

模型預測控制 的 主要目的:
與一般控制問題相仿,模型預測控制的主要目的不外乎以下兩大類問題:
1. 鎮定(stabilizing)問題。使預測的狀態軌跡 盡可能趨近 零點。
2. 追蹤(tracking)問題。使 預測的狀態軌跡 盡可能跟隨給定的 參考目標軌跡 。

Comments:
1. 若稍有控制背景的讀者不難發現鎮定問題其實是追蹤問題的特例,更進一步地說,所謂追蹤控制問題是指:決定一組控制輸入 $u(n)$ 使得 $x(n)$ 能盡可能緊跟給定的參考狀態軌跡 $x^{ref}(n)$。換而言之,若當前狀態 $x(n)$ 與 $x^{ref}(n)$ 所差甚遠,則我們將盡可能控制此系統軌跡趨近 $x^{ref}(n)$:若當前狀態 $x(n) = x^{ref}(n)$ 則我們將盡可能控制此系統"維 持"在該狀態。

2. 關於鎮定問題提及的對零點追蹤 或者 追蹤問題的參考目標軌跡,都必須滿足隱藏的前提: 零點 或者 參考目標軌跡 必須是系統的 平衡點 (equilibrium point)。否則該系統無法進行鎮定 or 追蹤。


以下我們將介紹一類簡化的 NMPC 問題,並藉此展示此控制方法的一些基本精神。

一類簡化的非線性模型預測控制問題:
令 $x(n) \in X := \mathbb{R}^d$ 且 $u(n) \in U := \mathbb{R}^m$ 考慮 參考軌跡狀態(reference state trajectory),記作 $x^{ref}(\cdot)$,寫作
\[
x^{ref}(n) :=x_* :=0,\;\;\;\;\; n\geq 0
\]上述 對零點狀態追蹤問題 退化為 鎮定問題。

以控制理論的基本想法,我們很自然想要對 當前狀態 $x(n)$ 與 目標 $x^{ref} = 0$ 之誤差 做回授控制,為了達成此目標,我們期望控制力 $u$ 必須具備以下形式:
$$
u(n) := \mu (x(n))
$$其中 $\mu $ 為 將狀態 $x \in X$ 映到控制輸出值之集合 $U$ 之映射。

系統模型動態(System Model Dynamics):
模型預測控制的想法在於利用 系統的模型來進行未來狀態軌跡之預測,並且給出適當的目標函數後對其做最佳化求解控制力。更精確的說,系統動態 一般我們寫成下列方程
\[
x^+ = f(x,u) \;\;\;\;\; (*)
\]其中 $f: X \times U \to X$ 為已知且非線性 滿足 將狀態 $x$ 與控制輸出值 $u$ 映到下一個時刻的狀態 $x^+$ 。

預測模型動態(Predictive Model Dynamics):
現在給定當前狀態 $x(n)$,對任意給定控制序列
\[
u(0),u(1),...,u(N-1)
\]滿足控制區間 $N \geq 2$,我們可以用此 控制序列 以及 給定的當前狀態 作為初始狀態來迭代 $(*)$,如此可得 預測狀態軌跡 $x_u$ 滿足下式:
\[
x_u(0) = x(n); \;\;\;\; x_u(k+1) = f(x_u(k), u(k)),\;\;\;\; k=0,...,N-1 \;\;\;\; (**)
\]由於 $x(n)$ 被作為初始狀態來進行預測,故我們 $x_u(k)$ 實際上為狀態 $x(n+k)$ (對時刻 $t_{n+k}$ ) 的 預測狀態。因此我們得到在時刻 $t_n, t_{n+1},...,t_{n+N}$ 對系統狀態的預測 (與狀態輸入序列 $u(0),...,u(N-1)$有關)。

每時刻的最佳控制力求解:
現在我們使用最佳控制的想法來決定 $u(0),...,u(N-1)$ 使得預測狀態 $x_u$ 能盡可能靠近 $x^{ref} = 0$。為了達成此目標,我們可選定 一距離函數
\[
l(x_u(k),u(k)) : = ||x_u(k)||^2 + \lambda ||u(k)||^2
\]其中 $||\cdot||$ 為 Euclidean norm 且 $\lambda \geq 0$為控制力的權重。則現在我們可以給出最佳控制問題如下
\[\min J\left( {x\left( n \right),u\left( . \right)} \right): = \sum\limits_{k = 0}^{N - 1} {l\left( {{x_u}\left( k \right),u\left( k \right)} \right)} \]對 $u(0),...,u(N-1)$ 為admissible 且 $x_u$ 滿足 (**)。

讓我們假設上述最佳控制問題具有解,且此解由一組最佳控制數列 記作
\[
u^*(0),...,u^*(N-1)
\]亦即我們有
\[\mathop {\min }\limits_{u\left( 0 \right),...,u\left( {N - 1} \right)} J\left( {x\left( n \right),u\left( . \right)} \right) = \sum\limits_{k = 0}^{N - 1} {l\left( {{x_{{u^*}}}\left( k \right),{u^*}\left( k \right)} \right)} \]現在為了讓控制力 $u$ 具有我們需要的回授形式 $\mu(x(n))$ 我們令
\[
\mu(x(n) ) := u^*(0)
\]亦即我們只使用最佳控制序列的第一元素。接著我們重複上述過程:在時刻 $t_{n+1}$ 可量得 $x(n+1)$ 並依此再度執行最佳化求得 $\mu(x(n+1))$。同理,對於時刻 $t_{n+2}$ 可量得 $x_{n+2}$ 並依此執行最佳化得到 $\mu(x(n+2))$...


Comments:
1. 因為受控系統為非線性,一般而言為我們所得到的 回授控制律 $\mu(\cdot)$ 必須透過迭代最佳化演算 而得,沒有解析解,故計算複雜度會是模型預測控制的一大挑戰。
2. 就預測模型觀點而言,我們可看出 預測狀態軌跡 $x_u(k), \;\; k=0,1,2,...,N$ 提供了對原本系統在已知時刻 $t_n$ 對於 $t_n,...,t_{n+N}$ 的預測,以及在時刻 $t_{n+1}$ 對於 $t_{n+1},...,t_{n+N+1}$ 的預測,以及 在時刻 $t_{n+2}$ 對於 $t_{n+2},...,t_{n+N+2}$ 的預測。因此我們可看出預測區間是 "移動" 的,故模型預測控制一般又稱為 移動區間控制 (Moving Horizon Control, MHC) 或稱 (Receding Horizon Control, RHC)
3. 若上述 $f$ 為線性,則上述討論稱之為  線性模型預測控制(Linear Model Predictive Control, LMPC)或者簡稱 模型預測控制 (Model Predictive Control, MPC)


留言

這個網誌中的熱門文章

[數學分析] 什麼是若且唯若 "if and only if"

數學上的 if and only if  ( 此文不討論邏輯學中的 if and only if,只討論數學上的 if and only if。) 中文翻譯叫做  若且唯若 (or 當且僅當) , 記得當初剛接觸這個詞彙的時候,我是完全不明白到底是甚麼意思,查了翻譯也是愛莫能助,畢竟有翻跟沒翻一樣,都是有看沒有懂。 在數學上如果看到 if and only if  這類的句子,其實是表示一種 雙條件句 ,通常可以直接將其視為" 定義(Definition)" 待之,今天要分享的是這樣的一個句子如何用比較直觀的方法去看他 假設我們現在有 兩個邏輯陳述句 A 與  B. 注意到,在此我們不必考慮這兩個陳述句到底是什麼,想表達什麼,或者到底是否為真(true),這些都不重要。只要知道是兩個陳述即可。 現在,考慮新的陳述:  "A if and only if B" 好了,現在主角登場,我們可以怎麼看待這個句子呢? 事實上我們可以很直覺的把這句子拆成兩部分看待,也就是 "( A if B ) and ( A only if B )" 那麼先針對第一個部分  A if B  來看, 其實這句就是說  if B then A, 更直白一點就是 "if B is true, then A is also true".  在數學上等價可以寫為 "B implies A" .  或者更常用一個箭頭符號來表示 "B $\Rightarrow$  A"  現在針對第二個部分  A only if B 此句意指  "If B is not true, then A is also not true". 所以如果已知 A is true,  那麼按照上句不難推得 B is also true 也就是說  A only if B  等價為 "If A is true then B is also true". 同樣,也可以寫作   "A implies B"   或者用箭頭表示  "A   $\Rightarrow$     B".

[數學分析] 淺談各種基本範數 (Norm)

這次要介紹的是數學上一個重要的概念: Norm: 一般翻譯成 範數 (在英語中 norm 有規範的意思,比如我們說normalization就是把某種東西/物品/事件 做 正規化,也就是加上規範使其正常化),不過個人認為其實翻譯成 範數 也是看不懂的...這邊建議把 Norm 想成長度就好 (事實上norm是長度的抽象推廣), 也許讀者會認為好端端的長度不用,為何又要發明一個 norm 來自討苦吃?? 既抽象又艱澀。 事實上想法是這樣的: 比如說現在想要比較兩個數字 $3$ , $5$ 之間的大小,則我們可以馬上知道 $ 3 < 5 $;同樣的,如果再考慮小數與無理數如 $1.8753$ 與 $\pi$,我們仍然可以比較大小 $1.8753 < \pi = 3.1415...$ 故可以發現我們有辦法對 "純量" 做明確的比大小,WHY? 因為前述例子中 $3$, $5$, $1.8753$ or $\pi$ 其各自的大小有辦法被 "measure "! 但是如果是現在考慮的是一組數字 我們如何去measure 其大小呢?? 比如說 \[x:=[1, -2, 0.1, 0 ]^T \]上式的大小該是多少? 是 $1$? $-2$? $0.1$??? 再者如果更過分一點,我們考慮一個矩陣 \[A = \left[ {\begin{array}{*{20}{c}} 1&2\\ 3&4 \end{array}} \right] \],想要知道這個矩陣的大小又該怎麼辦?? 是 $1$ ? $2$ 還是 $4$ ?..其實現階段我們說不清楚。 也正是如此,可以發現我們確實需要新的 "長度" 的定義來幫助我們如何去 measure 矩陣/向量/甚至是函數的大小。 故此,我們首先定義甚麼是Norm,(也就是把 "長度" or "大小" 的本質抽離出來) ================== Definition: Norm 考慮 $V$ 為一個向量空間(Vector space),則我們說  Norm 為一個函數 $||\cdot|| : V \rightarrow \mathbb{R}$ 且滿足下列性質