When simulating systems of ODEs, I'm used to always using a numerical integration scheme to propagate the equations forward in time, such as simple Euler integration or Runge-Kutta methods. However, with model predictive control (MPC), every textbook I see gives the following form for propagating a linear system forward in time:


However, if we see how this system evolves in time using arbitrary inputs $u(t)$, the results are extremely inaccurate. I would have thought that MPC would incorporate some form of integration scheme while performing the control optimization. So, for example, if we consider Euler integration we would have,

$$\dot{x}(t)=Ax(t)+Bu(t)$$ $$\frac{x(t+1)-x(t)}{\Delta t}=Ax(t)+Bu(t)$$ and then our dynamics used as linear equality constraints in an MPC algorithm would be given by, $$x(t+1)= x(t) + \Delta t[Ax(t)+Bu(t)]$$

However, I've never seen a form like this used before. I know I must be wrong, but I don't know what I'm missing. Any clarification of why general MPC algorithms use $x(t+1)=Ax(t)+Bu(t)$ without any integration scheme would be much appreciated.


The first equation you wrote is called discrete-time system. They are often also written as $$x_{k+1} = Ax_k + Bu_k$$ Recall that MPC solves an optimization problem every time-step, so you need your system to have discrete time-steps in the first place.

In fact, you can use your Euler integration scheme to discretize a continuous time-system of the form $$\dot x = Ax + Bu$$ before applying an MPC scheme, you basically already did it right in your question without realizing.

If you consider, as you already mentioned, the forward Euler equation, you get $$\frac{x(t_{k+1})-x(t_k)}{\Delta t} = Ax(t_k) + Bu(t_k),$$ then you can solve this for $x(t_{k+1})$, which yields the discrete-time system $$x(t_{k+1}) = (I+A \Delta t)x(t_k) + B\Delta tu(t_k)$$ where $I$ is the identity matrix.

  • 2
    $\begingroup$ It is also worth mentioning that there are much better discretization method. For example zero order hold. $\endgroup$ – fibonatic Jun 10 '18 at 11:16
  • $\begingroup$ Aha, so the $A$ and $B$ matrices in MPC already assumes that we've applied some form of numerical integration scheme already, where in our case we have $A = (I+A\Delta t)$ and $B = B\Delta t$? $\endgroup$ – InquisitiveInquirer Jun 10 '18 at 20:23
  • $\begingroup$ You could describe it like that, though the purpose of the "numerical integration scheme" here is really the discretization (and it's not very good at that, as @fibonatic already pointed out), not developing the system state. Maybe it also helps to read a bit about the difference between continuous-time and discrete-time systems, it is crucial here to understand it. $\endgroup$ – OpticalResonator Jun 10 '18 at 20:54

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.