-
Notifications
You must be signed in to change notification settings - Fork 193
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Presolver incorrectly reports infeasibility in awkwardly scaled problem #2084
Comments
The problem is found to be infeasible in |
Sparsification adds the first row to the second row with a multiplier of -23/47, thus creating the row singleton: (2242/47) * y = 10000000013254 - (23/47) * 10000000002226 = 5106382990888.0850 Singleton row reduction then deduces that y = 5106382990888.0850 / (2242/47) but due to floating-point roundoff we actually get y = 107047279469.99998 (and not the needed integer 107047279470). Thus, presolve (incorrectly) deduces that the problem is infeasible. I am wondering if rows with huge right-hand/left-hand sides should be skipped in |
I see the issue, thanks - I've just worked through this with VScode.
Working backwards, there will be round-off in computing So, for variable coefficient
so the latter case will not apply the sparsification according to the RHS value and variable coefficient |
Instance added as (failing) unit test in https://github.com/ERGO-Code/HiGHS/tree/fix-2084 |
Here's one that came up during today's Advent of Code puzzle.
Take the following ILP:
If solved with
--presolve off
, HiGHS finds the correct optimal solution. With--presolve on
it incorrectly reports infeasibility, although it does emit a warning suggesting to scale the bounds so they aren't quite as big. Doing so, however, is not sufficient: The presolver concludes that the one below is infeasible, even though it can be solved without the presolver.The text was updated successfully, but these errors were encountered: