DC-TMPC: A tube-based MPC algorithm for systems that can be expressed as a difference of convex functions.
Developed at the University of Oxford, DC-TMPC is a novel robust tube-based nonlinear model predictive control paradigm for nonlinear systems whose dynamics can be expressed as a difference of convex functions. The approach relies on successively perturbing the system predicted trajectories and bounding the linearisation error by exploiting convexity of the system dynamics. The linearisation error is then treated as a disturbance of the perturbed system to construct robust tubes containing the predicted trajectories, enabling the robust nonlinear MPC optimisation to be performed in real time as a sequence of convex optimisation programs.
The DC-TMPC algorithm was presented at the 61th IEEE Conference on Decision and Control, Cancun, Mexico, and the theoretical details can be found in the paper 'Difference of convex functions in robust tube nonlinear MPC' by Martin Doff-Sotta and Mark Cannon.
The present implementation involves regulating a coupled tank whose dynamics can be represented as a difference of convex functions.
- Python 3
- CVX
- Mosek
You need to install the following:
Run the following command to install all modules at once
pip3 install numpy scipy matplotlib cvxpy mosek
In order to use mosek, you will need a license. Look [here] (https://www.mosek.com/products/academic-licenses/) to set it up.
- Clone the repository
git clone https://github.com/martindoff/DC-TMPC.git
- Go to directory
cd DC-TMPC-master
- Run the program
python3 main.py
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Martin Doff-Sotta - [email protected]
Linkedin: https://www.linkedin.com/in/mdoffsotta/