Skip to content

Keep implications between restarts - #3209

Merged
Opt-Mucca merged 9 commits into
latestfrom
keep-implications-between-restarts
Aug 25, 2026
Merged

Keep implications between restarts#3209
Opt-Mucca merged 9 commits into
latestfrom
keep-implications-between-restarts

Conversation

@Opt-Mucca

Copy link
Copy Markdown
Collaborator

This PR changes the data structure holding implication information to a HighsHashTree (similar to vbs). It now transfers implication information between restarts, shrink-problem calls, and sub-mips. This has been a long-standing TODO in the code, but with low priority because it's not going to be too performance changing.

Pros:

  • We now save implications from a cut or conflict that were not copied over between restarts. We also save implications from columns that may not have been re-probed on.
  • Implications are now valid throughout the entire presolve code and can be used in more complicated reductions down the line.
  • Can now add implications from multiple places without corrupting the data structure

Cons:

  • There's some overhead to all the new data structures (probably minor, but still).

Testing locally I'm getting a 0.5% slowdown but solving two more instances. I'd say this is mostly noise and I'd wait for @fwesselm to try it on a larger test set.

@Opt-Mucca
Opt-Mucca requested a review from fwesselm August 10, 2026 09:01
@codecov

codecov Bot commented Aug 10, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 73.20%. Comparing base (1945ea8) to head (76e6732).
⚠️ Report is 19 commits behind head on latest.

Additional details and impacted files
@@            Coverage Diff             @@
##           latest    #3209      +/-   ##
==========================================
+ Coverage   73.17%   73.20%   +0.02%     
==========================================
  Files         445      445              
  Lines      107802   107876      +74     
  Branches    17258    17282      +24     
==========================================
+ Hits        78887    78970      +83     
+ Misses      28639    28630       -9     
  Partials      276      276              

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@fwesselm fwesselm left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good @Opt-Mucca!

Comment thread highs/mip/HighsImplications.cpp Outdated
Comment thread highs/mip/HighsImplications.cpp
@Opt-Mucca

Copy link
Copy Markdown
Collaborator Author

This change has come out as performance neutral (0.01% performance improving), but is mostly there to enable future presolve rules to use any implication information. Therefore it should be merged.

@Opt-Mucca
Opt-Mucca merged commit f7b87ae into latest Aug 25, 2026
536 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants