ensemblecontrolsimulation
Supplementary code for the manuscript: Convergence rates for ensemble-based solutions to optimal control of uncertain dynamical systems
Science Score: 49.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 3 DOI reference(s) in README -
✓Academic publication links
Links to: zenodo.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (12.6%) to scientific vocabulary
Repository
Supplementary code for the manuscript: Convergence rates for ensemble-based solutions to optimal control of uncertain dynamical systems
Basic Info
- Host: GitHub
- Owner: milzj
- License: mit
- Language: Python
- Default Branch: main
- Homepage: https://milzj.github.io/EnsembleControlSimulation/
- Size: 87 MB
Statistics
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
- Releases: 1
Metadata Files
README.md
Supplementary code for the manuscript: Convergence rates for ensemble-based solutions to optimal control of uncertain dynamical systems
This repository contains supplementary code for the manuscript
Olena Melnikov and Johannes Milz, 2024, Convergence rates for ensemble-based solutions to optimal control of uncertain dynamical systems, https://doi.org/10.48550/arXiv.2407.18182
Abstract
We consider optimal control problems involving nonlinear ordinary differential equations with uncertain inputs. By employing the sample average approximation, we obtain optimal control problems with ensembles of deterministic dynamical systems. Leveraging techniques for metric entropy bounds, we derive non-asymptotic Monte Carlo-type convergence rates for the ensemble-based solutions. Our theoretical framework is validated through numerical simulations on an academic optimal control problem and a vaccination scheduling problem for epidemic control under model parameter uncertainty.
Using Docker
We provide a pre-build Docker image which can be used to run the code in this repository. First thing you need to do is to ensure that you have docker installed.
To start an interactive docker container you can execute the following command
bash
docker run --rm -it ghcr.io/milzj/ensembecontrolsimulation:latest
Alternatively, you can build a docker image locally and subsequently run it:
bash
cd docker
docker build -t ensemblecontrolsimulation .
docker run -it ensemblecontrolsimulation
Using without Docker
We recommend to create a virtual environment. After activating the venc, you can install the required packages via
bash
pip install -r requirements.txt
Running simulation
To run the simulations, execute
bash
cd code
./simulate_problems.sh
Postprocessing
To reproduce the figure for the nominal solution of the harmonic oscillator, run
bash
cd code
plot_nominal_control.py
Notes
- The simulations included in the paper have been generated using Phython 3.10.14.
- Simulations were performed on a laptop equipped with a 12th Gen 440 Intel(R) Core(TM) i7-1260P processor and 16 GB of RAM.
- The simulation output included in the manuscript is located at code/output/06-Jul-2024-14-14-20
- We performed a replication study. The output is located in code/output/26-May-2025-12-13-44. The controls and convergence rates match those included in the paper.
Having issues
If you have any troubles please file an issue in the GitHub repository.
License
See LICENSE.
Owner
- Name: Johannes Milz
- Login: milzj
- Kind: user
- Location: Atlanta
- Company: H. Milton Stewart School of Industrial and Systems Engineering, Georgia Institute of Technology
- Website: https://www.isye.gatech.edu/users/johannes-milz
- Repositories: 19
- Profile: https://github.com/milzj
GitHub Events
Total
- Delete event: 1
- Push event: 12
- Pull request review event: 2
- Pull request review comment event: 1
- Pull request event: 1
- Create event: 1
Last Year
- Delete event: 1
- Push event: 12
- Pull request review event: 2
- Pull request review comment event: 1
- Pull request event: 1
- Create event: 1
Dependencies
- actions/cache v4 composite
- actions/checkout v4 composite
- actions/setup-python v5 composite
- actions/upload-artifact v4 composite
- actions/checkout v4 composite
- actions/configure-pages v3 composite
- actions/deploy-pages v2 composite
- actions/download-artifact v4 composite
- actions/upload-pages-artifact v2 composite
- actions/checkout v4 composite
- docker/build-push-action v5 composite
- docker/login-action v3 composite
- docker/metadata-action v5 composite
- docker/setup-buildx-action v3 composite
- docker/setup-qemu-action v3 composite
- ubuntu 22.04 build
- casadi *
- ensemblecontrol @https://zenodo.org/records/12174247/files/milzj/EnsembleControl-v.0.0.2.zip?download=1
- matplotlib *
- numpy >=1.25
- pandas [output-formatting]
- scipy *
- accessible-pygments ==0.0.4
- alabaster ==0.7.13
- ap-features ==2023.7.4
- appnope ==0.1.3
- asttokens ==2.4.1
- attrs ==23.1.0
- babel ==2.13.1
- beautifulsoup4 ==4.12.2
- certifi ==2023.7.22
- charset-normalizer ==3.3.2
- click ==8.1.7
- comm ==0.1.4
- contourpy ==1.2.0
- cycler ==0.12.1
- debugpy ==1.8.0
- decorator ==5.1.1
- docutils ==0.18.1
- executing ==2.0.1
- fastjsonschema ==2.18.1
- fonttools ==4.44.0
- idna ==3.4
- imagesize ==1.4.1
- importlib-metadata ==6.8.0
- ipykernel ==6.26.0
- ipython ==8.17.2
- jedi ==0.19.1
- jinja2 ==3.1.2
- jsonschema ==4.19.2
- jsonschema-specifications ==2023.7.1
- jupyter-book ==0.15.1
- jupyter-cache ==0.6.1
- jupyter-client ==8.5.0
- jupyter-core ==5.5.0
- jupytext ==1.15.2
- kiwisolver ==1.4.5
- latexcodec ==2.0.1
- linkify-it-py ==2.0.2
- llvmlite ==0.40.1
- markdown-it-py ==2.2.0
- markupsafe ==2.1.3
- matplotlib ==3.8.1
- matplotlib-inline ==0.1.6
- mdit-py-plugins ==0.3.5
- mdurl ==0.1.2
- myst-nb ==0.17.2
- myst-parser ==0.18.1
- nbclient ==0.7.4
- nbformat ==5.9.2
- nest-asyncio ==1.5.8
- numba ==0.57.1
- numpy ==1.24.4
- packaging ==23.2
- pandas ==2.1.2
- parso ==0.8.3
- pexpect ==4.8.0
- pillow ==10.1.0
- platformdirs ==3.11.0
- prompt-toolkit ==3.0.39
- psutil ==5.9.6
- ptyprocess ==0.7.0
- pure-eval ==0.2.2
- pybtex ==0.24.0
- pybtex-docutils ==1.0.3
- pydata-sphinx-theme ==0.14.3
- pygments ==2.16.1
- pyparsing ==3.1.1
- python-dateutil ==2.8.2
- pytz ==2023.3.post1
- pyyaml ==6.0.1
- pyzmq ==25.1.1
- referencing ==0.30.2
- requests ==2.31.0
- rpds-py ==0.12.0
- scipy ==1.11.3
- six ==1.16.0
- snowballstemmer ==2.2.0
- soupsieve ==2.5
- sphinx ==5.0.2
- sphinx-book-theme ==1.0.1
- sphinx-comments ==0.0.3
- sphinx-copybutton ==0.5.2
- sphinx-design ==0.3.0
- sphinx-external-toc ==0.3.1
- sphinx-jupyterbook-latex ==0.5.2
- sphinx-multitoc-numbering ==0.1.3
- sphinx-thebe ==0.2.1
- sphinx-togglebutton ==0.3.2
- sphinxcontrib-applehelp ==1.0.7
- sphinxcontrib-bibtex ==2.5.0
- sphinxcontrib-devhelp ==1.0.5
- sphinxcontrib-htmlhelp ==2.0.4
- sphinxcontrib-jsmath ==1.0.1
- sphinxcontrib-qthelp ==1.0.6
- sphinxcontrib-serializinghtml ==1.1.9
- sqlalchemy ==2.0.23
- stack-data ==0.6.3
- tabulate ==0.9.0
- toml ==0.10.2
- tornado ==6.3.3
- tqdm ==4.66.1
- traitlets ==5.13.0
- typing-extensions ==4.8.0
- tzdata ==2023.3
- uc-micro-py ==1.0.2
- urllib3 ==2.0.7
- wcwidth ==0.2.9
- wheel ==0.41.3
- zipp ==3.17.0
- casadi ==3.6.5
- contourpy ==1.2.1
- cycler ==0.12.1
- fonttools ==4.53.0
- jinja2 ==3.1.4
- kiwisolver ==1.4.5
- markupsafe ==2.1.5
- matplotlib ==3.9.0
- numpy ==2.0.0
- packaging ==24.1
- pandas ==2.2.2
- pillow ==10.3.0
- pyparsing ==3.1.2
- python-dateutil ==2.9.0.post0
- pytz ==2024.1
- scipy ==1.13.1
- six ==1.16.0
- tabulate ==0.9.0
- tzdata ==2024.1