This code can be used to reproduce all results in the paper titled "Adaptive Partitioning for Chance-Constrained Problems with Finite Support by Marius Roland, Alexandre Forel, and Thibaut Vidal.
Paper available here | Short video presentation
The project requires the Gurobi solver to be installed with an authorized license. Free academic licenses can be obtained at: https://www.gurobi.com/academia/academic-program-and-licenses/ .
The packages required are listed in the file requirements.txt. Run the following commands from the project root to install the requirements. You may have to install python and venv before.
virtualenv -p python3.10 env
source env/bin/activate
pip install -r requirements.txt
python -m pip install -i https://pypi.gurobi.com gurobipy
python setup_violations.py build_ext --inplaceThe installation can be checked by running the test suite:
python -m pytestThe main scripts that run experiments and process the results are in the root folder. The folders have the following contents:
data: deterministic instances of multi-dimensional knapsack problems, run the bash scriptgenerate-all-instances.shto generate chance-constrained instances,src: all methods and classes needed to generate and analyze the experimental results,tests: a set of unit and integration tests.
All experiments are run using the main.py script and providing the relevant arguments. This can be done using a bash script. For instance, the script run_all_experiments.sh can be used to run all experiments presented in the paper. Run the script export_results to read the experiment results and generate the csv files used to create the tables and figures.