Skip to content

DC-TMPC: A tube-based MPC algorithm for systems that can be expressed as a difference of convex functions.

Notifications You must be signed in to change notification settings

martindoff/DC-TMPC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


Logo

DC-TMPC: A tube-based MPC algorithm for systems that can be expressed as a difference of convex functions.

Table of Contents

  1. About The Project
  2. Getting Started
  3. Roadmap
  4. Contact

About The Project

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.

Built With

  • Python 3
  • CVX
  • Mosek

Getting Started

Prerequisites

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.

Installation

  1. Clone the repository
    git clone https://github.com/martindoff/DC-TMPC.git
  2. Go to directory
    cd DC-TMPC-master
  3. Run the program
    python3 main.py

Roadmap

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Contact

Martin Doff-Sotta - martin.doff-sotta@eng.ox.ac.uk

Linkedin: https://www.linkedin.com/in/mdoffsotta/

About

DC-TMPC: A tube-based MPC algorithm for systems that can be expressed as a difference of convex functions.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages