Why there are some numerical issues after turning off the presolve?
AnsweredDear support team,
I was testing a simple model.
When I solved the problem without setting any parameters, the result showed that vratio = 0.1 and logv = 2.30259 = ln(0.1), which satisfied the two constraints.
However, when I turned off the presolve and run the same model again, I got the warning stating that max constraint violation exceeds tolerance. For the resulting decision variables, vratio = 0.1, but logv = 23.0226, which was not ln(0.1) but ln(1) instead.
I am wondering why I got a different result which was not correct when I turned off the presolve. Thank you very much in advance.
Best regards,
YenChu Wu

Hi YenChu,
Presolving is necessary for Gurobi to determine the domain of the variables. You don't explicitly specify the bounds of variable \(\texttt{vratio}\), so Gurobi does not know how to distribute the supporting points for the piecewiselinear approximation to \(\log\). The approximation in the area around 0.1 is then too inaccurate. You can reduce the final error by setting an upper bound for \(\texttt{vratio}\), e.g., \(\texttt{vratio} \leq 10\).
With enabled presolving, Gurobi immediately detects that this problem is trivial and solves it directly in presolving.
Cheers,
Matthias0
Please sign in to leave a comment.
Comments
1 comment