What is the accuracy of the CLP solver (Coin-Or)?

622 views Asked by At

I am trying to compare LP solvers to see wheter I can use them for my problem. In ding so I need an accurate solver. What I could find are tolerances, though I am not sure whether this is a proper indicator.

For GUROBI the integrality tolerance is defined to be 10^-6 (as default value, see source) For CPLEX has a 10^-6 for primal/dual feasibility tolerance and 10^-5 for the integrality tolerance (as default value, see source)

What are the (default) tolerances of the CON-OR's CLP? And is this a good measure for accuracy?

1

There are 1 answers

0
Erwin Kalvelagen On

CLP is for continuous LP problems, so there is no integer feasibility tolerance. The MIP solver is called CBC. Type integerT?? at the CBC prompt and you see something like:

D:\Python\Python37\Scripts>cbc
Welcome to the CBC MILP Solver
Version: 2.9.0
Build Date: Feb 12 2015

CoinSolver takes input from arguments ( - switches to stdin)
Enter ? for list of commands or help
Coin:integerT??
integerT(olerance) : For an optimal solution no integer variable may be this away from an integer value
Beware of setting this smaller than the primal tolerance.
<Range of values is 1e-020 to 0.5;
        current 1e-006>
Coin:

This is with an old version so check it with your CBC.EXE.

Note that there are many tolerances in play: feasibility tolerances, optimality tolerances. Furthermore, scaling and presolving can have an effect. I usually leave all these tolerances as is. IMHO it is often better to fix the model rather than to tinker with these tolerances.

If you need extreme precision, there are so-called rational MIP solvers. They tend to be very slow however.