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.VariableIndexinMOI.EqualTo{Float64}MOI.VariableIndexinMOI.GreaterThan{Float64}MOI.VariableIndexinMOI.Interval{Float64}MOI.VariableIndexinMOI.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.
