Clp.jl
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
Affiliation
This wrapper is maintained by the JuMP community and is not a COIN-OR project.
Getting help
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.
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:
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
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.