finds.dev← search

// the find

PyVRP/PyVRP

★ 645 · Python · MIT · updated Jun 2026

Open-source, state-of-the-art vehicle routing problem solver in an easy-to-use Python package.

PyVRP is a Python-wrapped C++ solver for vehicle routing problems, backed by an iterated local search algorithm published in INFORMS Journal on Computing. It handles the full zoo of VRP variants — time windows, multiple depots, heterogeneous fleets, prize-collecting, multi-trip with reloading — in a single package. Aimed at operations researchers and logistics engineers who need solution quality close to academic state-of-the-art without writing their own metaheuristic.

The C++ core with pybind11 bindings means you get near-native solver speed from Python without the usual OR-Tools verbosity. The modelling interface is genuinely clean — `Model.add_client()`, `Model.add_vehicle_type()`, done; no XML or special file formats required. Test coverage is thorough and the benchmark suite runs against known-optimal VRPLIB instances, so solution quality claims are verifiable. The algorithm internals are exposed (you can subclass operators, swap stopping criteria, run the ILS step-by-step), which matters when you need to embed this in a larger optimization loop rather than just call `solve()`.

The enterprise feature split is a real friction point — break planning for EU/US HoS regulations and vehicle-client compatibility constraints are gated behind a commercial license, which means the open-source version isn't production-complete for a lot of real logistics problems. There's no built-in support for stochastic or dynamic VRP variants (demands revealed over time, vehicles breaking down), so academic users doing anything beyond static deterministic problems will hit a wall fast. The build toolchain (Meson + pybind11 + spdlog submodules) is heavier than a typical Python package — wheels exist for common platforms but building from source on anything unusual is its own adventure. Scaling to very large instances (10k+ clients) isn't documented and the HNSW-style neighbourhood search has known quadratic-worst-case behavior in dense graphs.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →