Gurobi tolerances and the limitations of double-precision arithmetic
The default values for these primal and dual feasibility tolerances
are , and the default for the integrality
tolerance is
. If you choose the range for your
inequalities and variables correctly, you can typically ignore
tolerance issues entirely.
To give an example, if your constraint right-hand side is on the order
of , then relative numeric errors from computations
involving the constraint (if any) are likely to be less than
, i.e., less than one in a billion. This is
usually far more accurate than the accuracy of input data, or even of
what can be measured in practice.
However, if you define a variable
, then
relative numeric error may be as big as 50% of the variable range.
If, on the other hand, you have a variable
,
and you are using default primal feasibility tolerances; then what you
are really asking is for the relative numeric error (if any) to be
less than
.
However, this is beyond the limits of comparison for double-precision
numbers. This implies that you are not allowing any round-off error at
all when testing feasible solutions for this particular variable. And
although this might sound as a good idea, in fact, it is really bad,
as any round-off computation may result in your truly optimal solution
being rejected as infeasible.