MPC模型——预测控制器

        

目录

一、最优控制——Optimal Control

1.1 单输入单输出——SISO

1.2 多输入多输出——MIMO        

二、MPC 模型

2.1 MPC 模型预测的流程

STEP 1:采样

STEP 2:代价函数

STEP 3:滚动优化

2.2 MPC 模型的详细数学建模推导

2.2.1 MPC 数学建模目标分析        

2.2.2 建立MPC 数学模型

三、后记

3.1 MPC 模型的局限性

3.2 MPC 模型预测的延申

参考资料:


        MPC(Model Predictive Control),顾名思义,模型预测控制。也就是说,根据模型的状态预测其未来的状态,从而达到控制的目的。用学术上的话来说,MPC 控制通过在每个采样时刻的状态空间的测量,求解最优化问题,以达到未来的最优化控制。模型预测控制从上世纪六七十年代最早起源开始,现如今已经成长为工业界除了比例积分微分控制(PID 控制)以外应用最多、最广泛的控制方法之一。

一、最优控制——Optimal Control

        在详细分析 MPC 模型之前,觉得有必要回顾一下最优控制这方面的内容。其实大家应该每个人都接触过最优化控制,早在初高中的时候,我们做的应用题,或者叫解决实际问题,就是很简单,但是很典型的最优控制模型。即在一定的约束条件内,达到最优的系统表现。只不过随着学习的深入,我们接触到的约束条件和最优化目标越来越复杂,建模难度越来越大,但是其本质是没有变的。在机器人控制方面,约束条件应该是由物理限制决定;而优化目标是根据用户的需求而不断调整的。

1.1 单输入单输出——SISO

        现在,我们先从最简单的单输入单输出模型(SISO, Single Imput Single Output)来分析。

图1.1 SISO 系统框图

        其中,r(t) 为参考值(Reference),即理想情况下我们想要系统达到什么样的状态。误差可表示为输出和参考值之间的差值e=y-r。

        E=\int_{0}^{t} e^2dt 则可用来描述轨迹追踪。E越小,系统追踪性能越好,系统输出y能够越快接近参考值r。

        F=\int_{0}^{t} u^2dt 则可用来描述输入的大小。

        接着,我们引入代价函数:

J=\int_{0}^{t}qe^{2}+ru^{2} dt

        其中q 和r 都是调节参数,即权重系数。q 和r 的大小,表示控制者重视误差还是输入。我们的总体目标就是通过设计输入u ,来达到代价函数J 最小。

1.2 多输入多输出——MIMO        

        我们再从多输出多输出模型( MIMO, Multiple Input Multiple Output )来分析。MIMO 系统中,有以下关系:

\left\{\begin{matrix} \frac{\mathrm{d} x}{\mathrm{d} t}=Ax+Bu\\ Y=Cx \\J=\int_{0}^{x}E^{T}QE+u^{T}Rudt \end{matrix}\right.

        这边可以参考上一篇讲述 LQR 中调整矩阵和权重系数的相关内容。这边再举个例子来详细说明调节矩阵和权重系数到底是如何工作的。作为上一篇的补充。

        我们在这里假设有两个状态空间和两个输入量,则有:

\frac{\mathrm{d} }{\mathrm{d} t}\begin{bmatrix} x_{1}\\x_{2} \end{bmatrix}=A\begin{bmatrix} x_{1}\\x_{2} \end{bmatrix}+B\begin{bmatrix} u_{1}\\u_{2} \end{bmatrix}

        在这边,我们的状态量即是输出量,再假定参考量为0 ,则有:

\left\{\begin{matrix} \begin{bmatrix} y_{1}\\y_{2} \end{bmatrix}=\begin{bmatrix} x_{1}\\x_{2} \end{bmatrix}\\ R=\begin{bmatrix} r_{1}\\r_{2} \end{bmatrix}=\begin{bmatrix} 0\\0 \end{bmatrix} \end{matrix}\right.

        则误差可表示为:

E=\begin{bmatrix} e_{1}\\e_{2} \end{bmatrix}=\begin{bmatrix} y_{1}-r_{1}\\y_{2}-r_{2} \end{bmatrix}=\begin{bmatrix} x_{1}\\x_{2} \end{bmatrix}

        则前面的代价函数可以改写成:

\left\{\begin{matrix} E^{T}QE=\begin{bmatrix} x_{1}\\x_{2} \end{bmatrix}^{T}\begin{bmatrix} q_{1} &0 \\ 0& q_{2} \end{bmatrix}\begin{bmatrix} x_{1}\\x_{2} \end{bmatrix}\\ u^{T}Ru=r_{1}u_{1}^{2}+r_{2}u_{2}^{2}\end{matrix}\right.

        其中,Q 和R 都为调节矩阵,q_{1}q_{2}r_{1}r_{2} 为权重系数。

二、MPC 模型

        MPC 模型的总体思路为:通过模型来预测系统在某一未来时间段内的表现来进行优化控制。MPC 模型多用于数位控制(注:数位控制理论是在计算机系统(微控制器、微处理器)中以(二进制)编码形式设计离散时间(和/或)量化振幅(和/或)策略的技术,它将控制模拟(连续 时间和振幅)模拟系统的动态。),所以其状态空间和输入量都是离散时间下的:

X_{k+1}=AX_{k}+Bu_{k}

2.1 MPC 模型预测的流程

STEP 1:采样

        测量读取当前时间点系统的状态变量,即x(k|t)=x(t)

STEP 2:代价函数

        模型预测控制的核心思想是在线求解最优化问题。其中所谓的最优化问题就是通过代价函数来表示的,其一般形式为:

J=L(x,u)+V_{f}(x)

J(t)=\sum_{k=0}^{N-1}L(x(k|t),u(k|t))+V_{f}(x(N|t))

J=\sum_{k=0}^{N-1}E_{k}^{T}QE_{k}+u_{k}^{T}Ru_{k}+E_{N}^{T}FE_{N}                         式(1)

        可见,代价函数J(t)由过程项L(x,u)和终端项V_{f}(x)组成。

        其中,过程项主要包含系统的性能指标,也就是系统的优化目标,一般包含了状态和输入与期望值的偏差值,用来表述和保证系统对最优目标的接近程度。仔细观察可以发现,终端项的时刻N是过程项的时刻N-1的下一时刻。这也就是为什么V_{f}(x)称为终端项。其作用是为了保证系统的稳定性,设计成二次型的形式。

STEP 3:滚动优化

图2.1 MPC模型输入量与输出量的关系

        MPC 模型预测采用的是滚动优化,即在每次优化过程中,只采用一个输入量,来预测下一时域的状态量的变化。如图2.1所示。在K时刻,即便我们是基于包含了u_{k}u_{k+1}的控制区间预测出了y_{k}y_{k+1}以及y_{k+2}的预测区间,但是在K时刻,我们只对系统输入在K时刻的u_{k}。在下一时刻即K+1时刻,在预测判断输入u_{k+1}。这是MPC 模型中非常重要的一点,称为滚动优化。这么做的原因是,在现实的系统中,会真实存在很多外界干扰因素,系统真实的输出量或者反应量会和预测出来的结果有所偏差。如图所示。在K时刻预测出来的输出量是黑线,但是由于不可避免的外界干扰因素,实际的输出是红线的走向,与预测的有所偏差。即使在K时刻偏差不是很大,但是由于过程项是随时间累加的,久而久之误差就会对系统的稳定性产生非常大的影响。不难看出,这样一个滚动优化的过程其实是一个实时迭代的过程,要求很大的计算量和计算时间。这就表示MPC模型预测其实适用于慢动态过程和具有高性能计算机的工作环境。这在要求响应快和低成本的工业化生产过程之中,是一个比较头疼的问题。

2.2 MPC 模型的详细数学建模推导

2.2.1 MPC 数学建模目标分析        

        MPC 发展到现在,其求解算法已经是非常成熟的了,不再需要人为求解,可以直接交给计算机从计算包功能包即可。那么我们在使用MPC 模型的过程中,难点就变成了如何建立MPC 数学模型,建立什么形式的数学模型。

        MPC 模型是基于二次规划的求解的。我们从二次规划(Quadratic Programming)的一般形式来看:

min\ Z^{T}QZ+C^{T}Z                                              式(2)

        其中,Q为调节对角矩阵,即:

Q=\begin{bmatrix} q_{1} & & & \\ &q_{2} & & \\ & & ... & \\ & & &q_{n} \end{bmatrix}  

        值得注意的是,整个式(2)中,有且只用一个变量,即Z变量。我们反观上面的式(1),除开QRF三个调节矩阵,共有Eu两个变量。那么思路就是,找出变量Eu之间的关系,将式(1)化成式(2)的形式。

2.2.2 建立MPC 数学模型

        现有离散时间系统:

x(k+1)=Ax(k)+Bu(k)

        接着定义状态空间和输入量:

\left\{\begin{matrix} X_{k}=\begin{bmatrix} x(k|k)\\x(k+1|k) \\ x(k+2|k) \\ ... \\ x(k+N|k) \end{bmatrix}\\ u_{k}=\begin{bmatrix} u(k|k)\\u(k+1|k) \\ u(k+2|k) \\ ... \\ u(k+N-1|k) \end{bmatrix} \end{matrix}\right.                                        式(3)

        结合MPC 预测,则有K+1 时刻的状态变量:

x(k+1|k)=Ax(k|k)+Bu(k|k)

              =Ax_{k}+Bu(k|k)

x(k+2|k)=Ax(k+1|k)+Bu(k+1|k)

                                =A^{2}x_{k}+ABu(k|k)+Bu(k+1|k)

...

x(k+N|k)=A^{N}x_{k}+A^{N-1}Bu(k|k)+...+Bu(k+N-1|k)

        结合式(3),写成矩阵的形式:

X_{k}=\begin{bmatrix} I\\A \\ A^{2} \\ ... \\A^{N} \end{bmatrix}x_{k}+\begin{bmatrix} 0 &0 &0 &0 &0 \\ B& & & & \\ AB& B & & & \\ ...& &... & & \\ A^{N-1}B& A^{N-2}B & &B & \end{bmatrix}\begin{bmatrix} u(k|k)\\u(k+1|k) \\ u(k+2|k) \\ ... \\ u(k+N-1|k) \end{bmatrix}

        简化为:

X_{k}=Mx_{k}+CU_{k}式(4)

        现在将式(1)中部分项展开:

\sum_{k=0}^{N-1}E_{k}^{T}QE_{k}+E_{N}^{T}FE_{N}

=x(k|k)^{T}Qx(k|k)+x(k+1|k)^{T}Qx(k+1|k)+...+x(k+N-1|k)^{T}Qx(k+N-1|k)+x(k+N|k)^{T}Fx(k+N|k)

=\begin{bmatrix} x(k|k)\\x(k+1|k) \\ x(k+2|k) \\ ... \\ x(k+N|k) \end{bmatrix}^{T}\begin{bmatrix} Q & & & & \\ & Q& & & \\ & &... & & \\ & & & Q & \\ & & & &F \end{bmatrix}\begin{bmatrix} x(k|k)\\ x(k+1|k) \\ x(k+2|k) \\ ... \\ x(k+N|k) \end{bmatrix}

=X_{k}^{T}\bar{Q}X_{k}

现在我们可以将式(1)改写成为:

J=X_{k}^{T}\bar{Q}X_{k}+U_{k}^{T}\bar{R}U_{k}

再代入式(4):

J=(Mx(k)+CU_{k})^{T}\bar{Q}(Mx(k)+CU_{k})+U_{k}^{T}\bar{R}U_{k}

          =(x^{T}(k)M^{T}+U_{k}^{T}C^{T})\bar{Q}(Mx(k)+CU_{k})+U_{k}^{T}\bar{R}U_{k}

                                 =x^{T}_{k}M^{T}\bar{Q}Mx_{k}+x_{k}^{T}M^{T}\bar{Q}CU_{k}+U_{k}^{T}C^{T}\bar{Q}Mx_{k}+U_{k}^{T}C^{T}\bar{Q}CU_{k}+U_{k}^T\bar{R}U_{k}

        已知,代价函数最终算出来是一个数字,即从维度上来说是1*1的。由此推出,等号右边的结果维度也是1*1的。可以确定的是,x^{T}_{k}M^{T}\bar{Q}Mx_{k}U_{k}^T\bar{R}U_{k}U_{k}^{T}C^{T}\bar{Q}CU_{k}的维度都是1*1的。那么可以推断出,剩余的两项结果也是1*1,即也是一个数字。由线性代数可知,1*1的矩阵转矩就是其本身。那么可以写成:

J=x^{T}_{k}M^{T}\bar{Q}Mx_{k}+2x_{k}^{T}M^{T}\bar{Q}CU_{k}+U_{k}^{T}C^{T}\bar{Q}CU_{k}+U_{k}^T\bar{R}U_{k}

                         =x^{T}_{k}Gx_{k}+2x_{k}^{T}EU_{k}+U_{k}^{T}HU_{k}                                                           式(4)

        其中:H=C^{T}\bar{Q}C+R

比较式(4)和式(2),可以发现,整个代价函数中有且只有一个变量U_{k}了(x_{k}为系统最初时刻测量得到的状态量,可以视作常数处理)。

三、后记

3.1 MPC 模型的局限性

        在MPC 模型预测的流程部分我们谈到,滚动优化的过程其实是一个实时迭代的过程,要求很大的计算量和计算时间。这就表示MPC模型预测其实适用于慢动态过程和具有高性能计算机的工作环境。可见MPC 模型预测还是有一定的局限性。现在罗列几个在论文中看到的MPC 模型的缺点:

1)MPC 模型预测适用于慢动态过程和具有高性能计算机的环境;

2)受限于线性和准线性过程;

3)现有的预测控制算法多数采用工业界易于获得的阶跃响应或脉冲响应这类非参数模型, 并通过在 线求解约束优化问题实现优化控制, 对于约束系统无法得到解的解析表达式, 这给用传统定量分析方法探求设计参数与系统性能的关系带来了本质的困难, 使得这些算法中的大量设计参数仍需人为设定并通过大量仿真进行后验, 因此除了需要花费较大的前期成本外, 现场技术人员的经验对应用的成败也起着关键的作用。

3.2 MPC 模型预测的延申

        随着MPC 模型预测在更多领域的应用,如航天航空工程,人们发现在充满扰动和不确定性的环境中,传统的MPC 方法不再能保证控制器的有效性。因此,将系统的不确定性纳入到控制器设计问题中对于 MPC 的实际应用具有重要意义。目前,现有考虑不确定性问题的MPC 方法主要分 为鲁棒模型预测控制(Robust model predictive control, RMPC)以及随机模型预测控制 (Stochastic model predictive control, SMPC)两类, 前者主要针对有界扰动问题,后者则研究随机扰动问题。除此之外,还具有考虑安全性的避障MPC,容错MPC;考虑计算效率的分布式MPC和显式MPC等等。

参考资料:

[1] 【MPC模型预测控制器】2_最优化数学建模推导_哔哩哔哩_bilibili

[2]  沈强,赵泽阳,康泽禹等.航天器模型预测控制方法综述[J].南京航空航天大学学报,2023,55(06):941-955.DOI:10.16356/j.1005-2615.2023.06.001.

[3]  席裕庚,李德伟,林姝.模型预测控制——现状与挑战[J].自动化学报,2013,39(03):222-236.

  • 54
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
MPC(Model Predictive Control)模型预测控制是一种常用的控制方法,可以用于多种控制场合,例如过程控制、机器人控制、航天控制等。MPC是一种基于模型的控制方法,即在控制系统中,首先建立目标系统的数学模型,然后根据这个模型进行控制。下面将介绍在MATLAB中建立MPC模型预测控制器的步骤。 1. 建立目标系统的数学模型 在MATLAB中可以使用Simulink工具箱进行系统建模,也可以直接使用MATLAB的函数进行建模。建立好系统的数学模型后,需要将其转换为状态空间模型,即将系统的输入、输出和状态量表示为矩阵形式。 2. 设计控制器 MPC控制器设计的目标是通过对未来一段时间内的控制信号进行优化,实现对系统的稳定性和性能的控制。在MATLAB中可以使用MPC工具箱进行控制器的设计,具体步骤如下: (1)使用mpc导入系统模型。 (2)设置控制器参数,包括采样时间、控制时域等。 (3)设置控制器的成本函数,包括控制器输出和状态变量的权重。 (4)设置约束条件,包括输入、状态和输出约束条件。 3. 仿真控制器 将设计好的控制器与系统模型进行耦合,进行仿真。在MATLAB中可以使用Simulink工具箱进行仿真,具体步骤如下: (1)使用Simulink导入系统模型和MPC控制器。 (2)设置仿真参数,包括仿真时间、初始状态等。 (3)运行仿真,并观察系统响应和控制信号。 通过以上步骤,就可以在MATLAB中建立MPC模型预测控制器的模型,并进行仿真分析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值