Skip to content

Python code of the paper "Efficient Calibration of Embedded MPC" (2020 IFAC World Congress) by Marco Forgione, Dario Piga, and Alberto Bemporad

License

Notifications You must be signed in to change notification settings

forgi86/efficient-calibration-embedded-MPC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ac42a7e · May 5, 2021

History

43 Commits
May 5, 2021
Oct 22, 2019
May 5, 2021
Oct 15, 2019
Jun 11, 2020
Oct 15, 2019
Mar 12, 2020
Oct 24, 2019
Nov 25, 2019
Jan 7, 2021
May 5, 2021
Oct 22, 2019
May 5, 2021
Oct 15, 2019

Repository files navigation

Efficient Calibration of Embedded MPC

This repository contains the Python code to reproduce the results of the paper Efficient Calibration of Embedded MPC by Marco Forgione, Dario Piga, and Alberto Bemporad.

The code performs an efficient data-driven MPC calibration by tuning:

  • MPC weight matrices
  • MPC sampling time
  • Prediction and control horizon
  • Kalman filter matrices
  • QP solver relative and absolute tolerances

to optimize a closed-loop objective function , under the constraint that where is the (worst-case) time required to compute the MPC control low. This constraints guarantees that the controller can run in real-time.

Main scripts:

The main script to be executed for MPC calibration is

GLIS_BO_main.py

The results of the MPC calibration are saved in the results_*.pkl file on the disk and are read by the script

GLIS_BO_analysis.py

that produces the relevant plots.

Other files:

  • pendulum_model.py: dynamic equations of the pendulum
  • pendulum_MPC_sim: performs a single closed-loop MPC simulation
  • objective_function.py: objective function
  • kalman.py: implements a kalman filter

Included dependencies:

Other dependencies:

Simulations were performed on a Python 3.6 conda environment with

  • numpy
  • scipy
  • matplotlib
  • OSQP (a QP solver used by the MPC controller)
  • python-control (used to solve the DARE of the Kalman Filter)
  • GPyOpt (for Bayesian Optimization, optional)

These dependencies may be installed through the commands:

conda install numpy scipy matplotlib
pip install osqp
pip install control
pip install gpyopt

Citing

If you find this project useful, we encourage you to

  • Star this repository ⭐
  • Cite the paper
@inproceedings{forgione2020efficient,
  title={{E}fficient {C}alibration of {E}mbedded {MPC}},
  author={Forgione, Marco and Piga, Dario and Bemporad, Alberto},
  booktitle={Proc. of the 21st IFAC World Congress, Berlin, Germany},
  year={2020}
}

About

Python code of the paper "Efficient Calibration of Embedded MPC" (2020 IFAC World Congress) by Marco Forgione, Dario Piga, and Alberto Bemporad

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published