Project: The Continuous-Time Service Network Design Project
The code is a reproduction of the algorithms givin in:
The Continuous-Time Service Network Design Problem by Natashia Boland, Mike Hewitt, Luke Marshall, Martin Savelsbergh Operations Research 65(5):1303-1321. https://doi.org/10.1287/opre.2017.1624
Overview
Requirements
The ctsndp project has both a Python and C++ implementation. For the C++ implementation, it is assumed that the target system has a C++ compiler that supports at least the C++19 standard. The project also using the CMake meta-build system to generate the build files. As such, many build systems are supported: makefiles, ninja, Xcode, Visual Studio, etc.
CMake can be installed using your package manager or by visiting https://cmake.org
Cloning this project
The ctsndp C++ implementation uses git submodules. As such, to clone this project to your local machine, use the follow command:
git clone --recursive https://gitlab.engr.illinois.edu/CIRI/ctsndp.git
In general, updating the submodules will be not be needed, but if you wish to update them, use the following command:
git submodule update --recursive
If you didn't use the --recursive option when first cloning the project, use the following commands to pull the submodules:
git submodule init
git submodule update --recursive
Directory Structure
A typical top-level directory layout
.
├── data # Various data files for testing
├── docs # Documentation and artwork files
├── cpp # Source files for the C++ code
├── python # Python source files
├── third_party # All third party C++ libraries
└── README.md
Documentation
Third-party Contributions
The follow support libraries are hosted on GitHub:
- The command line parser library comes from the catchorg/Clara project
- The json parser library comes from the nlohmann/json project
Dependencies
This project depends on the GUROBI optimization library. You can download the optimizer here: https://www.gurobi.com/downloads/download-center. You will need to request an Academic license.