【模型预测控制】
模型预测控制（Model predictive control、MPC）是过程控制中，在满足特定限制条件时，控制过程的进阶控制方式，自1980年代起已用在化学工厂及炼油厂的工业过程中。近年来也用在电力系统的平衡模型以及电力电子学中。模型预测控制是以过程的动态模型为基础，多半是透过系统识别得到的线性empirical模型。模型预测控制的特点是每一次针对目前的时间区块内作最佳化，然后下一个时间再针对时间区块内作最佳化，这和LQR控制器不同。模型预测控制可以预测未来事件并且进行对应的处理。PID控制器没有这样的预测功能。模型预测控制几乎都是用数位控制来实现，不过也有研究指出若使用特殊设计的类比电路，其反应时间可以更快。
广义预测控制（Generalized predictive control，简称GPC）以及动态矩阵控制（dynamic matrix control，简称DMC）都是典型模型预测控制的例子。
== 简介 ==
会用到模型预测控制的模型一般都是用来呈现复杂动力系统的特性。若是针对简单系统的精准控制，多半不需要用到复杂的模型预测控制演算法，可能用泛用的PID控制器即可处理，若是系统有很长的时间延迟或是高阶系统，其控制特性才会复杂到超过PID控制器可控制的程度。
模型预测控制会预测建模的系统在自变量变化时，对应的因变量变化。在化学制程中，控制器可以调整的自变量可能是PID控制器的目标值（压力、流量、温度等），或是最终控制单元（阀、加湿器等）的输出。若是不能被控制器调整的自变量，会视为干扰来处理。制程中的因变量一般是对于控制目标的量测，或是一些制程限制条件的量测。
模型预测控制会用目前受控体的量测数值、目前制程的动态状态、模型预测控制的模型，以及制程变数目标以及限制来计算因变量未来的变化。计算变化的目的是让因变量尽量接近目标，并且让因变量及自变量都在限制条件范围内。模型预测控制一般会针对自变量先送出一个控制需要的变化，重复计算，一直到需要下一个变化时再送出下一个指令。
许多实际的制程不是线性的，不过在小的操作范围内可以视为是线性的。大部份的应用可以使用线性模型预测控制，模型预测控制的回授机制会补偿因为模型及实际制程之间的结构不一定所产生的估测误差。假如预测控制器中的模型都是线性模型，根据线性代数中的叠加原理可以让几个独立变数变化的效果加成，并且可以预测到应变量的变加。因此可以将控制问题简化成一连串直接的矩阵代数计数，速度快，而且有强健性。
假如线性模型已经无法描述实际系统的非线性特性，有许多不同的作法。有些情形下，制程变数可以在模型预测控制器前后进行转换，以减少其非线性的特性。也可以直接用非线性的模型预测控制来控制，直接用非线性的模型来符合实际的应用。非线性模型可以是由实际资料所合成（例如用人工智慧的类神经网路），或是以质量平衡及能量平衡为基础的高保真动态模型。非线性模型可以线性化以得到卡尔曼滤波，或是其他可以用在线性模型预测控制的模型。
El-Gherwi、Budman及El Kamel的演算法研究指出，利用双模式的方法，可以让即时计算量显著下降，而其性能和调整前相当。此演算法会以各控制器之间交换资讯为基础，平行求解N个凸优化问题
===模型预测控制背后的理论===
离散的模型预测控制
模型预测控制是以针对受控体模型的迭代式、有限时域滚动（finite-horizon）最佳化为基础。在时间时针对受控体的状态取样，并且针对未来一段很短的滚动时域，计算使费用最小化的控制策略（数值最小化演算化）。特别会使用在线或是on the fly的计算来探索由目前状态演进的状态轨迹，并且（透过欧拉-拉格朗日方程）计算在时间之前的费用最小化策略。控制策略只会实现其中的第一步，之后会再取样系统的状态，再由新的状态去计算新的控制策略，并且预测新的状态路径。预测的时间域会渐渐前进，因此模型预测控制也称为滚动域控制（receding horizon control）。虽然此方法不一定是最佳化的，但在实务上有不错的效果。有计多的学术研究致力于找到欧拉-拉格朗日形式方程的快速求解方式、找到MPC局部最佳解的全域稳定性，以提升模型预测控制的效果。
=== 模型预测控制的原则 ===
模型预测控制（MPC）是多变数的控制演算法，利用：
* 程序的内在动态模型
* 过去的控制讯号
* 针对滚动预测域的最佳化费用函数J
来计算最佳化的控制讯号
以下是一个最佳化非线性费用函数的例子：
没有限制条件（上下限），而一些变数定义如下
：第个受控变数（例如量测温度）
：第个参考变数（例如目标温度）
：第个输出控制变数（例如控制阀）
：反映相对重要性的加权系数
: 惩罚相对大幅变化的加权系数
==非线性模型预测控制==
非线性模型预测控制（NMPC）是模型预测控制的一种变形，在预测时使用非线性的系统模型。非线性模型预测控制也需要在一个有限的预测时间区间内反复计算最佳解。这些问题可能在线性模型预测控制中有convex的性质，而在非线性模型预测控制中就没有convex性质。因此在非线性模型预测控制的稳定性理论以及数值解上都具有挑战性。
非线性模型预测控制的数值解一般是用直接式的最佳控制方式，利用牛顿式的最佳化架构，多半是利用以下方式的变体：打靶法、direct multiple shooting method或是Collocation method。非线性模型预测控制演算法一般会用连续最佳控制的解会彼此相似的特性，因为可以用牛顿式的方式有效的求解，作法是用以下计算过的最佳解经适当调整，作为猜测值，因此可以节省许多的运算时间。这类问题的相似性更进一步的被路径跟踪算法（或是实时迭代法）所使用，路径跟踪算法中，不会针对某一个最佳化问题计算到收敛，而是在开始新的一步之前，针对最新的非线性模型预测问题进行几次的迭代。
非线性模型预测控制以往主要应用在化工等取様速度较慢的产业，不过随著控制器硬体以及计算演算法的进步（例如preconditioning），非线性模型预测控制也用在一些高取样速度的应用中，例如车辆产生，或是状态是分散在空间中不同位置的系统（分布式参数系统）。在航天产业上，非线性模型预测控制也已用在最佳地形跟踪/回避轨迹的实时跟踪。
== 显式模型预测控制 ==
显式模型预测控制（eMPC）允许对某些系统快速的评估其控制律，这一点和在线MPC有明显的不同。显式模型预测控制是以parametric programming技术为基础，其中MPC控制问题的解（最佳化问题的目标）已在离线时先行计算。离线计算的解（控制律）会以Piecewise linear function（PWA）的形式表示，因此eMPC控制器会储存在状态空间中每一个子集（控制区间）内PWA的系数，并令在同一子集内的系数为定值，而所有的区间中的系数可以用某种参数化的方式来表示。若是线性模型预测控制。每个控制区间在几何上会变成凸多胞形，一般会用其各个面的系数来参数化，因此需要量化精度分析。因此求得最佳控制解的作法会简化为先决定包括目前状态的区间，再来是用所有区间内的PWA系数来计算PWA。若区间数量不多，eMPC的实现（相较于线上MPC）不会需要很大的计算量，也特别适合有快速动态特性的控制系统。不过eMPC有一个严重的缺点，其运算量会随区间总数以及控制系统的一些重要参数（例如状态数量）呈指数增长，此时需要的记忆体会大幅增加，也让PWA评估的第一部份（寻找目前的控制区间）需要很大的计算量。
== 强健模型预测控制 ==
模型预测控制（MPC）的强健版本可以在存在有界扰动的情形下，仍确保符合状态的限制条件。有三种主要的强健模型预测控制作法：
* Min-max模型预测控制。在此作法下，会考虑扰动的所有可能演变来进行最佳化。这是线性强健控制问题的最佳解，不过其计算成本很高。
* 约束集紧缩模型预测控制（Constraint Tightening）。此处的状态限制加大到一定范围，以确保在任何扰动的演变下，都可以找到解的轨迹
* Tube模型预测控制。此作法会用一个独立的系统主要模型，再利用回授控制器来确保实际状态会收敛到主要状态。状态限制需要区分的数量会由强健正不变（RPI）集来决定，是回授控制器的扰动带来所有可能状态偏差的集合。
* 多阶段模型预测控制。使用场景树公式，用一组取样数据来近似不确定空间，此作法是non-conservative的，因为在预测时，会考虑每一时间下可能有的量测资讯，每个阶段的决策可能是不同的，可以作为抵制不确定性影响的手段。此作法的缺点是问题的大小会随不确定性的数量以及预测范围呈指数成长
==商品化的模型预测控制软体==
目前已可购得商品化的模型预测控制软体，一般也会包括模型识别及分析、控制器设计及调适的工具，也会有控制器性能评估的工具。
S.J. Qin and T.A. Badgwell在Control Engineering Practice期刊中（2003年，733–764）有针对商品化软体的调查。
== 和LQR控制器的差异 ==
模型预测控制器和LQR控制器的主要差异是LQR控制器针对整个时间区间进行最佳化，而模型预测控制器针对不同的时间区间分别进行最佳化，因此在不同时间区间内，模型预测控制器可能会产生新的解，而LQR控制器会使用针对所有时间区间下的最佳解。因此模型预测控制器可以在存在硬约束的情形下进行实时的最佳化，不过多半是在较小的时间区域中求解最佳化问题，而不是在整个时间区域内求解，因此有时只能徥到次佳的解。
==相关条目==
* 控制工程
* 控制理论
* 前馈控制
* 系统识别