C/C++教程

MPC优化问题求解的推导

本文主要是介绍MPC优化问题求解的推导,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

 参考论文为《A Predictive Controller for Autonomous Vehicle Path Tracking》。假设我们要求解的代价函数\(J\)为:

\[J=X'QX+U'RU\:(1) \]

其中,\(X\)为未来\(N_p\)次的状态预测序列,\(U\)为未来\(N_u\)次的控制序列,亦即表示如下:

\[X=\left[\begin{matrix}x(k+1|k)\\x(k+1|k)\\\vdots&\\x(k+N_p|k)\end{matrix}\right] \]

\[U=\left[\begin{matrix}u(k|k)\\u(k+1|k)\\\vdots&\\u(k+N_u-1|k)\end{matrix}\right] \]

依据状态方程\(x(k+1)=Ax(k)+Bu(k)\),依次待入解得\(x(k+1),x(k+1),\cdots\)我们可以得到:

\[X=P_xx(k|k)+H_xU\:(2) \]

其中\(P_x\)如下:

\[P_x=\left[\begin{matrix}A\\A^2\\\vdots&\\A^{N_p}\end{matrix}\right] \]

而\(H_x\)如下:

\[H_x=\left[\begin{matrix}B&0&\cdots&0\\AB&B&\cdots&0\\\vdots&\vdots&\ddots&\vdots\\A^{N_p-1}B&\cdots&\cdots&B\end{matrix}\right] \]

我们将\((2)\)待入\((1)\)可以得到:

\[J=C+U'(H_x'QH_x+R)U+x(k|k)'P'QH_xU+U'H_x'QPx(k|k)\:(3) \]

通常\(Q\)为对角阵,因此\((3)\)可以化简为:

\[J=C+U'(H_x'QH_x+R)U+2x(k|k)'P'QH_xU\:(4) \]

其中\(C\)为常数项,可以忽略,这样便有了标准二次规划\(Y=X'HX+fX\)的形式,可以直接进行求解了。

这篇关于MPC优化问题求解的推导的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!