Skip to content

Forward-merge release/26.04 into main#1032

Merged
rgsl888prabhu merged 44 commits intomainfrom
release/26.04
Apr 6, 2026
Merged

Forward-merge release/26.04 into main#1032
rgsl888prabhu merged 44 commits intomainfrom
release/26.04

Conversation

@rapids-bot
Copy link
Copy Markdown
Contributor

@rapids-bot rapids-bot bot commented Apr 2, 2026

Forward-merge triggered by push to release/26.04 that creates a PR to keep main up-to-date. If this PR is unable to be immediately merged due to conflicts, it will remain open for the team to manually merge. See forward-merger docs for more info.

nguidotti and others added 29 commits March 16, 2026 14:42
… improve-reliable-branching

# Conflicts:
#	cpp/src/branch_and_bound/pseudo_costs.cpp
…change estimate via dual simplex single pivot (#963).
…ange instead of the objective. fixed candidate ranking in reliability branching.
Signed-off-by: Nicolas Guidotti <224634272+nguidotti@users.noreply.github.com>
Signed-off-by: Nicolas Guidotti <224634272+nguidotti@users.noreply.github.com>
Signed-off-by: Nicolas Guidotti <224634272+nguidotti@users.noreply.github.com>
Signed-off-by: Nicolas Guidotti <224634272+nguidotti@users.noreply.github.com>
Signed-off-by: Nicolas Guidotti <224634272+nguidotti@users.noreply.github.com>
Signed-off-by: Nicolas Guidotti <224634272+nguidotti@users.noreply.github.com>
…g branching as a setting

Signed-off-by: Nicolas Guidotti <224634272+nguidotti@users.noreply.github.com>
Remove `new_slacks` variable.
…n in strong branching

Signed-off-by: Nicolas Guidotti <224634272+nguidotti@users.noreply.github.com>
Signed-off-by: Nicolas Guidotti <224634272+nguidotti@users.noreply.github.com>
Signed-off-by: Nicolas Guidotti <224634272+nguidotti@users.noreply.github.com>
## Issue

Authors:
  - Cindy Wilkinson (https://github.com/cwilkinson76)

Approvers:
  - Ramakrishnap (https://github.com/rgsl888prabhu)

URL: #1028
@rapids-bot rapids-bot bot requested a review from a team as a code owner April 2, 2026 15:52
@rapids-bot rapids-bot bot requested a review from rgsl888prabhu April 2, 2026 15:52
@rapids-bot
Copy link
Copy Markdown
Contributor Author

rapids-bot bot commented Apr 2, 2026

FAILURE - Unable to forward-merge due to an error, manual merge is necessary. Do not use the Resolve conflicts option in this PR, follow these instructions https://docs.rapids.ai/maintainers/forward-merger/

IMPORTANT: When merging this PR, do not use the auto-merger (i.e. the /merge comment). Instead, an admin must manually merge by changing the merging strategy to Create a Merge Commit. Otherwise, history will be lost and the branches become incompatible.

nguidotti and others added 5 commits April 2, 2026 19:03
…istic_test

Signed-off-by: Nicolas Guidotti <224634272+nguidotti@users.noreply.github.com>
…ig. Use user object for relative complementarity gap. Initialize logger so we get feedback when reading large mps files
Improvements to reliability branching by the one and only @nguidotti !
@anandhkb anandhkb requested a review from a team as a code owner April 3, 2026 03:44
@anandhkb anandhkb requested review from Kh4ster and chris-maes April 3, 2026 03:44
nguidotti and others added 2 commits April 3, 2026 08:26
This PR replaced `solved_by_pdlp` with `solved_by` in `optimization_problem_solution_t` and all associated objects, such that now it is possible to retrieve which method was used for solving the LP when running in concurrent mode. This also fix a typo in the `CUOPT_TERMINATION_STATUS` and updates the B&B logs to display the method used for solving the root relaxation.

## Issue
Closes #787

Authors:
  - Nicolas L. Guidotti (https://github.com/nguidotti)
  - Ishika Roy (https://github.com/Iroy30)

Approvers:
  - Ramakrishnap (https://github.com/rgsl888prabhu)
  - Nicolas Blin (https://github.com/Kh4ster)

URL: #822
…anching (#994)

This PR enables the following regarding batch PDLP:
- Enable batch PDLP in reliability branching
- Add work stealing so that batch PDLP and Dual Simplex can run concurrently and steal LPs from each other if one solves it first
- Use correct problem representation with cuts for batch PDLP 
- Use a PDLP warm start cache across strong branching at the root and in reliability branching
- Increase tolerance on batch PDLP to have higher quality solution
- Increase iteration limit to allow instances that needs a high iteration count (with low cost per iteration) to still come through (only while solving the original LP to get warm start data)
- Multiple heuristics to not run batch PDLP to not create overheads when Dual Simplex is clearly superior
- Don't store and copy primal dual solution unless need it to save on memory
- Handle batch PDLP errors better, allowing Dual Simplex to still continue in strong branching even if BPDLP fails
- No early exit if the initial warm start PDLP solution is already feasible in BPDLP
- Correct objective for BPDLP when there is an offset

Currently we still keep BPDLP off by default both at the root and in reliability branching

Authors:
  - Nicolas Blin (https://github.com/Kh4ster)
  - Trevor McKay (https://github.com/tmckayus)
  - Chris Maes (https://github.com/chris-maes)

Approvers:
  - Nicolas L. Guidotti (https://github.com/nguidotti)
  - Trevor McKay (https://github.com/tmckayus)
  - Chris Maes (https://github.com/chris-maes)

URL: #994
@rapids-bot rapids-bot bot requested a review from a team as a code owner April 3, 2026 15:45
aliceb-nv and others added 8 commits April 3, 2026 16:34
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:

- Computes a median-based target norm (excluding big-M and zero-RHS rows for outlier robustness)
- Picks a per-row scaling factor clamped to [1/32, 32], with tighter [1/16, 1] limits for big-M rows and rows that are already numerically large
- Preserves integer coefficient integrality for integer variables by preferring power-of-two scaling factors (exact in IEEE 754) or integer-GCD-preserving multipliers
- Tracks cumulative scaling per row within a [1/256, 256] band
- Stops early when the spread improvement stalls below a relative tolerance

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**
  * MIP row-scaling enabled by default for improved numeric robustness.
  * Solver returns partial results early when time limits are reached; time-limit enforcement is more proactive.
  * New selectable MIP scaling configurations with logging of the selected scaling setup.

* **Bug Fixes**
  * Fixed inconsistent unscaling and feasibility handling to prevent mismatched solution states.

* **Chores**
  * Removed a deprecated MIP configuration option.
  * Consolidated and replaced the scaling strategy; tests and build updated accordingly.

Authors:
  - Akif ÇÖRDÜK (https://github.com/akifcorduk)
  - Alice Boucher (https://github.com/aliceb-nv)
  - Ramakrishnap (https://github.com/rgsl888prabhu)

Approvers:
  - Chris Maes (https://github.com/chris-maes)
  - Ishika Roy (https://github.com/Iroy30)
  - Ramakrishnap (https://github.com/rgsl888prabhu)

URL: #906
Fix issue with infinite lower bounds and try to bound free variables in barrier from our @chris-maes
@rgsl888prabhu rgsl888prabhu merged commit b5b6dfa into main Apr 6, 2026
319 of 343 checks passed
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.

9 participants