ensemblecontrolsimulation

Supplementary code for the manuscript: Convergence rates for ensemble-based solutions to optimal control of uncertain dynamical systems

https://github.com/milzj/ensemblecontrolsimulation

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
Last synced: 6 months ago · JSON representation

Repository

Supplementary code for the manuscript: Convergence rates for ensemble-based solutions to optimal control of uncertain dynamical systems

Basic Info
Statistics
  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 1
Created over 1 year ago · Last pushed 9 months ago
Metadata Files
Readme License Citation

README.md

Supplementary code for the manuscript: Convergence rates for ensemble-based solutions to optimal control of uncertain dynamical systems

DOI

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

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

.github/workflows/build_docs.yml actions
  • actions/cache v4 composite
  • actions/checkout v4 composite
  • actions/setup-python v5 composite
  • actions/upload-artifact v4 composite
.github/workflows/deploy_docs.yml actions
  • 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
.github/workflows/docker-image.yml actions
  • 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
docker/Dockerfile docker
  • ubuntu 22.04 build
pyproject.toml pypi
  • 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 *
requirements-docs.txt pypi
  • 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
requirements.txt pypi
  • 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