Skip to content

Demonstration of robustness analysis for (multistage) adaptive optimization

License

Notifications You must be signed in to change notification settings

JustinStarreveld/multistage-robustness-analysis

Repository files navigation

Robustness Analysis for Adaptive Optimization

License: MIT DOI

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.

Code

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.

Illustrative Example

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 $N=1000$ realizations of $(c_{A,1}, c_{A,2})$ and use this scenario data to analyze the performance of our nominal solution in a 3-stage setting. Then, using the same set of scenarios, we highlight the difference between SA, RA in a static setting and RA in an adaptive setting, by comparing the results from applying these three methods. The objective value is analyzed and the results are shown in the following figures.

Results from applying sensitivity analysis:

Sensitivity Analysis

Results from applying robustness analysis in a static setting:

Robustness Analysis (static)

Results from applying robustness analysis in a 3-stage adaptive setting:

Robustness Analysis (adaptive)

The script used to create the figures in this illustrative example is main_illustrative_toy_problem.py.

Contact Information

The code is not flawless. In case you have any questions or suggestions, please reach out at j.s.starreveld@uva.nl.

Citation

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}
}

About

Demonstration of robustness analysis for (multistage) adaptive optimization

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages