This repository provides code for applying Robustness Analysis (RA). RA is used to analyze the performance of a particular solution under variation in the uncertain parameters of an optimization problem. This can be done in a static manner, or a multistage adaptive manner, which allows some of the decisions to adapt to realizations of the uncertainty. This differs from Sensitivity Analysis (SA), which analyzes how the optimal solution changes under variation in the uncertain parameters. The methodology and problem are described in detail in an accompanying paper, available online here.
The code is written in Python
, version 3.10.9. The dependency packages are listed in requirements.txt
. The algorithms are implemented in analysis.py
and the application to the toy problem is done in main_illustrative_toy_problem.py
.
We highlight the difference between SA, RA for static optimization and RA for adaptive optimization using the illustrative example as described in Section 2.2 of the paper.
We assume to have access to a randomly generated data set of
Results from applying sensitivity analysis:
Results from applying robustness analysis in a static setting:
Results from applying robustness analysis in a 3-stage adaptive setting:
The script used to create the figures in this illustrative example is main_illustrative_toy_problem.py
.
The code is not flawless. In case you have any questions or suggestions, please reach out at j.s.starreveld@uva.nl.
Was our software useful to you? Great! You can cite us using:
@misc{RA_adaptive,
doi = {10.5281/zenodo.11448965},
year = {2024},
author = {Justin Starreveld, Gregor Brandt, Jaron Davelaar, Dick den Hertog, Zofia Lukszo and Nort Thijssen},
title = {Robustness Analysis for Adaptive Optimization},
url = {https://github.com/JustinStarreveld/multistage-robustness-analysis}
}