This repository is a comprehensive Vehicle Routing Problem (VRP) solver implemented in Rust, organized as a multi-crate workspace. It provides a command-line interface (vrp-cli), a core optimization library (vrp-core), a hyper-heuristic framework (rosomaxa), and format-specific crates for pragmatic JSON and scientific benchmarks (Solomon, Li&Lim, TSPLIB). The solver supports a wide range of VRP variants including capacity, time windows, skills, breaks, reloads, recharges, multi-depot, multi-trip, and route balancing. It employs advanced metaheuristics: ruin-and-recreate, local search (including LKH and SWAP*), and a custom evolutionary algorithm called ROSOMAXA that uses Growing Self-Organizing Maps (GSOM) for population diversity and Thompson sampling for dynamic operator selection. The codebase is highly modular with a trait-based feature system for composing constraints and objectives, type-safe dimension macros, and extensive test coverage including property-based tests. While primarily an application/library, it also contains research experiments (heuristic visualization, GPT-based encoding) and scientific benchmark integration. The project is actively maintained but explicitly labeled as 'permanently experimental' with limited support, and the API may introduce breaking changes in minor versions.
NVIDIA cuOpt is a GPU-accelerated optimization solver library covering linear programming (LP), mixed-integer programming (MIP), quadratic programming (QP), second-order cone programming (SOCP), and vehicle routing problems (VRP, PDP, TSP). The codebase is predominantly an application: it provides multiple deployment formsβa C++ shared library, Python bindings (Cython), a Java JNI interface, a CLI tool (`cuopt_cli`), a gRPC server for remote solves, and a FastAPI-based HTTP server (`cuopt_server`). It also includes comprehensive CI/CD pipelines, benchmarks, and documentation. However, it exhibits a hybrid nature due to its strong research character: advanced algorithmic innovations (e.g., primal-dual hybrid gradient with adaptive step sizing, novel MIP presolve techniques, lattice propagation, deterministic parallel branch-and-bound, SIMD-accelerated MPS parsing, and diversity-based routing heuristics) are deeply embedded in the core solvers. The system is architected as a layered monolith: common utilities and linear algebra form the base, solver-specific modules (PDLP, dual simplex, barrier, branch-and-bound, routing heuristics) sit above, and language bindings and server endpoints wrap the C++ core. Key data flows include parsing MPS/LP files or building problems programmatically, dispatching to the appropriate GPU solver, and retrieving solutions via C structs, Python objects, or protobuf messages. External dependencies include CUDA, cuSPARSE, RMM, NCCL, gRPC, Protobuf, and optionally PaPILO for presolve. The repository is actively maintained with frequent commits and nightly CI, though the presence of deprecated modules and experimental features indicates moderate technical drift.