Skip to content

Apply implications when performing a bound change#2671

Merged
Opt-Mucca merged 3 commits into
latestfrom
instantly-apply-implics
Dec 4, 2025
Merged

Apply implications when performing a bound change#2671
Opt-Mucca merged 3 commits into
latestfrom
instantly-apply-implics

Conversation

@Opt-Mucca

@Opt-Mucca Opt-Mucca commented Nov 28, 2025

Copy link
Copy Markdown
Collaborator

We gather implications, e.g., x = 1 -> y <= 0, during the solve process (mainly from probing). We never actually apply them when making the original bound change later though. They should all be globally valid, so this change shouldn't need any conditional checks to be correct (It did result in me finding the issue #2664)
The positives and negatives of this change:
(+1) Can apply bound changes that can no longer be found from propagation, e.g., some cut is no longer propagated.
(+2) Can propagate more in a single round because more changes have been made
vs
(-1) The reason for the bound change will now default to the clique table and lose the original reason. This might cause some performance loss for conflicts.
(-2) Is propagating more going to be performance positive?

There's also a nice bit of text in the PR explaining why not all bound changes are applied. This should be tested w.r.t. performance before being merged (or not merged)

@Opt-Mucca Opt-Mucca requested a review from fwesselm November 28, 2025 12:58
@codecov

codecov Bot commented Nov 28, 2025

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 81.27%. Comparing base (e4632db) to head (66a5be3).
⚠️ Report is 74 commits behind head on latest.

Additional details and impacted files
@@            Coverage Diff             @@
##           latest    #2671      +/-   ##
==========================================
+ Coverage   81.20%   81.27%   +0.06%     
==========================================
  Files         349      349              
  Lines       85465    85805     +340     
==========================================
+ Hits        69406    69735     +329     
- Misses      16059    16070      +11     

☔ View full report in Codecov by Sentry.
📢 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.

Thanks @Opt-Mucca! I only have two very minor comments regarding potential utility methods for some things.

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

Copy link
Copy Markdown
Collaborator Author

Experiments found this be have a 2.2% performance improvement over all instances. Merging now.

@Opt-Mucca Opt-Mucca merged commit a7033a1 into latest Dec 4, 2025
399 of 400 checks passed
@BenChampion

Copy link
Copy Markdown
Collaborator

Nice!

@Opt-Mucca Opt-Mucca deleted the instantly-apply-implics branch December 15, 2025 11:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants