Skip to content

Fix occasional incorrect solution bound on maximization problems#76

Closed
aliceb-nv wants to merge 3 commits intobranch-25.08from
solution-bound-fix
Closed

Fix occasional incorrect solution bound on maximization problems#76
aliceb-nv wants to merge 3 commits intobranch-25.08from
solution-bound-fix

Conversation

@aliceb-nv
Copy link
Copy Markdown
Contributor

During the PDLP LP relaxation phase, the solution bound was incorrectly converted to a user objective value twice, yielding an incorrect sign on maximizations problems. This only occurs before B&B updates the bound further, which explains why this bug only occurs in specific scenarios (short runs, large problems).

This also fixes optimality not being reported on simple maximizations problems.

@aliceb-nv aliceb-nv requested a review from a team as a code owner June 6, 2025 10:08
@aliceb-nv aliceb-nv requested review from chris-maes and kaatish June 6, 2025 10:08
@aliceb-nv aliceb-nv added bug Something isn't working non-breaking Introduces a non-breaking change labels Jun 6, 2025
@aliceb-nv aliceb-nv requested a review from a team as a code owner June 6, 2025 12:05
@aliceb-nv aliceb-nv requested a review from tmckayus June 6, 2025 12:05
@rgsl888prabhu rgsl888prabhu changed the base branch from branch-25.08 to branch-25.05 June 9, 2025 16:14
@rgsl888prabhu rgsl888prabhu requested a review from a team as a code owner June 9, 2025 16:14
@rgsl888prabhu rgsl888prabhu changed the base branch from branch-25.05 to branch-25.08 June 9, 2025 16:15
@rgsl888prabhu rgsl888prabhu changed the base branch from branch-25.08 to branch-25.05 June 9, 2025 16:17
@rgsl888prabhu rgsl888prabhu changed the base branch from branch-25.05 to branch-25.08 June 9, 2025 16:17
rgsl888prabhu added a commit that referenced this pull request Jun 9, 2025
<!--

Thank you for contributing to cuOpt :)

Here are some guidelines to help the review process go smoothly.

1. Please write a description in this text box of the changes that are
being
   made.

2. Please ensure that you have written units tests for the changes
made/features
   added.

3. If you are closing an issue please use one of the automatic closing
words as
noted here:
https://help.github.com/articles/closing-issues-using-keywords/

4. If your pull request is not ready for review but you want to make use
of the
continuous integration testing facilities please label it with `[WIP]`.

5. If your pull request is ready to be reviewed without requiring
additional
work on top of it, then remove the `[WIP]` label (if present) and
replace
it with `[REVIEW]`. If assistance is required to complete the
functionality,
for example when the C/C++ code of a feature is complete but Python
bindings
are still required, then add the label `[HELP-REQ]` so that others can
triage
and assist. The additional changes then can be implemented on top of the
same PR. If the assistance is done by members of the rapidsAI team, then
no
additional actions are required by the creator of the original PR for
this,
otherwise the original author of the PR needs to give permission to the
person(s) assisting to commit to their personal fork of the project. If
that
doesn't happen then a new PR based on the code of the original PR can be
opened by the person assisting, which then will be the PR that will be
   merged.

6. Once all work has been done and review has taken place please do not
add
features or make changes out of the scope of those requested by the
reviewer
(doing this just add delays as already reviewed code ends up having to
be
re-reviewed/it is hard to tell what is new etc!). Further, please do not
rebase your branch on main/force push/rewrite history, doing any of
these
   causes the context of any comments made by reviewers to be lost. If
   conflicts occur against main they should be resolved by merging main
   into the branch used for making the pull request.

Many thanks in advance for your cooperation!

-->
During the PDLP LP relaxation phase, the solution bound was incorrectly
converted to a user objective value twice, yielding an incorrect sign on
maximizations problems. This only occurs before B&B updates the bound
further, which explains why this bug only occurs in specific scenarios
(short runs, large problems).

This also fixes optimality not being reported on simple maximizations
problems.

closes #76
@rgsl888prabhu rgsl888prabhu deleted the solution-bound-fix branch October 15, 2025 15:03
jieyibi pushed a commit to yining043/cuopt that referenced this pull request Mar 26, 2026
…DIA#83)

<!--

Thank you for contributing to cuOpt :)

Here are some guidelines to help the review process go smoothly.

1. Please write a description in this text box of the changes that are
being
   made.

2. Please ensure that you have written units tests for the changes
made/features
   added.

3. If you are closing an issue please use one of the automatic closing
words as
noted here:
https://help.github.com/articles/closing-issues-using-keywords/

4. If your pull request is not ready for review but you want to make use
of the
continuous integration testing facilities please label it with `[WIP]`.

5. If your pull request is ready to be reviewed without requiring
additional
work on top of it, then remove the `[WIP]` label (if present) and
replace
it with `[REVIEW]`. If assistance is required to complete the
functionality,
for example when the C/C++ code of a feature is complete but Python
bindings
are still required, then add the label `[HELP-REQ]` so that others can
triage
and assist. The additional changes then can be implemented on top of the
same PR. If the assistance is done by members of the rapidsAI team, then
no
additional actions are required by the creator of the original PR for
this,
otherwise the original author of the PR needs to give permission to the
person(s) assisting to commit to their personal fork of the project. If
that
doesn't happen then a new PR based on the code of the original PR can be
opened by the person assisting, which then will be the PR that will be
   merged.

6. Once all work has been done and review has taken place please do not
add
features or make changes out of the scope of those requested by the
reviewer
(doing this just add delays as already reviewed code ends up having to
be
re-reviewed/it is hard to tell what is new etc!). Further, please do not
rebase your branch on main/force push/rewrite history, doing any of
these
   causes the context of any comments made by reviewers to be lost. If
   conflicts occur against main they should be resolved by merging main
   into the branch used for making the pull request.

Many thanks in advance for your cooperation!

-->
During the PDLP LP relaxation phase, the solution bound was incorrectly
converted to a user objective value twice, yielding an incorrect sign on
maximizations problems. This only occurs before B&B updates the bound
further, which explains why this bug only occurs in specific scenarios
(short runs, large problems).

This also fixes optimality not being reported on simple maximizations
problems.

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

Labels

bug Something isn't working non-breaking Introduces a non-breaking change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants