Fix lower bound calculation during ramp-up phase in parallel B&B #625
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.
Description
Fixed the lower bound calculation during the ramp-up phase in parallel Branch and Bound. Previously, cuOpt was using the root objective as the global lower bound when the heap was empty, which is a pessimistic estimation that doesn't reflect the actual lower bounds calculated by active threads during ramp-up.
Changes Made:
heap_.size() > 0 ? heap_.top()->lower_bound : search_tree.root.lower_boundtoget_lower_bound()root_objective_toget_lower_bound()in ramp-up loggingWhy This Fix Works:
The
get_lower_bound()function properly considers all sources of lower bound information:lower_bound_ceiling_(updated during ramp-up when threads encounter numerical issues)local_lower_bounds_from active threads (updated as threads solve nodes during ramp-up)This ensures the lower bound accurately reflects the work done by active threads during ramp-up, not just the pessimistic root objective.
Example Impact:
During ramp-up, if threads have solved nodes with lower bounds better than the root objective, the global lower bound will now reflect these improved bounds instead of falling back to the root objective.
Issue #445
Checklist
I am familiar with the Contributing Guidelines.
Testing
Documentation