Skip to content

Presolve appears to prevent feasible incumbents being reconstructed, leading to massive search tree growth #3216

Description

@Gbtank

Hi HiGHS Team,

I'm seeing a significant behavioural difference between solving a binary MIP with presolve enabled vs disabled.

I am running this through the C# HiGHS.Native 1.15.1 interface but have also tested the attached MPS file with a local HiGHS exe built from the main branch.

With presolve enabled:

  • HiGHS repeatedly reports:
WARNING: Solution with objective ... has untransformed violations:
bound = 0;
integrality = 0;
row = 1
  • No feasible incumbent is ever accepted.
  • BestSol remains inf.
  • The branch-and-bound tree grows rapidly (>100k nodes).
  • The solve eventually times out or is OOM-killed.

With presolve disabled:

  • No untransformed violation warnings occur.
  • Feasible incumbents are found immediately.
  • The model solves to optimality in ~14 seconds.
  • Only 32 nodes are explored.

Attached to this issue you will find

  • Problem-causing "model.mps" (uploaded as "model.txt")
  • Results expected with presolve on "solver-log-presolve-on.txt"
  • Results expected with presolve off "solver-log-pesolve-off.txt"

Side note, you will notice that our solver logs start by spamming:

"Rows:           1 upper bounds greater than or equal to        1e+20 are treated as +Infinity"

This is because we set NULLs to HiGHS infinite_bound option. Is this the right way of setting up an upper bound or should we be using Highs Infinity?

Many thanks,

Gbtank


solver-log-presolve-on.txt

model.txt

solver-log-presolve-off.txt

Activity

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

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions