This repository contains the code and data used for the paper Lefebvre, H., Schmidt, M., and Thürauf, J. (2023) "Using Column Generation in Column-and-Constraint Generation for Adjustable Robust Optimization".
If you are using this repository for your research, please cite our preprint.
@misc{Lefebvre2023,
title={Using Column Generation in Column-and-Constraint Generation for Adjustable Robust Optimization},
author={Henri Lefebvre and Martin Schmidt and Johannes Thürauf},
year={2023},
url = {https://optimization-online.org/?p=24462}
}
Compiling requires the following dependencies*:
- CMake version 3.22.1.
- GCC version 11.4.0 (for
__has_include
preprocessor). - Gurobi version 10.0.1.
- idol version 0.3.5-alpha. Idol will be downloaded automatically, you do not need to install it.
Running requires the following dependencies*:
- Gurobi version 10.0.1.
- idol version 0.3.5-alpha. Idol will be downloaded automatically, you do not need to install it.
* reported versions are not minimal required versions but are ones which have been tested.
(Recommended) First, be sure to have your GUROBI_HOME
environment variable configured according to the official Gurobi guidelines.
(Alternatively) You may use the GUROBI_DIR
CMake variable, please refer to the idol documentation page.
By running the following command, CMake will generate an appropriate Makefile. Additionally, it will download the idol library. Thus, an internet connection is required for this step.
mkdir build
cd build
cmake ..
From the build directory, run the following.
make
Running our code is done as follows:
./build/FLP/FLP_solve <PATH_TO_INSTANCE> <STD_PHASE_TIME_LIMIT> <GAMMA> <USE_HEURISTIC>
./build/JSP/JSP_solve <PATH_TO_INSTANCE> <STD_PHASE_TIME_LIMIT> <GAMMA> <USE_HEURISTIC>
Arguments are as follows:
-
PATH_TO_INSTANCE
: the absolute path to an instance file. -
STD_PHASE_TIME_LIMIT
: the time limit for the first phase of the algorithm (i.e., the time limit after which we switch to the column generation approach). -
GAMMA
: the uncertainty budget$\Gamma$ . -
USE_HEURISRIC
:true
if the "integer master" heuristic should be used,false
otherwise.