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,
Yen-Chu Wu
-
Hi Yen-Chu,
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 piecewise-linear 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