Skip to content
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

Incorrectly detected infeasibility when using presolve #1958

Open
apfelix opened this issue Oct 4, 2024 · 3 comments
Open

Incorrectly detected infeasibility when using presolve #1958

apfelix opened this issue Oct 4, 2024 · 3 comments
Assignees

Comments

@apfelix
Copy link

apfelix commented Oct 4, 2024

Hi,

the following model is incorrectly declared to be infeasible. If I turn off pre-solve a feasible solution is found.
highs_model_for_debugging.mps.txt

Tested via highspy on versions 1.7.2 and branch latest.

PS: Sorry for the size of the problem. I didn't manage to reproduce it on a smaller instance. The model actually contains a lot of fixations via constraints of the form binary_var = 0 or binary_var = 1, which come from a specialised heuristic. Hence, presolve actually is quite important here and reduces the number of variables and constraint roughly by a factor of 6 or 7.

@fwesselm
Copy link
Contributor

fwesselm commented Oct 4, 2024

Couple of observations:

  1. I can reproduce this on Windows with the latest branch.
  2. When using presolve and setting mip_feasibility_tolerance to 1e-9, the problem is solved to optimality with optimal objective value 1.
  3. When presolve is off and default mip_feasibility_tolerance is used, the problem is solved with optimal objective value 1 as well.
  4. When presolve is off and mip_feasibility_tolerance is set to 1e-9, HiGHS reports an optimal objective value of 168 and the message:
    WARNING: MIP solver claims optimality, but with num/max/sum primal(113/4.85402e-08/7.14111e-07) infeasibilities

@apfelix
Copy link
Author

apfelix commented Oct 4, 2024

@fwesselm Thanks for the analysis. I didn't expect that lowering the mip_feasibility_tolerance tolerance would resolve both this issues as well as #1959 . It also fixed all the other (unreported) instances with these two problems in our internal tests. Huge thanks for that hint, this is a proper lifesaver :)

@jajhall
Copy link
Member

jajhall commented Oct 4, 2024

The only health warning is that 1e-9 is very small - 1e3 below the default - so there may be unintended consequences on other MIPs

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants