Giter Site home page Giter Site logo

odow / cddlib.jl Goto Github PK

View Code? Open in Web Editor NEW

This project forked from juliapolyhedra/cddlib.jl

0.0 1.0 0.0 314 KB

cdd wrapper module for Julia. cdd is a library for polyhedra manipulation such as double description and Fourier-Motzkin elimination

License: Other

Julia 100.00%

cddlib.jl's Introduction

CDDLib

Build Status References to cite
Build Status DOI
Codecov branch

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
Pkg.add("CDDLib")

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).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.