GithubHelp home page GithubHelp logo

aalanwar / data-driven-predictive-control Goto Github PK

View Code? Open in Web Editor NEW
52.0 1.0 9.0 6.13 MB

Data-Driven Predictive Control

MATLAB 100.00%
mpc data-driven zonotope reachability-analysis data-driven-predictive-control predictive-control

data-driven-predictive-control's Introduction

Robust Data-Driven Predictive Control using Reachability Analysis



ECC 2022 talk

Seminar



This repo contains the code for our two papers:
[1] Amr Alanwar*, Yvonne Stürz*, Karl Johansson "Robust Data-Driven Predictive Control using Reachability Analysis" European Journal of Control


We present a robust data-driven control scheme for unknown linear systems with a bounded process and measurement noise. Instead of depending on a system model as in traditional predictive control, a controller utilizing a data-driven reachable region is proposed. The data-driven reachable regions are based on a matrix zonotope recursion and are computed based on only noisy input-output data of the system's trajectory. We assume measurement and process noise which are contained in bounded sets. While we assume knowledge of these bounds, no knowledge about the statistical properties of the noise is assumed. Our proposed scheme guarantees robust constraint satisfaction under measurement and process noise, which is essential in safety-critical applications.



Subject Pronouns

[2] Mahsa Farjadnia*, Amr Alanwar, Muhammad Umar B. Niazi, Marco Molinari, and Karl Henrik Johansson. "Robust Data-Driven Predictive Control of Unknown Nonlinear Systems using Reachability Analysis." Accepted to European Control Conference (ECC) 2023.


We present a robust data-driven predictive control approach for unknown nonlinear systems in the presence of bounded process and measurement noise. By using the past noisy input-output data in the learning phase, we propose a novel method to over-approximate reachable sets of an unknown nonlinear system. Then, we propose a data-driven predictive control approach to compute safe and robust control policies from noisy online data. The constraints are guaranteed in the control phase with robust safety margins through the effective use of the predicted output reachable set obtained in the learning phase.



Running

Note: Remove any version of CORA toolboxes from the Matlab path before starting.

paper [1]


1- Download MPT and install mosek toolboxs.
2- Add MPT folder and subfolders to the Matlab path.
3- Add the whole folder of this repo and subfolders to the Matlab path.
4- run ZPC.m.
5- run Robust_MPC_polytopes.m.
6- run plotPolyZono.m

paper [2]


1- Download and install the [MPT](https://www.mpt3.org) and [mosek](https://www.mosek.com/products/academic-licenses/) toolboxes.
2- Add the MPT folder and its subfolders to the Matlab path.
3- Include the entire folder of this repository, along with its subfolders, in the Matlab path.
4- Execute the NZPC_Predictive_Control.m file.


Ack

Note that portion of this code is from CORA toolbox and from Felix Gruber, and Matthias Althoff "Scalable Robust Model Predictive Control for Linear Sampled-Data Systems" We acknowledge the efforts by Paul George (UWaterloo) in fixing one Bug in the code. Many thanks!

Our paper Bibtex is as follows:

@article{alanwar2022robust,
  title={Robust data-driven predictive control using reachability analysis},
  author={Alanwar, Amr and St{\"u}rz, Yvonne and Johansson, Karl Henrik},
  journal={European Journal of Control},
  pages={100666},
  year={2022},
  publisher={Elsevier}
}
@article{farjadnia2022robust,
  title={Robust Data-Driven Predictive Control of Unknown Nonlinear Systems using Reachability Analysis},
  author={Farjadnia, Mahsa and Alanwar, Amr and Niazi, Muhammad Umar B and Molinari, Marco and Johansson, Karl Henrik},
  journal={arXiv preprint arXiv:2211.05867, Accepted at European Control Conference (ECC)},
  year={2023}
}

data-driven-predictive-control's People

Contributors

aalanwar avatar yvonne-stuerz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

data-driven-predictive-control's Issues

Bug on code

Hi Aalanwar,

Thank you very much for the open source code!
I got a question when I run ZPC.m, on line 211, you created card_cen, which is a Linear matrix variable 6x1 (full, real, 1 variable)
Coefficient range: 1 to 5.5.
On the line 213, card_zono = zonotope([card_cen,[R{i}.generators;zeros(1,genleni)]]);
the bug is: Error inputArgsCheck (On line 111)

Wrong value for the first input argument.
The right value: numeric (nonnan)
Type 'help zonotope' for more information.
Error ZPC (On line 213)
card_zono = zonotope([card_cen,[R{i}.generators;zeros(1,genleni)]]);

On my understanding, this card_cen is a nan numerical value, so it cannot be used to create a zonotope. Could you help me on this issue? Thank you in advance!

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.