This repository provides the code for applying ROBIST, a simple, yet effective, data-driven algorithm for optimization under parametric uncertainty. The methodology and numerical experiments are described in detail in an accompanying paper, available online here. The method was developed by Justin Starreveld, Guanyu Jin, Dick den Hertog and Roger Laeven.
The code is written in Python
, version 3.10.9. The dependency packages are listed in setup.cfg
. The ROBIST algorithm is implemented in Code/ROBIST.py
.
-
Toy Problem (abbreviated as tp). We compare ROBIST with the methods of Calafiore & Campi (2005) and Yanıkoglu & den Hertog (2013) in
Code/tp_experiments_cal2005_yan2013.py
. Furthermore we analyze the performance of ROBIST in more detail inCode/tp_analysis.py
. -
Portfolio Management Problem (abbreviated as pm). We compare ROBIST with the data-driven robust optimization approach proposed by Bertsimas et al. (2018) and the scenario optimization approach of Calafiore (2013) in
Code/pm_experiments.py
. -
Weighted Distribution Problem (abbreviated as wdp). We compare ROBIST with the scenario optimization methods of Calafiore & Campi (2005), Caré et al. (2014), Calafiore (2016) and Garatti et al. (2022) in
Code/wdp_experiments.py
. -
Two-Stage Lot-Sizing Problem (abbreviated as ls). We compare ROBIST with the method of Vayanos et al. (2012) in
Code/ls_experiments.py
.
For more information about these problems we refer to the preprint-paper.
We demonstrate ROBIST using an illustrative example in Section 2.2 of the paper.
Here we apply the algorithm to the following toy problem from Yanıkoglu & den Hertog (2013):
where
Suppose we have access to a data set of
First, we randomly split the data set into two equal-sized sets
We initialize the algorithm by optimizing for the expected/nominal scenario, i.e.,
We find that
We find that
Once the stopping criteria is reached, we use the "out-of-sample" test data
The script used to create the figures in this illustrative example is Code/tp_illustrative_plots.py
.
Our code is not flawless. In case you have any questions or suggestions, please reach us at [email protected].
Was our software useful to you? Great! You can cite us using:
@misc{ROBIST,
doi = {10.5281/zenodo.10143595},
year = {2023},
author = {Justin Starreveld, Guanyu Jin, Dick den Hertog and Roger JA Laeven},
title = {ROBIST: Robust Optimization by Iterative Scenario Sampling and Statistical Testing},
url = {https://github.com/JustinStarreveld/ROBIST}
}