Build Status codecov

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

The wrapper has two components:


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


Clp.jl is licensed under the MIT License.

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


Install Clp using Pkg.add:

import Pkg

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 are, unfortunately, not well documented.

The following options are likely to be the most useful:

PrimalTolerance1e-7Primal feasibility tolerance
DualTolerance1e-7Dual feasibility tolerance
DualObjectiveLimit1e308When using dual simplex (where the objective is monotonically changing), terminate when the objective exceeds this limit
MaximumIterations2147483647Terminate after performing this number of simplex iterations
MaximumSeconds-1.0Terminate after this many seconds have passed. A negative value means no time limit
LogLevel1Set to 1, 2, 3, or 4 for increasing output. Set to 0 to disable output
PresolveType0Set to 1 to disable presolve
SolveType5Solution method: dual simplex (0), primal simplex (1), sprint (2), barrier with crossover (3), barrier without crossover (4), automatic (5)
InfeasibleReturn0Set to 1 to return as soon as the problem is found to be infeasible (by default, an infeasibility proof is computed as well)
Scaling30 -off, 1 equilibrium, 2 geometric, 3 auto, 4 dynamic(later)
Perturbation100switch on perturbation (50), automatic (100), don't try perturbing (102)


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