Model Predictive Control (MPC) in Julia

The short answer is that tube-based MPC, in general, is a really common approach for robust MPC.

Additionally, we want to do all the time-consuming computations before applying the MPC algorithm online, i.e., solving the receding horizon problem. Therefore, tube-based MPC is better than a min-max approach. Or what approach would you use as an alternative?

You can checkout LazySets.jl for set computations. I haven’t looked at the implementation of the control invariant set for nonlinear systems yet. It is true, that the computation is more involved than in the linear case. However, there exist methods to do so, but I am not sure if these methods work only for a specific kind of nonlinear systems or have different restrictions.

3 Likes

You may find LazySets.Ellipsoid useful and since it’s a LazySet it plays well with other set types and set operations.

1 Like

Thanks for answering and the julia package links.

Or what approach would you use as an alternative?

For an additive disturbance I don’t have knowledge of an other robust MPC ( tube-based or min-max). This survey enumerates other approach, however they are for parametric or unstructured uncertainties.

I haven’t implemented some robust MPC yet, and if you have a reference that compares the tube-based and min-max MPC, it will help me a lot.

Regards

I don’t have a comparison since I didn’t need to implement min-max MPC or any other kind of MPC. And most likely, I will not do that in the near future.

But I should be able to help you with the implementation of tube-based MPC if you have questions, just write a post or pm me.

Check out Packages

It mentions Munkres.jl
too bad it’s not a JuMP extension. I think otherwise JuMP would have everything you need.

1 Like