最优控制

**最优控制理论**是數學最优化中的分支，要找到动力系统在特定一段時間的控制，可以使特定的损失函数最佳化。最佳控制在科學、工程及作業研究上都有很多應用，例如其控制的系統可能是航天器，控制為其動力來源的火箭推進器，目標是在消耗最小燃料的情形下登陸月球，其系統也可能是國家的经济，目標是使失業降到最低，控制是财政政策及货币政策。系統也可以是作業研究的運籌學，以最佳控制的框架來進行研究。

最优控制理论是变分法的推广，着重于研究使控制系统的指标达到最优化的条件和方法。这门学科的开创性工作主要是由1950年代前苏联的列夫·庞特里亚金和美国的理查德·贝尔曼所完成，這些是以所發展的变分法為其基礎。最优控制可以視為是控制理論中的一種控制策略。

## 通用方法
最佳控制是要找到一系統的控制律，以滿足特定的最佳化準則。控制問題會包括費用泛函（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問題（例如）。因此，用直接法可以求解問題的範圍（特別是近來很流行的直接搭配方法）比用間接法可以求解的問題範圍要大很多。事實上，近來直接法非常的流行，許多人已經撰寫程式用這種方式來求解最佳控制。有許多這類程式，例如DIRCOL、SOCS、OTIS、GESOP/、DITAN及PyGMO/PyKEP等。近來因為MATLAB程式語言的盛行，MATLAB上的最佳控制軟體也越來越曾遍。學術界開發，直接法求解最优控制的MATLAB軟體工具有
RIOTS、 *DIRECT*,、FALCON.m,、GPOPS，產業界開發的MATLAB工具有。這些軟體工具提昇學術界以及產業界的人士處理複雜最佳控制問題的能力。透過近來泛用MATLAB最佳化的環境（例如），要處理最佳控制問題已比早期用C語言或
FORTRAN程式來處理要簡單許多。

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

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

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

## 参看

* 
* 貝爾曼方程
* 貝爾曼擬譜法
* 最速降線問題
* 
* 
* 动态规划
* 
* 
* 
* 
* 卡尔曼滤波
* LQR控制器
* 模型預測控制
* 
* PID控制器
* 
* 擬譜最佳控制
* 對局
* 滑動模式控制
* 
* 隨機控制
* 
* 奇異控制
* 最小能量控制

## 參考資料

## 延伸閱讀
* 
* 
* 
* 
* 
* Ross, I. M. (2015). A Primer on Pontryagin's Principle in Optimal Control . Collegiate Publishers. .
*