跳到主要内容

1.2 模型与建模

来源:James B. Rawlings、David Q. Mayne、Moritz M. Diehl,Model Predictive Control: Theory, Computation, and Design, 2nd Edition,Chapter 1,Section 1.2 Models and Modeling,教材第 1–10 页。

为什么 MPC 离不开模型

模型预测控制(Model Predictive Control, MPC)的基本流程可以压缩成:

当前状态 x(k)

用动态模型预测未来

在约束下优化未来输入序列

只执行第一个控制量 u(k)

下一时刻重新测量并重复

模型在其中有两种用途:

  1. 控制(regulation):从当前状态出发预测未来,选择最优控制输入。
  2. 状态估计(state estimation):把历史测量与模型协调起来,推断当前最可能的状态。

因此,MPC 不是仅靠当前误差直接产生控制量,而是先问:

如果现在施加这串控制输入,系统未来会怎样运动?

1.2.1 线性动态模型

一般连续时间非线性模型写成:

x˙=f(x,u,t),y=h(x,u,t),x(t0)=x0,\dot{x}=f(x,u,t), \qquad y=h(x,u,t), \qquad x(t_0)=x_0,

其中:

  • xRnx\in\mathbb{R}^n:状态(state),描述系统内部动态所需的最小变量。
  • uRmu\in\mathbb{R}^m:控制输入(input),控制器可以操纵的量。
  • yRpy\in\mathbb{R}^p:输出(output),能够测量或关心的量。
  • tt:连续时间。
  • x0x_0:初始状态。

线性时变模型

最一般的连续时间线性状态空间模型为:

x˙=A(t)x+B(t)u,\dot{x}=A(t)x+B(t)u, y=C(t)x+D(t)u.y=C(t)x+D(t)u.

A,B,C,DA,B,C,D 的意义为:

矩阵形状作用
AAn×nn\times n状态自身如何演化
BBn×mn\times m输入如何改变状态
CCp×np\times n如何从状态得到输出
DDp×mp\times m输入对输出的直接作用

许多系统中 D=0D=0,因为输入先改变内部状态,然后才反映到输出上。

线性时不变模型

如果矩阵不随时间变化:

x˙=Ax+Bu,y=Cx+Du.(1.1)\dot{x}=Ax+Bu, \qquad y=Cx+Du. \tag{1.1}

状态解为:

x(t)=eAtx0+0teA(tτ)Bu(τ)dτ.(1.2)x(t)=e^{At}x_0+ \int_0^t e^{A(t-\tau)}Bu(\tau)\,d\tau. \tag{1.2}

这个公式由两部分组成:

  • eAtx0e^{At}x_0:初始状态在没有新输入时产生的响应。
  • 积分项:过去所有输入经过系统动态加权后,对当前状态的累计影响。

矩阵指数定义为:

eX=I+X+X22!+X33!+.e^X=I+X+\frac{X^2}{2!}+\frac{X^3}{3!}+\cdots.

矩阵 AA 的特征值决定旧状态和旧输入的影响会随时间衰减、保持还是增长。

具体例子:一阶水箱模型中的 A、B、C 分别是什么?

假设水箱液位为 x(t)x(t),泵流量为 u(t)u(t),出流近似与液位成正比:

x˙=0.2x+0.5u,y=x.\dot{x}=-0.2x+0.5u, \qquad y=x.

于是:

A=[0.2],B=[0.5],C=[1],D=[0].A=[-0.2],\qquad B=[0.5],\qquad C=[1],\qquad D=[0].

u(t)=0u(t)=0,则:

x(t)=e0.2tx0,x(t)=e^{-0.2t}x_0,

液位会自然衰减。若 u(t)u(t) 恒定,泵的历史输入通过卷积积分累积到当前液位中。

1.2.2 输入输出模型

如果不知道系统内部结构,只关心可操纵输入 uu 与可测输出 yy,可以隐藏状态,使用传递函数模型:

y(s)=G(s)u(s),y(s)=G(s)u(s),

其中 sCs\in\mathbb{C} 是 Laplace 变换变量,

y(s)=0esty(t)dt.y(s)=\int_0^\infty e^{-st}y(t)\,dt.

如果传递函数来自状态空间模型,并取零初始状态,则:

G(s)=C(sIA)1B+D.G(s)=C(sI-A)^{-1}B+D.

两种描述的区别是:

状态空间模型输入输出模型
显式保留内部状态 xx隐藏状态
适合状态估计、约束和多变量 MPC适合系统辨识和频域分析
可以设置非零初始状态传递函数推导通常假设零初始状态
信息

MPC 需要从当前状态预测未来,因此本书主要使用状态空间模型,传递函数只作有限讨论。

1.2.3 分布参数模型

如果系统在空间上不均匀,仅用有限维状态向量可能不足,需要偏微分方程(PDE)。

例如化学组分 AA 的质量守恒:

cAt+(cAvA)RA=0,\frac{\partial c_A}{\partial t} +\nabla\cdot(c_Av_A)-R_A=0,

其中:

  • cAc_A:组分浓度。
  • vAv_A:速度场。
  • RAR_A:化学反应产生速率。

分布不一定是空间分布。粒径分布 f(r,t)f(r,t) 也可能由 PDE 描述,因为状态随粒径 rr 和时间 tt 同时变化。

实际 MPC 往往先通过有限差分、有限元或降阶模型,把 PDE 转换为高维有限状态模型,再进行数值预测和优化。

1.2.4 离散时间模型

数字控制器只在采样时刻工作,因此本书大量使用离散时间模型:

x(k+1)=Ax(k)+Bu(k),x(k+1)=Ax(k)+Bu(k), y(k)=Cx(k)+Du(k),(1.3)y(k)=Cx(k)+Du(k), \tag{1.3}

其中 kI0k\in\mathbb{I}_{\ge 0},实际时间为 t=kΔt=k\DeltaΔ\Delta 是采样周期。

本书常把下一时刻简写为:

x+=Ax+Bu.x^+=Ax+Bu.

递推展开可得:

x(k)=Akx0+j=0k1Akj1Bu(j).(1.4)x(k)=A^kx_0+ \sum_{j=0}^{k-1}A^{k-j-1}Bu(j). \tag{1.4}

它是连续时间卷积积分的离散版本。

数值例子:由输入序列计算未来状态

设一维离散系统:

x(k+1)=0.8x(k)+0.5u(k),x(k+1)=0.8x(k)+0.5u(k),

初始状态 x(0)=2x(0)=2,并施加:

u(0)=1,u(1)=1.u(0)=1,\qquad u(1)=-1.

逐步递推:

x(1)=0.8×2+0.5×1=2.1,x(1)=0.8\times2+0.5\times1=2.1,x(2)=0.8×2.1+0.5×(1)=1.18.x(2)=0.8\times2.1+0.5\times(-1)=1.18.

也可以直接使用式 (1.4):

x(2)=0.82×2+0.8×0.5×1+0.5×(1)=1.18.x(2)=0.8^2\times2+0.8\times0.5\times1+0.5\times(-1) =1.18.

MPC 就是用这种递推,把候选输入序列对应的未来状态全部预测出来。

连续模型如何离散化

对连续 LTI 模型 x˙=Acx+Bcu\dot{x}=A_cx+B_cu,如果采样周期内输入保持不变(zero-order hold),精确离散化为:

Ad=eAcΔ,A_d=e^{A_c\Delta}, Bd=0ΔeAcτBcdτ.B_d=\int_0^\Delta e^{A_c\tau}B_c\,d\tau.

这说明离散模型中的 A,BA,B 会随采样周期改变,不能在改变图像或控制频率后继续盲用旧模型。

1.2.5 约束

显式处理约束是 MPC 相比普通 LQR 的核心优势之一。

输入约束

执行器总有物理边界,例如阀门开度、电压、力矩:

uu(k)u.\underline{u}\le u(k)\le\overline{u}.

可写成统一线性不等式:

Eu(k)e,Eu(k)\le e,

