MPC  matlab官方视频讲解

https://www.bilibili.com/video/BV1Qu411Z7DQ/?spm_id_from=333.788.recommend_more_video.-1&vd_source=b0408cbd2a80022f76d7a32f3421f35f

模型预测控制(MPC)是一类特殊的控制。它的当前控制动作是在每一个采样瞬间通过求解一个有限时域开环最优控制问题而获得。过程的当前状态作为最优控制问题的初始状态,解得的最优控制序列只实施第一个控制作用。这是它与那些使用预先计算控制律的算法的最大不同。本质上模型预测控制求解一个开环最优控制问题。它的思想与具体的模型无关,但是实现则与模型有关。

MPC代码python MPC代码讲解Matlab_优化问题

 如果你有一个非线性系统不能用线性模型很好的逼近,那你可以使用非线性MPC,这是最有效的方法,因为它使用最准确的被控对象表示,即非线性被控对象模型。

The method is the most powerful one as it uses the most accurate representation of the plant, naely a nonlinear plant model.

Therefore, the predictions made by the controller are more accurate, which also lead to better control actions.

因此,控制器做出的预测更准确, 这也会实现更好的控制作用。

Nonlinear system ; Nonlinear constraints ; Nonlinear cost function--->>> Nonlinear MPC

但是因为当你有非线性约束和非线性成本函数时,优化问题就变得非凸了   non-convex optimization problem

成本函数可能有多个局部最优解,找到全局最优解可能很困难。对于需要大量计算的非凸优化问题的求解效率,取决于你拥有的非线性求解器nonlinear solver。

Conclusion:

如果你的被控对象是非线性的,但可以使用线性模型去逼近,则可以使用自适应MPC控制器和增益调节MPC控制器

In summary, if the plant you're dealing with is nonlinear but can be approximated by linear models, you can use adaptive and gain-scheduled MPC controllers.

如果优化问题的结构在不同工作条件下没有变化, 使用adaptive MPC (在预测范围内,状态和约束的数量不会因为不同的操作条件而改变)

Use adaptive MPC if the structure of optimization problem  doesn"t change across different operating conditions.

否则使用gain-scheduled MPC

如果你有一个无法通过线性优化良好逼近的高度非线性系统,则使用非线性MPC.

If none of these work because you have a highly nonlinear system that can"t be approximated well by linearization, 

重点

-线性模型去逼近

模型 是 输入到输出的 映射

模型的形式并不重要

滚动优化,求解有限时域的开环优化问题

控制序列是时间的函数不依赖系统的状态

MPC原理 :  在每一个采样时刻K求解优化问题,解的第一个元素作为控制量

求解开环优化问题从而达到闭环控制