Gurobi tolerances and the limitations of double-precision arithmetic

Gurobi tolerances and the limitations of double-precision arithmetic

The default values for these primal and dual feasibility tolerances are $10^{-6}$, and the default for the integrality tolerance is $10^{-5}$. 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 $10^3$, then relative numeric errors from computations involving the constraint (if any) are likely to be less than $10^{-9}$, 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 $x\in[-10^{-6},10^{-6}]$, then relative numeric error may be as big as 50% of the variable range.

If, on the other hand, you have a variable $x\in[-10^{10},10^{10}]$, 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 $10^{-16}$. 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.