Release Notes#

Release Notes 25.08#

New Features (25.08)#

  • Added Python API for LP and MILP (#223)

Breaking Changes (25.08)#

  • Fixed versioning for nightly and release package (#175)

Improvements (25.08)#

  • New heuristic improvements (#178)

  • Add helm chart for cuOpt service (#224)

  • Add nightly container support (#180)

  • Adding deb package support as a beta feature (#190)

  • Use cusparsespmv_preprocess() now that Raft implements it (#120)

  • Create a bash script to run MPS files in parallel (#87)

  • Several fixes needed to compile cuOpt with LLVM (#121)

  • Small fixes for corner cases (#130)

  • Small improvements on how paths are handled in tests (#129)

  • Update cxxopts to v3.3.1 (#128)

  • Bump actions/checkout in nightly.yaml to v4 (#230)

  • Remove CUDA 11 specific changes from repo (#222)

  • Heuristic improvements with solution hash, MAB and simplex root solution (#216)

  • Various typos in comments and strings, note on result dir (#200)

  • Split very large tests into smaller individual test cases (#152)

  • Fix compile error when using clang with C++20 (#145)

  • Relax pinnings on several dependencies, remove nvidia channel (#125)

  • Fix compile error when building with clang (#119)

  • cuOpt service add healthcheck for / (#114)

  • refactor(shellcheck): fix all remaining shellcheck errors/warnings (#99)

  • Add CTK 12.9 fatbin flags to maintain existing binary sizes (#58)

Bug Fixes (25.08)#

  • Fixed a segfault on bnatt500 due to small mu leading to inf/nan (#254)

  • Fixed a bug in basis repair. Recover from numerical issues in primal update (#249)

  • Unset NDEBUG in cmake in assert mode (#248)

  • Manual cuda graph creation in load balanced bounds presolve (#242)

  • Fixed bug on initial solution size in the check and cuda set device order (#226)

  • Disable cuda graph in batched PDLP (#225)

  • Fix logging levels format with timestamps (#201)

  • Fix bug in scaling of dual slacks and sign of dual variables for >= constraints (#191)

  • Fix inversion crossover bug with PDP and prize collection (#179)

  • Fix a bug in extract_best_per_route kernel (#156)

  • Fix several bugs appeared in unit testing of JuMP interface (#149)

  • Fix incorrect reported solving time (#131)

  • Fix max offset (#113)

  • Fix batch graph capture issue caused by pinned memory allocator (#110)

  • Fix bug in optimization_problem_solution_t::copy_from (#109)

  • Fix issue when problem has an empty problem in PDLP (#107)

  • Fix crash on models with variables but no constraints (#105)

  • Fix inversion of constraint bounds in conditional bounds presolve (#75)

  • Fix data initialization in create depot node for max travel time feature (#74)

Documentation (25.08)#

  • Added more pre-commit checks to ensure coding standards (#213)

  • Mention GAMS and GAMSPy in third-party modeling languages page in documentation (#206)

  • Enable doc build workflow and build script for PR and Nightly (#203)

  • Fix the link to Python docs in README (#118)

  • Add link checker for doc build and test (#229)

Release Notes 25.05#

New Features (25.05)#

  • Added concurrent mode that runs PDLP and Dual Simplex together

  • Added crossover from PDLP to Dual Simplex

  • Added a C API for LP and MILP

  • PDLP: Faster iterations and new more robust default PDLPSolverMode Stable2

  • Added support for writing out mps file containing user problem. Useful for debugging

Breaking Changes (25.05)#

  • NoTermination is now a NumericalError

  • Split cuOpt as libcuopt and cuopt wheel

Improvements (25.05)#

  • Hook up MILP Gap parameters and add info about number of nodes explored and simplex iterations

  • FJ bug fixes, tests and improvements

  • Allow no time limit in MILP

  • Refactor routing

  • Probing cache optimization

  • Diversity improvements for routing

  • Enable more compile warnings and faster compile by bypassing rapids fetch

  • Constraint prop based on load balanced bounds update

  • Logger file handling and bug fixes on MILP

  • Add shellcheck to pre-commit and fix warnings

Bug Fixes (25.05)#

  • In the solution, termination_status should be cast to correct enum.

  • Fixed a bug using vehicle IDs in construct feasible solution algorithm.

  • FP recombiner probing bug fix.

  • Fix concurrent LP crashes.

  • Fix print relative dual residual.

  • Handle empty problems gracefully.

  • Improve breaks to allow dimensions at arbitrary places in the route.

  • Free var elimination with a substitute variable for each free variable.

  • Fixed race condition when resetting vehicle IDs in heterogenous mode.

  • cuOpt self-hosted client, some MILPs do not have all fields in lp_stats.

  • Fixed RAPIDS logger usage.

  • Handle LP state more cleanly, per solution.

  • Fixed routing solver intermittent failures.

  • Gracefully exit when the problem is infeasible after presolve.

  • Fixed bug on dual resizing.

  • Fix occasional incorrect solution bound on maximization problems

  • Fix inversion of constraint bounds in conditional bounds presolve

  • Pdlp fix batch cuda graph

  • Fix obj constant on max. Fix undefined memory access at root

  • Allow long client version in service version check, this fixes the issue in case version is of the format 25.05.00.dev0

Documentation (25.05)#

  • Restructure documementation to accomdate new APIs