Column generation for multistage stochastic mixed-integer nonlinear programs with discrete state variables
This repository contains code for the case studies used in the paper Column generation for multistage stochastic mixed-integer nonlinear programs with discrete state variables (available here).
@misc{rathi2024column,
title={Column generation for multistage stochastic mixed-integer nonlinear programs with discrete state variables},
author={Tushar Rathi and Benjamin P. Riley and Angela Flores-Quiroz and Qi Zhang},
year={2024},
eprint={2406.05052},
archivePrefix={arXiv},
primaryClass={math.OC}
}
The following case studies are used in the paper:
- Multistage blending [
Blending/
] and - Mobile generator routing problem [
OPF/
]
Each case study is an independent project with its own Project.toml
files to manage dependencies.
Before running the case studies, ensure you have set up the environment by downloading dependencies in the respective environment. This can be done by using the Pkg.instantiate()
command.
We use Gurobi as the solver, which can be downloaded here.
Each case study contains eight cases. For the blending case study, each case is a different combination of time periods/scenarios and number of input/output tanks. For the power distribution case study, each case is a different combination of time periods/scenarios and number of gensets. Five instances are solved for each of the eight cases. So instances 1-5 correspond to case 1, instances 6-10 to case 2, ..., and instances 36-40 to case 8.
Different models, i.e. the fullspace, CG, and CGCS are assigned the following numbers: 1
, 2
, and 3
, respectively.
In any case study, to solve a specific instance x
using model type y
, follow these steps:
cd
to the folder for the respective case study.- From the terminal, run the following command:
julia runs/main.jl y x
For example, to solve instance 5 in the mobile generator routing case study using the CG method, run the following commands:
cd OPF/
julia runs/main.jl 2 5