Skip to content
Open
Show file tree
Hide file tree
Changes from 12 commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
63d1ba4
Fix bugs causing primal simplex to cycle. Enable primal simplex clean…
chris-maes Feb 28, 2026
8b1e60b
Primal simplex pivots on dual degenerate problems to reduce integer i…
chris-maes Jul 21, 2026
17b2725
First stab at using the feasibility pump on a reduced problem on the …
chris-maes Jul 21, 2026
ff6f460
Add check for fast pivot using slacks
chris-maes Jul 24, 2026
5e31f6c
Merge remote-tracking branch 'origin/main' into dual_degenerate
chris-maes Jul 24, 2026
900805a
Enable primal simplex. Solves 85/93 NETLIB LPs in under 1 minute
chris-maes Jul 27, 2026
efc9fb0
Use primal simplex to remove a perturbation from dual simplex
chris-maes Jul 28, 2026
cf3d4d4
Clean up logging of degenerate feasibility pump
chris-maes Jul 29, 2026
a7cfd19
Add work estimates to primal simplex
chris-maes Jul 29, 2026
6dfebbf
Display work estimate and simplex iterations
chris-maes Jul 29, 2026
99d7ead
Primal in crossover. Crossover tolerance mismatch fix. Pipe work esti…
chris-maes Aug 4, 2026
adcb8c2
Merge remote-tracking branch 'cuopt-nvidia/main' into dual_degenerate
chris-maes Aug 6, 2026
0cfc746
Address coderabbit review comments
chris-maes Aug 6, 2026
1c2c01a
Address coderabbit review comments
chris-maes Aug 6, 2026
b2de00d
Use tight tol for reduced costs zero check
chris-maes Aug 6, 2026
a92825c
Try to clean up normalization
chris-maes Aug 6, 2026
31436ba
Remove AI slop
chris-maes Aug 6, 2026
ef75207
Style fixes
chris-maes Aug 6, 2026
117b2b4
Fix work estimate bug in BFRT. And improve work estimates
chris-maes Aug 6, 2026
99207b2
Harris ratio test; timers in primal; limit feasibility pump to do les…
chris-maes Aug 7, 2026
eb47c20
Add reduced cost bounds table. Change objective in feasibility pump. …
chris-maes Aug 8, 2026
7641ad3
V3 of pump and pivots, better work estimates, also exploit primal deg…
chris-maes Aug 12, 2026
39cb576
Devex pricing in primal; try to remove perturbations in dual
chris-maes Aug 14, 2026
f54d57f
15% improvement in dual simplex; new BFRT, perturbations, initial poi…
chris-maes Aug 26, 2026
917ccaf
Avoid double counting slope contribution from variable selected in si…
chris-maes Aug 26, 2026
36ca4d3
Have BFRT decide on bound flips
chris-maes Aug 27, 2026
75a1e97
Improve BFRT work estimates
chris-maes Aug 28, 2026
47e0848
Merge remote-tracking branch 'cuopt-nvidia/main' into dual_degenerate
chris-maes Aug 28, 2026
d983159
Fix bug in not handling concurrent halt. Use zero_tol in step-length …
chris-maes Aug 29, 2026
a55f471
Add option to turn of dual degenerate feasibility pump. Silence pivot…
chris-maes Sep 2, 2026
4356893
Fix reduced-cost bounds for degenerate variables
chris-maes Sep 2, 2026
d2fb7fb
Equilibrate LP rows and strengthen degenerate perturbations
chris-maes Sep 2, 2026
b0632d8
Merge remote-tracking branch 'cuopt-nvidia/main' into dual_degenerate
chris-maes Sep 2, 2026
bfcbb15
Style fixes
chris-maes Sep 3, 2026
c3a0251
Prefer large pivots with Harris ratio buckets
chris-maes Sep 3, 2026
ef5ff66
Add parameters to control degenerate pivots
chris-maes Sep 3, 2026
2e02e23
Style fixes
chris-maes Sep 3, 2026
0f95053
Snapshot slack columns for branch-and-bound workers
chris-maes Sep 4, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion cpp/include/cuopt/mathematical_optimization/constants.h
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@
#define CUOPT_ELIMINATE_DENSE_COLUMNS "eliminate_dense_columns"
#define CUOPT_CUDSS_DETERMINISTIC "cudss_deterministic"
#define CUOPT_PRESOLVE "presolve"
#define CUOPT_INITIAL_PERTURBATION "initial_perturbation"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Make this more explicit (like CUOPT_INITIAL_PRIMAL_PERTURBATION) if its related to primal only.

#define CUOPT_MIP_PROBING "mip_probing"
#define CUOPT_DUAL_POSTSOLVE "dual_postsolve"
#define CUOPT_MIP_DETERMINISM_MODE "mip_determinism_mode"
Expand Down Expand Up @@ -198,7 +199,8 @@
#define CUOPT_METHOD_PDLP 1
#define CUOPT_METHOD_DUAL_SIMPLEX 2
#define CUOPT_METHOD_BARRIER 3
#define CUOPT_METHOD_UNSET 4
#define CUOPT_METHOD_PRIMAL 4
#define CUOPT_METHOD_UNSET 5
Comment thread
coderabbitai[bot] marked this conversation as resolved.

/* @brief PDLP precision mode constants */
#define CUOPT_PDLP_DEFAULT_PRECISION -1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ enum pdlp_solver_mode_t : int {
* PDLP: Use the PDLP method.
* DualSimplex: Use the dual simplex method.
* Barrier: Use the barrier method
* Primal: Use the (experimental) primal simplex method.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove experimental

* Unset: The value was not set.
*
* @note Default method is Concurrent.
Expand All @@ -68,6 +69,7 @@ enum method_t : int {
PDLP = CUOPT_METHOD_PDLP,
DualSimplex = CUOPT_METHOD_DUAL_SIMPLEX,
Barrier = CUOPT_METHOD_BARRIER,
Primal = CUOPT_METHOD_PRIMAL,
Unset = CUOPT_METHOD_UNSET
};

Expand All @@ -79,6 +81,7 @@ inline std::string method_to_string(method_t method)
case method_t::PDLP: return "PDLP";
case method_t::Barrier: return "Barrier";
case method_t::Concurrent: return "Concurrent";
case method_t::Primal: return "Primal Simplex";
default: return "Unset";
}
}
Expand Down Expand Up @@ -294,6 +297,7 @@ class pdlp_solver_settings_t {
i_t augmented{-1};
i_t dualize{-1};
i_t ordering{-1};
i_t initial_perturbation{-1};
i_t barrier_dual_initial_point{-1};
i_t postsolve_info{-1};
// Ruiz equilibration for QCQP (barrier) scaling: -1 automatic (row/column
Expand Down
Loading