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
-
Official comment
This post is more than three years old. Some information may not be up to date. For current information, please check the Gurobi Documentation or Knowledge Base. If you need more help, please create a new post in the community forum. Or why not try our AI Gurobot?. -
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
Post is closed for comments.
Comments
2 comments