CGL-Conic is library for generation of conic cuts for Mixed Integer Second Order Conic Optimization (MISOCO) problems. CGL-Conic can be considered as a generalization of COIN-OR's Cut Generation Library (CGL).
CGL-Conic depends on CGL and other COIN-OR projects. CGL-Conic implements the following cut procedures,
- Disjunctive Cuts given by Belotti et. al., see related paper
- Conic mixed-integer rounding cuts by Atamturk and Narayanan, see related paper
- Outer approximation cuts, related paper to be published soon.
- Interior Point Method (IPM) approximation cuts, related paper to be published soon.
Cut procedures that are considered for implementation.
- Two-term disjunctions on the second-order cone by Karzan and Yildiz, see [related paper][Karzan Yildiz 2015]
- Cuts for 0-1 mixed convex programming by Stubbs and Mehrotra, see related paper.
- Cuts for mixed 0-1 conic programming by Cezik and Iyengar, see related paper
CGL-Conic is used by DisCO to solve MISOCO problems.
CGL-Conic is tested/works in Linux environment only for now. You can use COIN-OR BuildTools fetch and build utility for building and installing CGL-Conic. After cloning CGL-Conic, typing following commands should work.
git clone --branch=stable/0.8 https://github.com/coin-or-tools/BuildTools bash BuildTools/get.dependencies.sh fetch bash BuildTools/get.dependencies.sh build
First command clones BuildTools, second fetches CGL-Conic dependencies and third builds/installs GGL-Conic.
CGL-Conic can find dependencies using
pkg-config. If your
are at your
PKG_CONFIG_PATH CGL-Conic configure script will find
make install should work once the configure script is
Specifying an IPM Solver
Some cut implementations in CGL-Conic depends on solving SOCO problems using IPM method. You can specify the solver to use for this purpose. CGL-Conic uses Ipopt by default. You can use Cplex1 or Mosek2 through their OsiConic interface.
To specify the solver, you need to give
--with-ipm-solver flag to
configure script. For example, following command configures OSI-Conic with
Similarly you can use
ipopt instead of
mosek. If no
IPM solver is specified CGL-Conic will use Ipopt.