本文是对mpc模型预测控制学习的记录,主要参照了DR_CAN老师的视频进行学习。视频专栏链接:DR_CAN老师mpc视频专栏。在这篇博客中博主也针对DR_CAN老师的讲解做了详尽的笔记和代码实现。读者可以相结合地进行学习。
MPC算法主要包括以下三步:
系统输出参考值 R = 0 R=0 R=0,误差为 E = y − R = x − 0 = x E=y-R=x-0=x E=y−R=x−0=x。
选取这样简单的系统有利于在推导时降低难度。
在k时刻时,我们令:
其中 u ( k + 1 ∣ k ) u(k+1|k) u(k+1∣k)表示在k时刻预测的k+1时刻的的系统输入u, u ( k + i ∣ k ) u(k+i|k) u(k+i∣k)表示的含义类似于 u ( k + 1 ∣ k ) u(k+1|k) u(k+1∣k),N表示预测区间。
同样地,令:
其中Q 、R、F 为权重系数矩阵,假设其中 Q、R 均为对称矩阵(简单一些)。代价函数包含系统的误差和控制输入,可以通过代价函数的大小来衡量系统的优劣。
根据系统的状态空间表达式,可以推导出:
以看到代价函数仍然需要 x ( k + 1 ∣ k ) , x ( k + 2 ∣ k ) x(k+1|k),x(k+2|k) x(k+1∣k),x(k+2∣k)等下一步未知的状态。而我们的目标是只用控制输入来表示代价函数。将式(1.7)代入(1.8)中,得
,可以看到式(1.9)经化简之后,得到最终的形式只包含初始状态 以及控制输入 。之后便是形如代价函数J的二次型函数的最优化问题。
Ps:既然初始状态那一项 x k T G x k x_k^TGx_k xkTGxk是固定的,在计算最优化的时候可以不用计算吧。
本文主要注重的是过程推导,最后我们得到了系统代价函数的简单形式,关于代码,DR_CAN老师的教程中有详细的讲解和实践,有兴趣的可以自行跳转学习。