其中:

E=[II],e=[uu].E= \begin{bmatrix} I\\-I \end{bmatrix}, \qquad e= \begin{bmatrix} \overline{u}\\-\underline{u} \end{bmatrix}.

状态约束

安全、质量或可操作性要求可以写成:

Fx(k)f.Fx(k)\le f.

输入变化率约束与增广状态

若要限制:

Δu(k)u(k1)Δ,\underline{\Delta} \le u(k)-u(k-1) \le\overline{\Delta},

可把上一步输入加入状态:

x~(k)=[x(k)u(k1)].\tilde{x}(k)= \begin{bmatrix} x(k)\\u(k-1) \end{bmatrix}.

增广模型为:

x~+=[A000]A~x~+[BI]B~u.\tilde{x}^+= \underbrace{ \begin{bmatrix} A&0\\0&0 \end{bmatrix}}_{\tilde A} \tilde{x} + \underbrace{ \begin{bmatrix} B\\I \end{bmatrix}}_{\tilde B}u.

这样“当前输入减去上一输入”又变成了当前状态和输入的线性约束。

硬约束与软约束

书中特别强调:

  • 输入约束通常是执行器的物理极限,应作为 hard constraints
  • 状态或输出约束常是目标要求,受扰动影响时可能无法同时满足,更适合做 soft constraints

引入松弛变量 ε(k)0\varepsilon(k)\ge0

Fx(k)f+ε(k).Fx(k)\le f+\varepsilon(k).

再在代价函数中惩罚 ε\varepsilon。这样优化问题不会仅因状态约束暂时不可达而彻底无解。

数值例子:软约束如何避免不可行?

假设要求温度状态满足:

x100,x\le 100,

但当前因扰动已经达到 x=103x=103。硬约束在当前时刻无法满足,优化问题可能 infeasible。

改成:

x100+ε,ε0,x\le100+\varepsilon, \qquad \varepsilon\ge0,

此时至少可以选 ε=3\varepsilon=3。若代价中加入:

ρε2,\rho\varepsilon^2,

并令 ρ\rho 很大,控制器会尽快把温度拉回 100 以下,但不会因为一时违规而停止产生控制量。

离散执行器

开关、泵组或炉组可能只能取离散值:

ui(k){0,1}.u_i(k)\in\{0,1\}.

这会把连续优化问题变成含整数变量的问题,通常比标准二次规划困难得多。本节只引入概念,后续章节再处理。

1.2.6 确定性与随机性

确定性模型给定 x,ux,u 后会产生唯一下一状态。实际测量却包含波动,来源主要有:

  • 过程扰动:未建模环境作用改变真实状态。
  • 测量噪声:传感器读数偏离真实输出。
  • 初始状态不确定性:当前状态只能估计。

线性随机模型写成:

x+=Ax+Bu+Gw,x^+=Ax+Bu+Gw, y=Cx+Du+v,y=Cx+Du+v,

其中:

  • ww:process disturbance,作用于状态演化。
  • vv:measurement noise,只污染测量。
  • GG:描述扰动如何进入各状态。
注意

测量噪声和过程扰动不能混为一谈。前者意味着“读数不准”,后者意味着“系统真的被外界推离了预测轨迹”。两者在状态估计中扮演不同角色。

本节知识链

物理过程
↓ 建模
连续/离散状态空间模型
↓ 加入实际限制
输入、状态、变化率、整数约束
↓ 加入现实不确定性
过程扰动与测量噪声

预测控制 + 状态估计

阅读后应能回答

  1. 为什么 MPC 比普通反馈控制更依赖动态模型?
  2. 状态、输入和输出分别是什么?
  3. 状态空间模型与传递函数模型有什么区别?
  4. 为什么数字 MPC 更常使用离散时间模型?
  5. 如何从输入序列预测 x(k)x(k)
  6. 为什么要把 u(k1)u(k-1) 加入增广状态?
  7. 为什么输入约束通常是硬约束,而状态约束常被软化?
  8. 过程扰动 ww 与测量噪声 vv 有何区别?