MPC——理论知识(1)

    模型预测控制重构了追踪轨迹作为优化问题的任务。优化问题的解决方案是最佳的轨迹。模型预测控制涉及模拟不同的执行器输入,预测最终的轨迹并以最小的成本选择该轨迹。当前状态和参考轨迹是已知的。在每个时间步骤中,制动器输入被优化以便最小化预测轨迹的成本。一旦找到最低成本的轨迹,执行第一组致动器命令,其余部分被丢弃,并且在计算新的最佳轨迹时在每个时间步重复。

  模型预测控制的3个关键步骤:

(1)预测模型:预测模型是模型预测控制的基础。主要功能是根据对象的历史信息和未来输入,预测系统未来的输出。对于模型预测的形式没有严格的限定,状态方程、传递函数这类传统的模型都可以作为预测模型。对于线性稳定系统,阶跃响应、脉冲响应这类非参数模型,也可以直接作为预测模型使用。

(2)滚动优化:预测模型控制通过某一性能指标的最优来确定控制作用,但优化不是一次离线进行,而是反复在线进行的。这就是滚动优化的含义,也是模型预测控制区别于传统最优控制的根本点。

(3)反馈校正:在新的采样时刻,首先检测对象的实际输出,并利用这一实时信息对基于模型的预测结果进行修正,然后进行新的优化。

控制过程中始终存在一条期望轨迹。以时刻k作为当前时刻(坐标系纵轴所在的位置),控制器结合当前的测量值和预测模型,预测系统未来一段时域内[k,k+N_{p} ](也被称为预测时域)系统的输出,如曲线2所示。通过求解满足目标函数的以及各种约束的优化问题,得到控制时域内一系列的控制序列,如图中矩形波4所示(从坐标系纵轴开始),并将该控制序列的第一个元素作为受控对象的实际控制量。当下一个时刻k+1时,重复上述过程,如此滚动地完成一个个带约束的优化问题,以实现对被控对象的持续控制。

线性时变模型预测控制算法

  根据所采用模型的不同,模型预测控制主要包括动态矩阵控制(DMC)、模型算法控制(MAC)、广义预测控制(GPC)等。同时,在现代控制理论中广泛使用的状态空间模型,同样可以应用于模型预测控制中。

(1)预测方程

首先考虑以下的离散线性化模型:

x(k+1)=A_{k,t} x(k)+B_{k,t}u(k)

设定

\xi (k\vert t)= \begin {bmatrix}        x(k|t)  \\      u(k-1|t)       \end{bmatrix}

可以得到一个新的状态空间表达式:

\xi (k+1\vert t)=\tilde{A}_{k,t} \xi (k\vert t)+\tilde{B}_{k,t} \Delta u (k\vert t)                   

\eta (k\vert t)=\tilde{C}_{k,t} \xi (k\vert t)

其中

\Delta u(k|t)=u(k|t)-u(k-1|t)

所以

x(k+1|t)=A_{k,t} x(k|t)+B_{k,t}u(k-1|t) +B_{k,t}\Delta u(k|t)

可得:

\tilde{A}_{k,t}=\begin {bmatrix}        A(k|t) &  B(k|t) \\      0_{m\times n}  & I_{m}      \end{bmatrix}

\tilde{B}_{k,t}=\begin {bmatrix}       B(k|t) \\      I_{m}      \end{bmatrix}

\tilde{C}_{k,t}=\begin {bmatrix}       C_{k,t}  & 0\\     \end{bmatrix}

为了进一步简化计算,做出如下假设:

\tilde{A}_{k,t}=\tilde{A}_{t},     k=t,...,t+N-1

\tilde{B}_{k,t}=\tilde{B}_{t},     k=t,...,t+N-1

如果系统预测时域为N_{p} ,控制时域为N_{c} ,那么预测时域内的状态量和系统输出量可以用以下算式计算:

\xi (t+Np\vert t)=\tilde{A}^{N_{p}}  _{t} \xi (t\vert t)+\tilde{A}^{N_{p}-1}  _{t} \tilde{B}_{t}  \Delta u (t\vert t)+...+\tilde{A}^{N_{p}-N_{C}-1}  _{t} \tilde{B}_{t}  \Delta u (t+N_{c} \vert t)

\eta  (t+N_{p} \vert t)=\tilde{C} _{t} \tilde{A}^{N_{p}} \xi (t\vert t)+ \tilde{C} _{t} \tilde{A}^{N_{p}-1}\tilde{B}_{t}  \Delta u (t\vert t)+...+\tilde{C} _{t} \tilde{A}^{N_{p}-N_{c} -1}\tilde{B}_{t}  \Delta u (t+N_{c} \vert t)

为了使整个关系更加明确,将系统未来时刻的输出以矩阵的形式表达:

Y_{(t)}=\Psi  _{t}  \xi (t|t)+\Theta _{t}\Delta U(t)

式中:

Y (t)= \begin {bmatrix}        \eta ({t+1|t})   \\       \eta ({t+2|t})   \\ ...\\       \eta ({t+N_{c} |t})   \\...\\       \eta ({t+N_{p} |t})   \\\end{bmatrix}

\Psi (t)= \begin {bmatrix}        \tilde{C}_{t}\tilde{A}_{t}   \\       \tilde{C}_{t}\tilde{A}_{t}^2    \\ ...\\       \tilde{C}_{t}\tilde{A}_{t}^{N_{c}}     \\...\\       \tilde{C}_{t}\tilde{A}_{t}^{N_{p}}     \\\end{bmatrix}

\Delta U (t)= \begin {bmatrix}       \Delta u(t|t)   \\      \Delta u(t+1|t)   \\ ...\\      \Delta u(t+N_{c} |t)   \\\end{bmatrix}

\Theta (t)= \begin {bmatrix}        \tilde{C}_{t}\tilde{B}_{t}  & 0 & 0 & 0 \\       \tilde{C}_{t}\tilde{A}_{t}\tilde{B}_{t} & \tilde{C}_{t}\tilde{B}_{t} &0 &0   \\ \cdots & \cdots & \ddots & \cdots\\       \tilde{C}_{t}\tilde{A}_{t}^{N_{c}-1}\tilde{B}_{t}  &        \tilde{C}_{t}\tilde{A}_{t}^{N_{c}-2 }\tilde{B}_{t}  & \cdots & \tilde{C}_{t}\tilde{B}_{t} \\       \tilde{C}_{t}\tilde{A}_{t}^{N_{c}}\tilde{B}_{t}  &        \tilde{C}_{t}\tilde{A}_{t}^{N_{c}-1 }\tilde{B}_{t}  & \cdots &  \tilde{C}_{t}\tilde{A}_{t}\tilde{B}_{t} \\ \cdots & \cdots & \ddots & \cdots\\       \tilde{C}_{t}\tilde{A}_{t}^{N_{p}-1}\tilde{B}_{t}   &        \tilde{C}_{t}\tilde{A}_{t}^{N_{p}-2}\tilde{B}_{t}  & \dots        &\tilde{C}_{t}\tilde{A}_{t}^{N_{p}-N_{c}-1}\tilde{B}_{t}    \\\end{bmatrix}

通过上式可以清楚看到,在预测时域内的状态量和输出量都可以通过系统当前的状态量\xi (t|t)和控制时域内的控制增量\Delta U(t)计算得到。这也就是模型预测控制算法中“预测”功能的实现。

(2)优化求解

    实际上,系统的控制增量是未知的,只有通过设定合适的优化目标,并对其进行求解,才能得到控制时域内的控制序列。

可以把控制增量作为目标函数的状态量,优化目标函数如下形式:

J(\xi (t),u(t-1),\Delta U(t))=\sum_{i=1}^{N_{p}}||\eta (t+i|t)-\eta_{ref}(t+i|t)||^2_{Q} +\sum_{i=1}^{N_{c}-1}||\Delta u(t+i|t)||^2 _{R}

其中,第一项反映了系统对参考轨线的跟随能力,第二项反映了对控制量平稳变化的要求。Q和R为权重矩阵,整个表达式的功能是使系统能够尽快且平稳地跟踪上期望的轨迹。同时,在实际控制系统中,往往需要满足系统状态量以及控制量的一些约束,一般如下:

控制量约束:

u_{min}(t+k)\leq  u(t+k)\leq u_{max}(t+k),k=0,1,\cdots,N_{c}-1

控制量约束:

\Delta u_{min}(t+k)\leq \Delta u(t+k)\leq \Delta u_{max}(t+k) k=0,1,\cdots,N_{c}-1

输出约束:

y_{min}(t+k) \leq y(t+k) \leq y_{max}(t+k),k=0,1,\cdots,N_{c}-1

上面三个公式,形成了一个完整的优化目标表达式。通过求解这个带约束条件的优化目标,就能得到未来一段时间的控制序列。然而,由于系统的模型是实时改变的,并不能保证每个时刻该优化目标都能得到可行解。因此,有必要对优化目标进行相应的处理。比普遍并且证明有效的方式是在优化目标中加入松弛因子,如下所示:

J(\xi (t),u(t-1),\Delta U(t))=\sum_{i=1}^{N_{p}}||\eta (t+i|t)-\eta_{ref}(t+i|t)||^2_{Q} +\sum_{i=1}^{N_{c}-1}||\Delta u(t+i|t)||^2 _{R} +\rho \varepsilon ^2

式中,\rho 为权重系数,\varepsilon 为松弛因子。

将系统输出的状态空间表达式代入优化目标式,并且将预测时域内的输出量偏差表示为:

E(t)=\Psi (t)\tilde{\xi (t|t)}-Y_{ref}(t),Y_{ref}=[\eta _{ref}(t+1|t),\cdots,\eta _{ref}(t+N_{p}|t)] ^T

经过相应的矩阵计算,s.t.  \Delta U_{min} \leq \Delta U_{k} \leq \Delta Umax,=t,\cdots,t+H_{e-1}可以将优化目标调整为:

J(\xi (t),u(t-1),\Delta U(t))=[\Delta U(t)^T,\varepsilon  ]^T H_{t} [\Delta U(t),\varepsilon ]+G_{t}[\Delta U(t)^T ,\varepsilon ] +P_{t}

式中:

H_{t} = \begin {bmatrix}         \tilde{\Theta} _{t}Q_{e}\Theta_{t}+R_{e}   & 0  \\ 0 & \rho     \\\end{bmatrix}

G_{t}=\begin {bmatrix} 2E(t)^TQ_{e}\Theta_{t} & 0 \\\end {bmatrix}

P_{t}=E(t)^TQ_{e}E(t)

在式中,P_{t}为常量,因此模型预测控制在每一步的带约束优化求解问题都等价于求解如下的二次规划问题:

min[\Delta U(t)^T,\varepsilon  ]^T H_{t} [\Delta U(t),\varepsilon ]+G_{t}[\Delta U(t)^T ,\varepsilon ]

s.t. \Delta U_{min} \leq \Delta(k) \leq \Delta U_{max},k=t,\cdots,t+H_{e}-1

Y_{min}-\varepsilon  \leq \Psi _{t}\xi (t|t)+\Theta _{t}\Delta U(t)\leq Y_{max}+\varepsilon

\varepsilon \geq 0

(3)反馈机制

    在每个控制周期内完成对上式的求解后,得到了控制时域内的一系列控制输入增量:

\Delta U_{t}^* =[\Delta u_{t}^*,\Delta u_{t+1}^*,\cdots,\Delta u_{t+N_{c}-1}^*]

    根据模型预测控制的基本原理,将该控制序列中的第一个元素作为实际的控制输入增量作用于系统,即:

u(t)=u(t-1)+\Delta u_{t}^*

    系统执行这一控制量直到下一时刻。在新的时刻,系统根据状态信息重新预测下一段时域的输出,通过优化过程得到一个新的控制增量序列。如此循环,直到系统完成控制过程。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容