Giter Site home page Giter Site logo

dc-tmpc's Introduction


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 - [email protected]

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

dc-tmpc's People

Contributors

martindoff avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.