In this semestral project, we delved into the world of **Model Predictive Control (MPC)**. MPC is used in various applications such as robotics and process control, due to its ability to handle multi-variable control problems with constraints. This semester, we specifically looked at two possible ways the MPC can be constructed - **Implicit Model Predictive Control (IMPC) and Explicit Model Predictive Control (EMPC). **

**Implicit Model Predictive Control (IMPC)** is a form of MPC where the control action is computed online by solving an optimization problem at each sampling instant. IMPC computes the optimal control inputs in real-time based on the current state of the system, unlike EMPC, which precomputes the control law offline and stores it for real-time use. Implicit MPC involves solving a finite-horizon optimal control at each control step. The objective is to minimize a cost function subject to system dynamics and constraints.

**Explicit Model Predictive Control (EMPC)** is an advanced form of MPC where the control law is precomputed offline and expressed as a piecewise affine function of the system’s state. By precomputing the control law, EMPC significantly reduces the computational burden during real-time operation, making it suitable for applications with stringest real-time requirements. When it comes to solving the problem using EMPC, there are multiple methods that can be used to achieve this. All of them work based on the same principle. First off we need to locate the critical region, in which we are located. We can see the example of how the critical regions could look in Figure 1.

Afterwards, we apply the optimal control law corresponding to the said region and figure out the solution. The corresponding optimal control law to critical regions pictured in Figure 1 can be seen in Figure 2.

In our semestral project, the focus was on comparing these MPC approaches across different systems which varied when it came to number of states and their complexity. We used offline computation time, online computation time and memory requirements to compare these two approaches. The results will be shared in the following part.

**We started off with a system of double integrator, which consists of two states**. We wished to see how the parameters used for comparing two approaches will change with rising prediction horizon of the MPC.

The results can be seen in Figures 3,4 and 5.

The results were such that we can see that the EMPC outperforms IMPC, which was expected due to the system not being very complex, only consisting of two states. This result is however not to be interpreted as a general rule as the results could have been different had the dynamics of the system changed.

**Next, we looked at a system with four states.** For this more complex system, we obtained results that would generally be expected. The results can be seen in Figure 6. We are only showing the online computation time here as it best demonstrates what we wished to showcase with this example.

For a small prediction horizon we saw that the EMPC performed better in online computation time but there occurred an exponential rise in the value of this time for EMPC once we crossed a certain value of prediction horizon. This was what we saw for other systems as well. Higher the amount of states of the system, the sooner EMPC became the worse option when it came to all three parameters.

**Lastly, we will say that for the system with nine states,** we came upon significant issues when it came to even constructing the EMPC. We were only able to do so for small values of prediction horizon going up to 7, and even when we did, the EMPC performed worse than IMPC for all the parameters. This showcases the fact that EMPC is in general not recommended for systems of higher complexity.

In the future, this project could be developed further in different directions. We could look into other methods of solving the EMPC, such as binary trees, or explore the approximation of MPC using neural network.