Skip to content
Open
Show file tree
Hide file tree
Changes from 11 commits
Commits
Show all changes
20 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
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 @@ -52,6 +52,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 @@ -192,7 +193,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 @@ -57,6 +57,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 @@ -66,6 +67,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 @@ -77,6 +79,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 @@ -279,6 +282,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};
bool eliminate_dense_columns{true};
pdlp_precision_t pdlp_precision{pdlp_precision_t::DefaultPrecision};
Expand Down
Loading