CDDLib.jl

Cdd wrapper module for Julia. cdd is a library for polyhedra manipulation such as double description and Fourier-Motzkin elimination
Popularity
35 Stars
Updated Last
11 Months Ago
Started In
January 2016

CDDLib

Build Status References to cite

CDDLib is a wrapper for cdd.

This package can either be used in a "lower level" using the API of cdd or using the higher level interface of Polyhedra.

Problem description

As written in the README of cddlib:

The C-library cddlib is a C implementation of the Double Description Method of Motzkin et al. for generating all vertices (i.e. extreme points) and extreme rays of a general convex polyhedron in R^d given by a system of linear inequalities:

P = { x=(x1, ..., xd)^T : b - A x >= 0 }

where A is a given m x d real matrix, b is a given m-vector and 0 is the m-vector of all zeros.

The program can be used for the reverse operation (i.e. convex hull computation). This means that one can move back and forth between an inequality representation and a generator (i.e. vertex and ray) representation of a polyhedron with cdd. Also, cdd can solve a linear programming problem, i.e. a problem of maximizing and minimizing a linear function over P.

Installation

```import Pkg

Building the package will download binaries of `cddlib` that are provided by cddlib_jll.jl.

Use with JuMP

Use `CDDLib.Optimizer{Float64}` to use CDDLib with JuMP:

```using JuMP, CDDLib
model = Model(CDDLib.Optimizer{Float64})```

Use with MathOptInterface

CDD can also solve problems using `Rational{BigInt}` arithmetic.

Use `CDDLib.Optimizer{Rational{BigInt}}` to use CDDLib with MathOptInterface:

```using MathOptInterface, CDDLib
model = CDDLib.Optimizer{Rational{BigInt}}()```

Debugging

CDD uses two global boolean to enable debugging outputs: `debug` and `log`. You can query the value of `debug` (resp. `log`) with `get_debug` (resp. `get_log`) and set its value with `set_debug` (resp. `set_log`).

Required Packages

View all packages