top | item 46743534

Show HN: PyVRP, an open-source vehicle routing problem solver

2 points| nawouda | 1 month ago |github.com

Hi HN! We built PyVRP, an open-source solver for vehicle routing problems.

It can solve many practical routing problems, including those with time window constraints, multiple depots, and reloading. These problems all NP-hard, so PyVRP implements a state-of-the-art metaheuristic solver based on iterated local search. The local search optimisation engine is written in C++. On top of the solver, PyVRP exposes a high-level Python modelling interface. This makes it easy to solve large-scale routing problems from Python, at near-native speeds.

Docs: https://pyvrp.org/

3 comments

order

npalli|1 month ago

Good. How does it compare to cuOPT which seems to be 10-5000x faster than existing solvers for Vehicle routing if you believe the marketing.

nawouda|1 month ago

Based on reading https://developer.nvidia.com/blog/record-breaking-nvidia-cuo..., we are honestly pretty similar in terms of technology choices and (verifiable) performance. NVIDIA's found a few new records on VRPTW and pickup-and-delivery problems; but so did we in May and June 2023: https://galgos.inf.puc-rio.br/cvrplib/index.php/en/updates/. We have stopped playing the benchmarketing game, but if PyVRP ran for a few hours I'm sure we could find new records on (some) instances again. And we only need commodity hardware to do that, not beefy GPUs.

The NVIDIA article mentions constant time move evaluations using time warp inside their local search. We use the exact same thing. We used to have a genetic algorithm on top of the local search, like NVIDIA, but recently dropped that in favour of iterated local search, because we found that to be stabler, converge faster, and overall easier to reason about.

I think NVIDIA has a great product, and an even better marketing department.

ge0ffrey|28 days ago

Nonsense. Timefold Solver and other open source vehicle routing problem solvers deliver better results in less time, with affordable hardware, especially for real-world complexity.