Clp.jl is a wrapper for the COIN-OR Linear Programming solver.
The wrapper has two components:
- a thin wrapper around the complete C API
- an interface to MathOptInterface
This wrapper is maintained by the JuMP community and is not a COIN-OR project.
If you need help, please ask a question on the JuMP community forum.
If you have a reproducible example of a bug, please open a GitHub issue.
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
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.
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)
The Clp optimizer supports the following constraints and attributes.
List of supported objective functions:
List of supported variable types:
List of supported constraint types:
MOI.ScalarAffineFunction{Float64}
inMOI.EqualTo{Float64}
MOI.ScalarAffineFunction{Float64}
inMOI.GreaterThan{Float64}
MOI.ScalarAffineFunction{Float64}
inMOI.Interval{Float64}
MOI.ScalarAffineFunction{Float64}
inMOI.LessThan{Float64}
MOI.VariableIndex
inMOI.EqualTo{Float64}
MOI.VariableIndex
inMOI.GreaterThan{Float64}
MOI.VariableIndex
inMOI.Interval{Float64}
MOI.VariableIndex
inMOI.LessThan{Float64}
List of supported model attributes:
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 ) |
The C API can be accessed via Clp.Clp_XXX
functions, where the names and
arguments are identical to the C API.