Interface to the Coin-OR Linear Programming solver (CLP)
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
src fix on 0.6 and drop 0.4 Dec 10, 2016
test Use separate mathprog.jl file for tests Jan 1, 2017
.travis.yml fix on 0.6 and drop 0.4 Dec 10, 2016 Update License Jan 24, 2013 update badge Dec 10, 2016
REQUIRE fix on 0.6 and drop 0.4 Dec 10, 2016


Interface to the Clp linear programming solver. Provides a complete interface to the low-level C API, as well as an implementation of the solver-independent MathProgSolverInterface for efficiently solving sequences of linear programs. The Cbc julia package is used to provide the binary dependencies; see that package's README for supported platforms and installation instructions.

Build Status


Using with MathProgBase

Clp provides a solver object that can be passed to linprog in MathProgBase (and used to create instances of the solver-independent AbstractMathProgModel type):

using Clp
using MathProgBase
linprog(..., ClpSolver(Option1=value1,Option2=value2,...))

see the MathProgBase documentation for further information.

Options are solver-dependent. The following options are the most useful (and well documented):

  • PrimalTolerance - primal feasibility tolerance (default 1e-7)
  • DualTolerance - dual feasibility tolerance (default 1e-7)
  • DualObjectiveLimit - when using dual simplex (where the objective is monotonically changing), terminate when the objective exceeds this limit
  • MaximumIterations - terminate after performing this number of simplex iterations
  • MaximumSeconds - terminate after this many seconds have passed
  • LogLevel - set to 1, 2, 3, or 4 for increasing output (default 0)
  • PresolveType - set to 1 to disable presolve
  • SolveType - choose the solution method:

    • 0 - dual simplex
    • 1 - primal simplex
    • 3 - barrier with crossover to optimal basis
    • 4 - barrier without crossover to optimal basis
    • 5 - automatic
  • InfeasibleReturn - set to 1 to return as soon as the problem is found to be infeasible (by default, an infeasibility proof is computed as well)

Using the C interface

The low-level C interface is available in the ClpCInterface submodule:

using Clp.ClpCInterface

Using this interface is only recommended for advanced users. The Julia API is essentially a thin wrapper around the interface exported by Clp/src/Clp_C_Interface.h, which is documented in-line.