Apply implications when performing a bound change#2671
Merged
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. 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. 🚀 New features to boost your workflow:
|
fwesselm
approved these changes
Dec 3, 2025
fwesselm
left a comment
Collaborator
There was a problem hiding this comment.
Thanks @Opt-Mucca! I only have two very minor comments regarding potential utility methods for some things.
Collaborator
Author
|
Experiments found this be have a 2.2% performance improvement over all instances. Merging now. |
Collaborator
|
Nice! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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)