最優控制

最優控制理論是數學最優化中的分支，要找到動力系統在特定一段時間的控制，可以使特定的損失函數最佳化。最佳控制在科學、工程及作業研究上都有很多應用，例如其控制的系統可能是太空飛行器，控制為其動力來源的火箭推進器，目標是在消耗最小燃料的情形下登陸月球，其系統也可能是國家的經濟，目標是使失業降到最低，控制是財政政策及貨幣政策。系統也可以是作業研究的運籌學，以最佳控制的框架來進行研究。

最優控制理論是變分法的推廣，著重於研究使控制系統的指標達到最優化的條件和方法。這門學科的開創性工作主要是由1950年代前蘇聯的列夫·龐特里亞金和美國的理察·貝爾曼所完成，這些是以愛德華J.麥克沙恩所發展的變分法為其基礎。最優控制可以視為是控制理論中的一種控制策略。

## 通用方法

最佳控制是要找到一系統的控制律，以滿足特定的最佳化準則。控制問題會包括費用泛函（cost functional），是狀態以及控制變數的泛函。最佳控制要將費用泛函最小化，會表示成一組描述控制變數路徑的微分方程。最佳控制可以用龐特里亞金最大化原理推導（這是必要條件），或是求解哈密頓-雅可比-貝爾曼方程（充分條件）。

以一個簡單的例子來說明。考慮一部車開在山區的直線道路上。問題是，駕駛需如何駕駛才能最快到目的地？此例中的「控制律」是指控制油門、換檔或是剎車的方式。「系統」包括車輛以及道路，「最佳化準則」是指使駕駛時間最短。控制問題中一般也會有輔助的限制條件，例如車輛的油量有其限制、油門可提供的加速度及車速也都有限制。適當的費用函數會是數學表示式，將駕駛時間表示為速度、道路條件以及系統初始條件的函數。

另一個相關的最佳化問題是在車輛在一定時間抵達目標的前提下，讓油耗降到最低。

更通用的最佳控制問題架構如下：最小化以下的連續時間費用泛函

$$J[\textbf{x}(\cdot), \textbf{u}(\cdot), t_0, t_f] :=E\,[\,\textbf{x}(t_0),t_0,\textbf{x}(t_f),t_f\,] + \int\limits_{t_0}^{t_f} F\,[\,\textbf{x}(t),\textbf{u}(t),t\,] \,\operatorname{d}t$$

需符合以下的一階動態限制（狀態方程）

$$\dot{\textbf{x}}(t) = \textbf{f}\,[\,\textbf{x}(t),\textbf{u}(t),t\,],$$

幾何的「路徑限制」

$$\textbf{h}\,[\,\textbf{x}(t),\textbf{u}(t),t\,] \leq \textbf{0},$$

以及終點條件

$$\textbf{e}\,[\,\textbf{x}(t_0),t_0,\textbf{x}(t_f),t_f\,] = 0$$

其中$\textbf{x}(t)$是狀態，$\textbf{u}(t)$是控制，$t$是自變數（一般來說，是時間），$t_0$是初始時間，$t_f$是結束時間。$E$和$F$稱為「結束點成本」及「運行成本」。在變分法中，$E$和$F$會稱為Mayer項以及拉格朗日乘數。其中的路徑限制多半是不等式的限制，在最佳解時，該限制不等式多半不會在恰好為零的情形。以上的最佳控制問題也可能有多個解（其解不唯一），此時的解會稱為是「局部最小化」。

## LQ控制器

在通用的最佳控制問題中，有一種特殊的問題是線性二次（linear quadratic, LQ）最佳控制問題，其解稱為LQR控制器。LQ問題可以表示為，將以下二次形式的連續時間費用泛函最小化

$$J=\tfrac{1}{2} \mathbf{x}^{\mathsf{T}}(t_f)\mathbf{S}_f\mathbf{x}(t_f) + \tfrac{1}{2} \int_{t_0}\limits^{t_f} [\,\mathbf{x}^{\mathsf{T}}(t)\mathbf{Q}(t)\mathbf{x}(t) + \mathbf{u}^{\mathsf{T}}(t)\mathbf{R}(t)\mathbf{u}(t)\,]\, \operatorname{d}t$$

需符合以下的線性一階動態限制

$$\dot{\mathbf{x}}(t)=\mathbf{A}(t) \mathbf{x}(t) + \mathbf{B}(t) \mathbf{u}(t),$$

以及初始條件

$$\mathbf{x}(t_0) = \mathbf{x}_0$$

在LQ問題中，有一種特殊型式的問題稱為LQR控制器，是指其中所有的矩陣（$\mathbf{A}$、$\mathbf{B}$、$\mathbf{Q}$及$\mathbf{R}$）都是常數，其初始時間為0，其結束時間設定為$t_f\rightarrow\infty$（最後一個假設稱為是無限時間長度）。LQR控制器如下，要針對無限時間的二次連續時間成本泛函進行最小化

$$J=\tfrac{1}{2} \int\limits_{0}^{\infty}[\,\mathbf{x}^{\mathsf{T}}(t)\mathbf{Q}\mathbf{x}(t) + \mathbf{u}^{\mathsf{T}}(t)\mathbf{R}\mathbf{u}(t)\,]\, \operatorname{d}t$$

其限制條件是要滿足以下的線性非時變一階動態方程式

$$\dot{\mathbf{x}}(t)=\mathbf{A} \mathbf{x}(t) + \mathbf{B} \mathbf{u}(t),$$

以及初始條件

$$\mathbf{x}(t_0) = \mathbf{x}_0$$

若是有限時間的例子，矩陣會有額外的限制，$\mathbf{Q}$及$\mathbf{R}$需分別是半正定矩陣及正定矩陣。無限時間的情形下，矩陣無此限制，但需要常數矩陣。有關有限時間下，矩陣的額外限制$\mathbf{Q}$ and $\mathbf{R}$可以確保成本泛函仍為正。而且，為了要確保成本泛函有界，會有一個額外條件，會要求系統$(\mathbf{A},\mathbf{B})$有可控制性。LQ或是LQR的成本泛函都可以視為是最小化「控制能量」（以二次式表示）的手段。

無限時間的問題（LQR問題）限制太多，而且假設系統運作在零狀態，因此也會使系統輸出維持在零狀態，在本質上用處不大。不過若要求解使系統運作在非零輸出準位下的問題，可以先求解零輸出準位的問題，再以此為基礎求解。實際上，可以證明非零輸出準位的問題可以用以下的直接方式求解。在經典最佳控制理論中可以證明LQ（或LQR）最佳控制可以表示為以下的回授型式

$$\mathbf{u}(t)=-\mathbf{K}(t)\mathbf{x}(t)$$

其中$\mathbf{K}(t)$是適當維度的矩陣，定義如下

$$\mathbf{K}(t)=\mathbf{R}^{-1}\mathbf{B}^{\mathsf{T}}\mathbf{S}(t),$$

且$\mathbf{S}(t)$是微分Riccati方程的解，微分Riccati方程如下：

$$\dot{\mathbf{S}}(t) = -\mathbf{S}(t)\mathbf{A}-\mathbf{A}^{\mathsf{T}}\mathbf{S}(t)+\mathbf{S}(t)\mathbf{B}\mathbf{R}^{-1}\mathbf{B}^{\mathsf{T}}\mathbf{S}(t)-\mathbf{Q}$$

在有限時間的LQ問題中，Riccati方程會用終端邊界條件，以逆轉時間的方式積分

$$\mathbf{S}(t_f) = \mathbf{S}_f$$

在無限時間的LQR問題中，微分Riccati方程會變成以下的代數Riccati方程（algebraic Riccati equation，ARE）：

$$\mathbf{0} = -\mathbf{S}\mathbf{A}-\mathbf{A}^{\mathsf{T}}\mathbf{S}+\mathbf{S}\mathbf{B}\mathbf{R}^{-1}\mathbf{B}^{\mathsf{T}}\mathbf{S}-\mathbf{Q}$$

由於代數Riccati方程是由無限時間的LQR問題產生的，矩陣$\mathbf{A}$、$\mathbf{B}$、$\mathbf{Q}$及$\mathbf{R}$都是常數。代數Riccati方程一般會有很多個解，要用正定（或半正定）的解去計算回授增益。LQ（LQR）問題後來是由魯道夫·卡爾曼所解。

## 最佳控制的數值方法

最優控制問題多半是非線性的，一般而言沒有解析解（例如LQ最佳控制問題）。因此，需要用數值方法來求解最佳控制問題。在最佳控制的初期（約1950年代到1980年代），常用來求解最佳控制問題的方式是「間接法」（indirect methods）。間接法會用變分法來求得一階的最佳化條件。條件會形成二點（或是複雜的問題，可能會是三點）的邊值問題。邊值問題有一種特殊的結構，因為是計算其哈密頓量微分而得的。因此，所得的動力系統是以下形式的哈密頓系統

$$\begin{array}{lcl} \dot{\textbf{x}} & = & \partial H/\partial\boldsymbol{\lambda} \\ \dot{\boldsymbol{\lambda}} & = & -\partial H/\partial\textbf{x} \end{array}$$

其中

$$H=F +\boldsymbol{\lambda}^{\mathsf{T}}\textbf{f}-\boldsymbol{\mu}^{\mathsf{T}}\textbf{h}$$

是間接法的擴增哈密頓量（augmented Hamiltonian），在間接法中，用適當的邊值條件或橫截條件（ransversality conditions）可以求解邊值問題。其優點是可以求解狀態以及adjoint變數（$\boldsymbol{\lambda}$），所得的解是極值軌跡，很容易驗證。缺點是所得的邊值問題多半不容易求解（特別是大時間範圍或是有內在點限制條件的問題）。像BNDSCO就是用間接法求解的著名軟體。

在1980年代之後，有另外一種數值求解最佳控制的方式，稱為直接法（direct methods）。在直接法中，會用適當的函數來近似狀態或是控制（也有可能兩者都有），近似用的函數可能是多項式近似或是片段常數的參數化近似。同時也會用費用函數來近似費用泛函。函數近似的係數視為是最佳化的變數，最佳控制問題則變成以下的非線性最佳化問題：

最小化

$$F(\mathbf{z})\,$$

在以下的代數限制式下

$$\begin{array}{lcl} \mathbf{g}(\mathbf{z}) & = &\mathbf{0} \\ \mathbf{h}(\mathbf{z}) & \leq &\mathbf{0} \end{array}$$

依使用的直接法不同，非線性最佳化問題的大小可能會很小（例如用直接射擊法或擬線性化方法），中等大小（例如用擬譜最佳控制），也有可能會非常大（例如用直接搭配方法）。若是用直接搭配方法，非線性最佳化問題的變數及限制會從上千個到上萬個不等。由於許多非線性規劃（NLP）的大小是由直接法產生的，以直覺來看，直接求解一些非線性最佳化問題會比求解邊界值問題要簡單。不過，NLP的求解比求解邊界值問題要簡單。計算比較簡單的原因（特別是用直接搭配方法）是產生的NLP比較稀疏，而且已有許多著名的程式可以求解大型稀疏的NLP問題（例如SNOPT）。因此，用直接法可以求解問題的範圍（特別是近來很流行的直接搭配方法）比用間接法可以求解的問題範圍要大很多。事實上，近來直接法非常的流行，許多人已經撰寫程式用這種方式來求解最佳控制。有許多這類程式，例如DIRCOL、SOCS、OTIS、GESOP/ASTOS、DITAN及PyGMO/PyKEP等。近來因為MATLAB程式語言的盛行，MATLAB上的最佳控制軟體也越來越曾遍。學術界開發，直接法求解最優控制的MATLAB軟體工具有RIOTS、DIDO (最佳控制) DIRECT,、FALCON.m,、GPOPS，產業界開發的MATLAB工具有PROPT。這些軟體工具提昇學術界以及產業界的人士處理複雜最佳控制問題的能力。透過近來泛用MATLAB最佳化的環境（例如TOMLAB），要處理最佳控制問題已比早期用C語言或FORTRAN程式來處理要簡單許多。

## 離散時間的最佳控制

以上的例子是連續時間的系統以及最佳控制的解。最佳控制的解也可以用數位的方式來實現。當代的控制理論主要在關注離散時間的系統以及解。一致近似（Consistent Approximations）理論可以提供在什麼情形下，可以用一連串確準度逐漸提昇的離散最佳控制問題的解來收斂到原始的連續問題的解。不是所有的離散方式都有這種特性，就算是看似有此特質的都不一定有。例如，用變動步長的程序來積分問題的動態方程，會產生一個不會收斂到0的梯度。直接法RIOTS就是以一致近似理論為基礎。

## 控制

最優控制中的控制（control）是指控制器選定用來調整狀態變數的變數，類似控制閥的應用。控制和狀態變數不同，沒有事先指定的運動方程。最優控制理論的目標是要在可行集內找到控制量的序列，讓狀態變數在最佳路徑上，使損失函數最小。

若某控制只是時間的函數，會稱為是開迴路控制。相反的，若提供最佳解的控制在某段時間內是這段時間開始時狀態變數的函數，則為閉迴路控制器。