

PyVRP is an open-source, state-of-the-art vehicle routing problem (VRP) solver developed by Applied Routing.
It currently supports VRPs with:
- Pickups and deliveries (capacitated VRP, VRP with simultaneous pickup and delivery, VRP with backhaul, pickup and delivery VRP);
- Vehicles of different capacities, costs, shift durations, routing profiles, and maximum distance and duration constraints (heterogeneous fleet VRP, site-dependent VRP);
- Time windows, client service durations, and release times (VRP with time windows and release times);
- Multiple depots (multi-depot VRP);
- Reloading along routes at different reload depots (multi-trip VRP);
- Optional clients with prizes for visiting (prize collecting, team orienteering problem);
- Mutually exclusive groups for choosing between alternatives (generalised VRP, VRP with multiple time windows);
- [Enterprise] Automatic break planning for EU and US hours-of-service regulations;
- [Enterprise] Vehicle-client and client-client compatibility constraints and sequencing relations;
- [Enterprise] Fairness constraints like load and shift duration balancing;
- [Enterprise] Soft clustering to encourage geographically compact routes.
PyVRP is available on the Python package index as pyvrp.
It may be installed in the usual way as
pip install pyvrp
The documentation is available here.
[!TIP]
Using or evaluating PyVRP at your company? Applied Routing provides consulting, custom development, and PyVRP Enterprise, an extended and production-ready version of PyVRP.
Get in touch at [email protected] to join a private Slack channel with our team and discuss your use case, PyVRP features, or the roadmap.
Tutorials
We provide many tutorials that show how to use PyVRP to solve vehicle routing problems.
The quickstart introduces PyVRP’s modelling interface and is a great way to get started.
The following tutorials cover specific features in more detail:
For those interested in PyVRP’s underlying algorithm, see this page for a high-level description of the iterated local search algorithm, and this notebook for an implementation of the solve method using PyVRP’s components.
Getting help
Feel free to open an issue or a new discussion thread here on GitHub.
When writing your issue or discussion, please follow the instructions here.
For professional support, contact us at [email protected].
Contributing
While we are very grateful for any contributions you are willing to make, reviewing and maintaining third-party code takes a significant amount of our time.
Before you start working on your contribution, please have a look here to get started.
Make sure to discuss the change first in a GitHub issue.
Feel free to open a new one if no appropriate issue already exists!
How to cite PyVRP
If you use PyVRP in your research, please consider citing the following paper:
Wouda, N.A., L. Lan, and W. Kool (2024).
PyVRP: a high-performance VRP solver package.
INFORMS Journal on Computing, 36(4): 943-955.
https://doi.org/10.1287/ijoc.2023.0055
Or, using the following BibTeX entry:
@article{Wouda_Lan_Kool_PyVRP_2024,
doi = {10.1287/ijoc.2023.0055},
url = {https://doi.org/10.1287/ijoc.2023.0055},
year = {2024},
volume = {36},
number = {4},
pages = {943--955},
publisher = {INFORMS},
author = {Niels A. Wouda and Leon Lan and Wouter Kool},
title = {{PyVRP}: a high-performance {VRP} solver package},
journal = {INFORMS Journal on Computing},
}
A preprint of this paper is available on arXiv.
评论