最优控制

最优控制理论是数学最优化中的分支，要找到动力系统在特定一段时间的控制，可以使特定的损失函数最佳化。最佳控制在科学、工程及作业研究上都有很多应用，例如其控制的系统可能是航天器，控制为其动力来源的火箭推进器，目标是在消耗最小燃料的情形下登陆月球，其系统也可能是国家的经济，目标是使失业降到最低，控制是财政政策及货币政策。系统也可以是作业研究的运筹学，以最佳控制的框架来进行研究。

最优控制理论是变分法的推广，着重于研究使控制系统的指标达到最优化的条件和方法。这门学科的开创性工作主要是由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）是指控制器选定用来调整状态变数的变数，类似控制阀的应用。控制和状态变数不同，没有事先指定的运动方程。最优控制理论的目标是要在可行集内找到控制量的序列，让状态变数在最佳路径上，使损失函数最小。

若某控制只是时间的函数，会称为是开回路控制。相反的，若提供最佳解的控制在某段时间内是这段时间开始时状态变数的函数，则为闭回路控制器。