https://github.com/antoineleeman/fast-sls
Matlab implementation of the paper "Fast System Level Synthesis: Robust Model Predictive Control using Riccati Recursions"
https://github.com/antoineleeman/fast-sls
disturbance matlab mpc optimization riccati rmpc sls
Last synced: about 2 months ago
JSON representation
Matlab implementation of the paper "Fast System Level Synthesis: Robust Model Predictive Control using Riccati Recursions"
- Host: GitHub
- URL: https://github.com/antoineleeman/fast-sls
- Owner: antoineleeman
- License: mit
- Created: 2024-04-24T14:58:43.000Z (about 1 year ago)
- Default Branch: new-branch
- Last Pushed: 2024-08-14T13:07:49.000Z (9 months ago)
- Last Synced: 2024-08-14T14:32:12.019Z (9 months ago)
- Topics: disturbance, matlab, mpc, optimization, riccati, rmpc, sls
- Homepage: https://arxiv.org/html/2401.13762
- Size: 91.4 MB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Fast System Level Synthesis: Robust Model Predictive Control using Riccati Recursions
This repository contains the MATLAB code that accompanies the research paper:
> Leeman, Antoine P and Kohler, Johannes and Messerer, Florian and Lahr, Amon and Diehl, Moritz and Zeilinger, Melanie N “Fast System Level Synthesis: Robust Model Predictive Control using Riccati Recursions”
> IFAC Conference on Nonlinear Model Predictive Control (NMPC), 58(18), 173-180, 2024.
The paper is available [online](https://www.sciencedirect.com/science/article/pii/S240589632401406X) and was recognized as a finalist for the [Young Author Award](https://nmpc2024.org/YoungAuthor.html).
## Prerequisites
- MATLAB (tested with version R2023b running on Macbook Pro with M1 processor with 8 cores and 16GB of RAM running macOS Sonoma)
- Casadi (tested with casadi-3.6.4-osx_arm64-matlab2018b )Only for performance comparison:
- Yalmip (tested with Version 22-June-2023)
- Mosek (tested with Version 10.3)
- Gurobi (tested with Version 10.0.3)## Installation
1. Download and install MATLAB from the [official website](https://www.mathworks.com/products/matlab.html).2. Install Casadi by following the instructions from the [official Casadi documentation](https://web.casadi.org/get/).
3. (optionnal) If you want to run the comparisons
- Install [Yalmip](https://yalmip.github.io/tutorial/installation/)
- Download MOSEK, (request a license), and add it to your matlab pathaddpath('C:/Users/Documents/mosek/10.3/toolbox/r2022b/mosekopt.mexmaca64'); % Adjust this path to your MOSEK installation
savepath; % Save the updated path for future MATLAB sessions- Downlaod Gurobi, (request a license), and add it to your matlab path
addpath('C:/Users/gurobi/macos_universal2/'); % Adjust this path to your Gurobi installation
savepath; % Save the updated path for future MATLAB sessions4. Clone this repository or download the code as a ZIP archive and extract it to a folder of your choice.
5. Add the code folder to your MATLAB path by running the following command in the MATLAB Command Window:
addpath('/path/to/your/code/folder');
## UsageRun the main script (i.e., main.m) to execute the algorithms and models discussed in the paper.
## License
This project is licensed under the MIT License.
## Citation
If you use this code in your research, please cite our paper:
```
@article{LEEMAN2024_fastSLS,
title = {Fast System Level Synthesis: Robust Model Predictive Control using {Riccati} Recursions},
journal = {IFAC-PapersOnLine (Conference on Nonlinear MPC)},
volume = {58},
number = {18},
pages = {173-180},
year = {2024},
issn = {2405-8963},
doi = {https://doi.org/10.1016/j.ifacol.2024.09.027},
author = {Antoine P. Leeman and Johannes K{\"o}hler and Florian Messerer and Amon Lahr and Moritz Diehl and Melanie N. Zeilinger},
keywords = {Optimization and Model Predictive Control, Robust Model Predictive Control, Real-Time Implementation of Model Predictive Control},
}
```
## Support and ContactFor any questions or issues related to this code, please contact the author:
- Antoine Leeman: aleeman(at)ethz(dot)ch
We appreciate any feedback, bug reports, or suggestions for improvements.