This repository implements multiple piecewise affine policies in the context of adjustable robust optimization. It provides all relevant code to reproduce the numerical results presented in the paper.
Simon Thomä, Grit Walther, Maximilian Schiffer. (2024). Designing Tractable Piecewise Affine Policies for Multi-Stage Adjustable Robust Optimization. Mathematical Programming. https://doi.org/10.1007/s10107-023-02053-0
While most of the code is aimed to be applicable to general robust optimization problems, some of the solvers only implement the special cases needed for the numerical experiments yet. We are happy to collaborate on making this a more general-purpose library.
- C++20 or newer is required for compiling the project.
- The project has been tested on Gurobi 9.5. It may be compatible with other versions, with minor modifications to
CMakeLists.txt
. - Ensure the environment variable
GUROBI_HOME
is set to point to your Gurobi installation directory.
-
Clone the Repository
Clone the repository to your local machine using the following command:
git clone https://github.com/tumBAIS/piecewise-affine-ARO.git cd piecewise-affine-ARO
-
Set Up Gurobi Environment Variable
Set the
GUROBI_HOME
environment variable to point to your Gurobi installation directory. Replace/path/to/gurobi
with the actual path to your Gurobi installation:export GUROBI_HOME=/path/to/gurobi
-
Create a Build Directory It's a good practice to create a separate build directory:
mkdir build cd build
-
Configure the Project with CMake
Run CMake from the build directory to configure the project:
cmake ..
-
Compile the Project
Compile the project using the makefile generated by CMake:
make
The repository is structured in three parts:
models
contains a relatively general framework to model robust optimization and second-order cone problems.solver
implements all solvers compared in the numerical experiments of the paper.tests
implements the numeric test instances presented in the paper.
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
This project is licensed under the MIT License - see the LICENSE file for details.
For more information on the MIT License, please visit Open Source Initiative.
If you use this code in your work, please cite the accompanying paper:
Simon Thomä, Grit Walther, Maximilian Schiffer. (2024). Designing Tractable Piecewise Affine Policies for Multi-Stage Adjustable Robust Optimization. Mathematical Programming. https://doi.org/10.1007/s10107-023-02053-0
For any issues, questions, or collaboration offers, please reach out to the corresponding author of the accompanying paper.