MIP Row and Objective Scaling#906
Merged
rapids-bot[bot] merged 90 commits intoNVIDIA:release/26.04from Apr 3, 2026
Merged
Conversation
Iroy30
reviewed
Apr 2, 2026
python/cuopt_server/cuopt_server/utils/linear_programming/data_definition.py
Show resolved
Hide resolved
<!-- Thank you for contributing to cuOpt :) Here are some guidelines to help the review process go smoothly. Many thanks in advance for your cooperation! Note: The pull request title will be included in the CHANGELOG. --> ## Description There were failure due to increase in wheel size, so bumping the wheel size limit for libcuopt https://github.com/NVIDIA/cuopt/actions/runs/23821469086/job/69435078088?pr=1015 ## Checklist - [x] I am familiar with the [Contributing Guidelines](https://github.com/NVIDIA/cuopt/blob/HEAD/CONTRIBUTING.md). - Testing - [ ] New or existing tests cover these changes - [ ] Added tests - [ ] Created an issue to follow-up - [x] NA - Documentation - [ ] The documentation is up to date with these changes - [ ] Added new documentation - [x] NA
rgsl888prabhu
approved these changes
Apr 3, 2026
Contributor
Author
|
/merge |
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.
mip_scaling_strategy.cu implements a GPU-accelerated row-scaling and objective-scaling strategy for MIP problems that improves numerical conditioning before solving.
Objective scaling (scale_objective): scales small objective coefficients up so the smallest nonzero magnitude reaches a minimum threshold (~1e-2), guarded by a max-coefficient cap to avoid blowing up large values.
Iterative row scaling (scale_problem): runs up to 8 iterations of per-row scaling to reduce the log2-spread of row infinity norms across the constraint matrix. Each iteration:
The current optimal setup is with only row scaling, that's why I have left row scaling only as default.
This also fixes a bug of setting lower bound of an approximate PDLP and Barrier solution. Now we set the bound only if the relaxation solution is fully feasible on absolute per row tolerances. With main+bug fix, number of infinite mip_gaps are 5-6 instances, with scaling it is only 1. So, scaling is able find 4-5 instances in with the absolute feasible root relaxation (does not necessarily mean basic solution in dual simplex).
Overall we are able to find 2 more optimal solutions compared to main + lower bound bug fix. And ~1% mip gap improvement.
Summary by CodeRabbit
New Features
Bug Fixes
Chores