因为“Model Predictive Control: Theory, Computation, and Design”这本书内容还是非常详细的,这里借助一篇课程笔记讲一下模型预测控制的简要内容和概念。
这本书是斯坦福AA203“最优化与基于学习的控制”课程笔记’AA203: Optimal and Learning-based Control Course Notes - Course notes for AA203' by StanfordASL GitHub。这本笔记呢,私以为涉及概念比较全面,写的比较简洁,通俗易懂,同时也对最优控制与learning-based control的概念进行了介绍。
/StanfordASL/AA203-Notes
#===========
MPC基本问题
模型预测控制解决的是一个有限时域最优控制问题,所以也被称作有限时域控制,算法的大概结构是:
1. 在每个采样时间t,求解有限时域的开环最优控制问题;
2. 在随后的采样间隔内[t, t+1)应用生成的最优输入信号;
3. 在下一个时刻t+1,基于上个状态的测量值求解新的最优控制问题。
考虑离散时间线性定常系统的原点调节问题
其中
,同时满足约束条件 ,其中X,U为凸胞(polyhedra,多个线性约束组成的集合)。当然,我们假设在时间t时可以进行全状态测量,因此我们可以这样描述每一阶段t求解的有限时域最优控制问题:
在这个问题中,
和 为t时刻预测的t+k时刻的状态量和控制量,令 为最优量,选取第一个值作为控制量。当t+1时刻到来时,基于新的状态量 重复该优化问题。定义闭环控制策略: ,则闭环动态方程为 。因此,这个公式的中心问题变为描述由这种迭代再优化所定义的闭环系统的行为。
模型预测控制的大致框架结构如图所示:
这个框架导致了两个主要的实现问题。首先,该控制器可能会使我们进入有限时间最优控制问题在几步后不可行的情况,我们称之为持续可行性问题。即使不存在可行性问题,所产生的控制输入也可能不会导致收敛于原点的轨迹,我们称之为稳定性问题。在分析MPC算法的关键问题是我们如何保证我们的“短视”控制策略导致有效的长期行为。虽然一种可能的方法是直接分析闭环动力学,但在实践中这是非常困难的,我们的方法将是推导终端代价函数和终端约束集的条件,以保证系统的可行性和闭环稳定性,这也是MPC的难点——MPC的稳定综合问题。
可行性
与最优控制不同的是,MPC解决的是有限时域优化控制问题,这也就导致了优化会出现经过几个步骤后,问题可能不再可行的可能性。因此呢,这里将讨论对所谓的递归可行性施加约束以避免此问题的方法。
定义可行初始状态集合
简单地说,这个集合是初始状态的集合,其中存在一系列控制输入,这些输入导致最终状态满足终端约束。对于一个受约束的自动系统:
集合S的单步可控集定义为
。集合 为控制不变集的满足条件为:对于上述系统满足
如果它能包含最多的元素,则集合
为最大控制不变集。
现在我们将继续推导线性动态系统递归可行性的关键结果,在这里先定义截断可行集:
然后,我们就可以得到如下可行性结果。
Lemma 1(Persistent Feasibility):如果
是系统 的一个控制不变集,则MPC控制律是持续可行的。证明如下:
对于N=1,我们可以设置
。如果选择终端集为控制不变量,则MPC问题将独立于所选择的控制目标和参数而持续可行。然后系统设计者可以选择影响系统性能的参数。那么接下来的问题就是如何将这个结果推广到N>1。因此,我们有如下的结果。
Lemma 2(Persistent Feasibility):如果
是系统的一个控制不变集,则MPC控制律是持续可行的。
证明如下:
事实上,我们人为引入终端集的目的是为了获得持久可行性的充分条件。我们希望它是大的,这样可以避免降低闭环性能。
稳定性
持续可行性并不能保证闭环轨迹收敛于期望平衡点。保证MPC律持续可行性和稳定性的最流行的方法之一是使用控制不变终端集实现可行性,使用终端函数实现稳定性。而这一部分为了证明稳定性,我们利用李亚普诺夫稳定性理论。
首先回顾一下李亚普诺夫稳定性:
我们利用这个结果来论证,当选择合适的终端集和终端代价函数,J是该闭环系统的李亚普诺夫函数。
具体的证明结果可以自行查一下相关资料或者这本书,这里不详细讲。
对于更为详细的MPC内容会在之前那本书的笔记里介绍。