-
Notifications
You must be signed in to change notification settings - Fork 238
Exploit dual degeneracy to reduce the number of integer infeasibilities #1685
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
chris-maes
wants to merge
141
commits into
NVIDIA:main
Choose a base branch
from
chris-maes:dual_degenerate
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
141 commits
Select commit
Hold shift + click to select a range
63d1ba4
Fix bugs causing primal simplex to cycle. Enable primal simplex clean…
chris-maes 8b1e60b
Primal simplex pivots on dual degenerate problems to reduce integer i…
chris-maes 17b2725
First stab at using the feasibility pump on a reduced problem on the …
chris-maes ff6f460
Add check for fast pivot using slacks
chris-maes 5e31f6c
Merge remote-tracking branch 'origin/main' into dual_degenerate
chris-maes 900805a
Enable primal simplex. Solves 85/93 NETLIB LPs in under 1 minute
chris-maes efc9fb0
Use primal simplex to remove a perturbation from dual simplex
chris-maes cf3d4d4
Clean up logging of degenerate feasibility pump
chris-maes a7cfd19
Add work estimates to primal simplex
chris-maes 6dfebbf
Display work estimate and simplex iterations
chris-maes 99d7ead
Primal in crossover. Crossover tolerance mismatch fix. Pipe work esti…
chris-maes adcb8c2
Merge remote-tracking branch 'cuopt-nvidia/main' into dual_degenerate
chris-maes 0cfc746
Address coderabbit review comments
chris-maes 1c2c01a
Address coderabbit review comments
chris-maes b2de00d
Use tight tol for reduced costs zero check
chris-maes a92825c
Try to clean up normalization
chris-maes 31436ba
Remove AI slop
chris-maes ef75207
Style fixes
chris-maes 117b2b4
Fix work estimate bug in BFRT. And improve work estimates
chris-maes 99207b2
Harris ratio test; timers in primal; limit feasibility pump to do les…
chris-maes eb47c20
Add reduced cost bounds table. Change objective in feasibility pump. …
chris-maes 7641ad3
V3 of pump and pivots, better work estimates, also exploit primal deg…
chris-maes 39cb576
Devex pricing in primal; try to remove perturbations in dual
chris-maes f54d57f
15% improvement in dual simplex; new BFRT, perturbations, initial poi…
chris-maes 917ccaf
Avoid double counting slope contribution from variable selected in si…
chris-maes 36ca4d3
Have BFRT decide on bound flips
chris-maes 75a1e97
Improve BFRT work estimates
chris-maes 47e0848
Merge remote-tracking branch 'cuopt-nvidia/main' into dual_degenerate
chris-maes d983159
Fix bug in not handling concurrent halt. Use zero_tol in step-length …
chris-maes a55f471
Add option to turn of dual degenerate feasibility pump. Silence pivot…
chris-maes 4356893
Fix reduced-cost bounds for degenerate variables
chris-maes d2fb7fb
Equilibrate LP rows and strengthen degenerate perturbations
chris-maes b0632d8
Merge remote-tracking branch 'cuopt-nvidia/main' into dual_degenerate
chris-maes bfcbb15
Style fixes
chris-maes c3a0251
Prefer large pivots with Harris ratio buckets
chris-maes ef5ff66
Add parameters to control degenerate pivots
chris-maes 2e02e23
Style fixes
chris-maes 0f95053
Snapshot slack columns for branch-and-bound workers
chris-maes 9acaebc
Restrict concurrent halt to root LP solves
chris-maes 4da4349
Preserve caller cancellation in node LP solves
chris-maes 8c93985
Prefer large pivots with Harris ratio buckets
chris-maes 553b1fc
Remove tiny perturbations before retrying dual simplex
chris-maes 62638a7
Replaced cusparse wrappers with simple unique_ptrs and more RAII (#1342)
Bubullzz 74865d3
Forward routing gRPC settings and map node name strings to ints (#1837)
tmckayus b43fae0
Set Papilo back to the main branch (#1694)
nguidotti a0435e5
Adopt CUDA stream compatibility accessors (#1858)
bdice 0f79f11
move server LPData transform into a standalone function (#1848)
tmckayus 34ac7fc
refactor: make to_optimization_problem a free function (#1802)
ramakrishnap-nv 7e50453
Extract LP create_data_model/create_solver into conversion.py (#1849)
tmckayus 447aa22
Bump cuopt-java compile target from Java 11 to Java 17 (#1865)
ramakrishnap-nv 49f6d48
extract routing server data creation routines into standalone module …
tmckayus e1238c3
move server data compression handling into a standalone module (#1851)
tmckayus 70b0955
fix(build): pin RAPIDS_BRANCH and shared-workflows to release/26.10 (…
ramakrishnap-nv 4def469
change Python grpc client so wait loop happens in Python (#1857)
tmckayus 8e3f264
add a smoke test to ensure server images start correctly (#1646)
tmckayus 52d6f08
refactor: keep the GPU warm-start path out of host-only translation u…
ramakrishnap-nv 0a4415b
extract result file support logic to be shared by proxy (#1869)
tmckayus e6196f5
update variable type (#1783)
Iroy30 cc21c5c
Move deprecated server modules into utils/deprecated. (#1874)
tmckayus 51f134d
build: add the CUDA-free cuopt_client library (#1804)
ramakrishnap-nv deade2c
Remove BFRT debug code
chris-maes 60efd8b
Remove tiny perturbations before retrying dual simplex
chris-maes 4d9309c
Remove BFRT debug code
chris-maes f6f82f4
Remove more debugging code
chris-maes 3e04179
Remove unused unscaled max obj coeff
chris-maes 2d948ec
Remove unused unscaled max obj coeff
chris-maes ae8f903
Remove more debugging code
chris-maes 6deb6bb
Check time and concurrent halt in BFRT
chris-maes 3311cdb
Improve handling of primal simplex return status
chris-maes 2920576
Remove primal clean up. We now do this inside dual simplex
chris-maes 52d8ccb
Check time and concurrent halt in BFRT
chris-maes ffaec11
Improve handling of primal simplex return status
chris-maes 2ede6e1
Remove primal clean up. We now do this inside dual simplex
chris-maes 74146b9
Fix comment
chris-maes 53be7d4
Fix comment
chris-maes 88e37c5
Fix messages
chris-maes 8e0d79c
Fix messages
chris-maes 7e9545a
Remove unused variable
chris-maes b6a9318
Fix method. Add limit check at top of loop to avoid infinite loop
chris-maes 61ddbf1
Fix method. Add limit check at top of loop to avoid infinite loop
chris-maes fa84590
Refactor primal cleanup
chris-maes f084344
Refactor primal cleanup
chris-maes cfcc5a4
Fix work estimate initialization
chris-maes dba71c3
Fix work estimate initialization
chris-maes 952cf05
Remove unused variable
chris-maes 3883aa1
Merge simplex improvements into dual_degenerate
chris-maes f8237e6
Merge cuopt-nvidia/main into simplex improvements
chris-maes f020595
Merge updated simplex base into dual_degenerate
chris-maes a7659d7
Format simplex improvements
chris-maes babeff2
Merge shared formatting into dual_degenerate
chris-maes c56bdae
Format MIP extensions
chris-maes 8523f2b
Rename simplex parameters and default primal pricing to Devex
chris-maes 9d10430
Rename simplex parameters and default primal pricing to Devex
chris-maes a9003b0
Merge shared simplex parameter updates
chris-maes bc99b1e
Stop recursive sub-MIPs when branch-and-bound terminates
chris-maes 8dd900b
Use sparse reduced-cost updates for MIP strengthening
chris-maes 30cfc15
Fix primal simplex pricing parameter test
chris-maes 0870da6
Merge branch 'primal_and_dual_simplex_improvements' into dual_degenerate
chris-maes c642962
Validate dual simplex cutoffs with the original dual objective
chris-maes f8e2b1f
Merge branch 'primal_and_dual_simplex_improvements' into dual_degenerate
chris-maes d11f578
Fix for cycling in bnat400 and mas74; limit last bucket so that slope…
chris-maes 0936739
Merge branch 'primal_and_dual_simplex_improvements' into dual_degenerate
chris-maes 0ea1b45
Merge remote-tracking branch 'cuopt-nvidia/main' into primal_and_dual…
chris-maes 2e5e02e
Adapt cutoff checks to BTRAN density and remove redundant status check
chris-maes 9206716
Avoid redundant reduced-cost product in cutoff validation
chris-maes 5ba039d
Merge branch 'primal_and_dual_simplex_improvements' into dual_degenerate
chris-maes b966d53
Use sparse input for U multiplication
chris-maes 4d8e232
Defer sparse U multiplication until integer pivots are accepted
chris-maes 5a17774
Validate dual simplex cutoffs with the original dual objective
chris-maes 80d6bf2
Adapt cutoff checks to BTRAN density and remove redundant status check
chris-maes 4db0c72
Avoid redundant reduced-cost product in cutoff validation
chris-maes adeadd1
Validate infeasibility and repair objectives below variable bounds
chris-maes ebe0c31
Restrict objective cutoffs to dual simplex phase two
chris-maes 20495e8
Merge branch 'primal_and_dual_simplex_improvements' into dual_degenerate
chris-maes 99512b9
Merge branch 'dual_simplex_cut_off_fix' into dual_degenerate
chris-maes 8a71d15
Refactor simplex setup, add primal tests, and propagate crossover set…
chris-maes 44fa77f
Merge branch 'primal_and_dual_simplex_improvements' into dual_degenerate
chris-maes 9107049
Merge remote-tracking branch 'cuopt-nvidia/main' into primal_and_dual…
chris-maes b7a1cfd
Merge branch 'primal_and_dual_simplex_improvements' into dual_degenerate
chris-maes c65b3c3
Recompute dual variables and check dual feasibility after basis repair
chris-maes 78fca87
Merge remote-tracking branch 'cuopt-nvidia/main' into primal_and_dual…
chris-maes 7013e12
Merge branch 'basis_repair_recompute_dual' into primal_and_dual_simpl…
chris-maes afa9ab6
Update primal refactor calls for basis repair reporting
chris-maes 5c4c65c
Format simplex and basis repair changes
chris-maes e8c5269
Merge branch 'primal_and_dual_simplex_improvements' into dual_degenerate
chris-maes d3b98fb
Merge remote-tracking branch 'cuopt-nvidia/main' into primal_and_dual…
chris-maes b814111
Merge branch 'primal_and_dual_simplex_improvements' into dual_degenerate
chris-maes 08e5df6
Format basis repair logging
chris-maes 14e7e31
Handle TIME_LIMIT in refactorization
chris-maes 14c6b56
Merge branch 'primal_and_dual_simplex_improvements' into dual_degenerate
chris-maes 7616c66
Merge branch 'basis_repair_recompute_dual' into primal_and_dual_simpl…
chris-maes ba428da
Revert "Stop recursive sub-MIPs when branch-and-bound terminates"
chris-maes 1925b34
Merge remote-tracking branch 'cuopt-nvidia/main' into dual_degenerate
chris-maes f7c1e5f
Update degenerate pump refactor call for repair reporting
chris-maes 9101ece
Extract degenerate pivot and reduced-cost bound utilities
chris-maes c7fcc6e
Extract reduced-cost strengthening pivot routine
chris-maes bc573c3
Merge remote-tracking branch 'cuopt-nvidia/main' into primal_and_dual…
chris-maes b418e1d
Merge branch 'primal_and_dual_simplex_improvements' into dual_degenerate
chris-maes 5cdf3c3
Merge remote-tracking branch 'cuopt-nvidia/main' into primal_and_dual…
chris-maes 3eaa615
Merge branch 'primal_and_dual_simplex_improvements' into dual_degenerate
chris-maes 26b649f
Merge remote-tracking branch 'cuopt-nvidia/main' into dual_degenerate
chris-maes File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Some comments aren't visible on the classic Files Changed page.
There are no files selected for viewing
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
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
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
Large diffs are not rendered by default.
Oops, something went wrong.
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
Oops, something went wrong.
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
🔎 Supported by static analysis
🏁 Script executed:
Repository: NVIDIA/cuopt
Length of output: 150
Document the three new MIP parameters.
The settings documentation must describe
mip_dual_degenerate_feasibility_pump,mip_primal_degenerate_pivots, andmip_dual_degenerate_pivots, including their-1..1range and default values.🤖 Prompt for AI Agents
Source: Path instructions