Clp.jl

Build Status codecov

Clp.jl is a wrapper for the COIN-OR Linear Programming solver.

The wrapper has two components:

Affiliation

This wrapper is maintained by the JuMP community and is not a COIN-OR project.

License

Clp.jl is licensed under the MIT License.

The underlying solver, coin-or/Clp, is licensed under the Eclipse public license.

Installation

Install Clp using Pkg.add:

import Pkg
Pkg.add("Clp")

In addition to installing the Clp.jl package, this will also download and install the Clp binaries. You do not need to install Clp separately.

To use a custom binary, read the Custom solver binaries section of the JuMP documentation.

Use with JuMP

To use Clp with JuMP, use Clp.Optimizer:

using JuMP, Clp
model = Model(Clp.Optimizer)
set_attribute(model, "LogLevel", 1)
set_attribute(model, "Algorithm", 4)

MathOptInterface API

The Clp optimizer supports the following constraints and attributes.

List of supported objective functions:

List of supported variable types:

List of supported constraint types:

List of supported model attributes:

Options

Options are, unfortunately, not well documented.

The following options are likely to be the most useful:

Parameter Example Explanation
PrimalTolerance 1e-7 Primal feasibility tolerance
DualTolerance 1e-7 Dual feasibility tolerance
DualObjectiveLimit 1e308 When using dual simplex (where the objective is monotonically changing), terminate when the objective exceeds this limit
MaximumIterations 2147483647 Terminate after performing this number of simplex iterations
MaximumSeconds -1.0 Terminate after this many seconds have passed. A negative value means no time limit
LogLevel 1 Set to 1, 2, 3, or 4 for increasing output. Set to 0 to disable output
PresolveType 0 Set to 1 to disable presolve
SolveType 5 Solution method: dual simplex (0), primal simplex (1), sprint (2), barrier with crossover (3), barrier without crossover (4), automatic (5)
InfeasibleReturn 0 Set to 1 to return as soon as the problem is found to be infeasible (by default, an infeasibility proof is computed as well)
Scaling 3 0 -off, 1 equilibrium, 2 geometric, 3 auto, 4 dynamic(later)
Perturbation 100 switch on perturbation (50), automatic (100), don't try perturbing (102)

C API

The C API can be accessed via Clp.Clp_XXX functions, where the names and arguments are identical to the C API.