Forward-merge release/26.04 into main#1032
Merged
rgsl888prabhu merged 44 commits intomainfrom Apr 6, 2026
Merged
Conversation
…the cutoff when no incumbent was found.
… 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
Contributor
Author
|
FAILURE - Unable to forward-merge due to an error, manual merge is necessary. Do not use the IMPORTANT: When merging this PR, do not use the auto-merger (i.e. the |
…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 !
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
## Issue Authors: - Alice Boucher (https://github.com/aliceb-nv) Approvers: - Chris Maes (https://github.com/chris-maes) - Ramakrishnap (https://github.com/rgsl888prabhu) URL: #993
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
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.
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.