Compiling

Dependencies

ZERO requires a few external libraries to work. Most of these are managed via Conda package manager. A mandatory requirement to use the software as-it-is is CMake, which will manage the integration with Conan by itself.

The required packages for ZERO are:

  • CMake (Version 3.14 or later)

  • Conda (A somehow recent version)

  • Gurobi (Version 9.2 or later) as a MIP solver.

  • PATH (Version 5.0 or later) as an LCP solver. You can get a license here.

The following packages will be installed by Conda

  • Armadillo (Version 9.8 or later) for the linear algebra.

  • Boost (Version 1.72 or later) required for the shell interfaces and the unit tests.

  • RapidJSON (Version 1.1.0 or later) suggested but not mandatory for easy management of JSON output files.

  • CoinOR Cgl, Osi, and Utils (Builds >= Jan 2021) for cut generation, solver interfaces and utilities.

Recommended but not mandatory for the documentation

  • DOxygen (Version 1.8 or later) to generate the C++ documentation

  • Sphinx (Version 1.8 or later) to render the HTML into a ReadTheDocs template

  • Exhale (Version 0.2.3 or later) and Breathe (Version 4.10 or later) to integrate Doxygen, Sphinx and the ReadTheDocs template

Downloading and Compiling

First, clone the repository of ZERO from GitHub with:

git clone https://github.com/ds4dm/ZERO

To build the targets with CMake, then:

cd ZERO/
cmake .. && make

If the required packages are installed, Conda and CMake will correctly perform the installation by fetching the remaining components.

  • You can supply an extra hint for the Gurobi PATH with the CMake argument -DZERO_GUROBIHINT:STRING=/gurobi_path/distribution

  • You can disable external dependencies install through conda with the CMake argument -DZERO_INSTALL_DEPS=OFF