pyvrp

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

https://github.com/pyvrp/pyvrp

Science Score: 67.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 10 DOI reference(s) in README
  • Academic publication links
    Links to: arxiv.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (18.9%) to scientific vocabulary

Keywords

cpp metaheuristic multi-depot multi-trip operations-research optimization orienteering pickup-and-delivery prize-collecting python rich-vrp solver time-windows vehicle-routing-problem vrp
Last synced: 6 months ago · JSON representation ·

Repository

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

Basic Info
  • Host: GitHub
  • Owner: PyVRP
  • License: mit
  • Language: Python
  • Default Branch: main
  • Homepage: https://pyvrp.org/
  • Size: 11.6 MB
Statistics
  • Stars: 460
  • Watchers: 11
  • Forks: 89
  • Open Issues: 40
  • Releases: 29
Topics
cpp metaheuristic multi-depot multi-trip operations-research optimization orienteering pickup-and-delivery prize-collecting python rich-vrp solver time-windows vehicle-routing-problem vrp
Created over 3 years ago · Last pushed 6 months ago
Metadata Files
Readme License Code of conduct Citation

README.md

PyVRP logo

PyPI version CI DOC codecov DOI:10.1287/ijoc.2023.0055

PyVRP is an open-source, state-of-the-art vehicle routing problem (VRP) solver. It currently supports VRPs with: - Pickups and deliveries between depots and clients (capacitated VRP, VRP with simultaneous pickup and delivery, VRP with backhaul); - 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); - Client groups imposing additional restrictions on multiple clients jointly (generalised VRP, VRP with multiple time windows).

PyVRP is available on the Python package index as pyvrp. It may be installed in the usual way as pip install pyvrp This also resolves the few core dependencies PyVRP has. The documentation is available here.

[!TIP] If you are new to vehicle routing or metaheuristics, you might benefit from first reading the introduction to VRP and introduction to HGS pages.

Examples

We provide some example notebooks that show how PyVRP may be used to solve vehicle routing problems. These include:

  • A short tutorial and introduction to PyVRP's modelling interface, here. This is a great way to get started with PyVRP.
  • A notebook solving classical VRP variants, here. In this notebook we solve several benchmark instances of the CVRP and VRPTW problems. We also demonstrate how to use the plotting tools available in PyVRP to visualise the instance and statistics collected during the search procedure.
  • A notebook implementing a solve method using PyVRP's components, here. This notebook is a great way to dive deeper into how PyVRP works internally.

Getting help

Feel free to open an issue or a new discussion thread here on GitHub. Please do not e-mail us with questions, modelling issues, or code examples. Those are much easier to discuss via GitHub than over e-mail. When writing your issue or discussion, please follow the instructions here.

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:

bibtex @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. Since PyVRP extends HGS-CVRP, please also consider citing Vidal (2022).

Owner

  • Name: PyVRP
  • Login: PyVRP
  • Kind: organization

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it using the following metadata."
authors:
  - family-names: "Wouda"
    given-names: "Niels A."
    orcid: "https://orcid.org/0000-0003-2463-0309"
  - family-names: "Lan"
    given-names: "Leon"
    orcid: "https://orcid.org/0000-0001-7479-0218"
  - family-names: "Kool"
    given-names: "Wouter"
    orcid: "https://orcid.org/0000-0002-1837-1454"
title: "PyVRP"
url: "https://github.com/PyVRP/PyVRP"
identifiers:
  - description: "This is the collection of all archived snapshots of PyVRP."
    type: doi
    value: "10.5281/zenodo.11409402"
preferred-citation:
  type: article
  authors:
  - family-names: "Wouda"
    given-names: "Niels A."
    orcid: "https://orcid.org/0000-0003-2463-0309"
  - family-names: "Lan"
    given-names: "Leon"
    orcid: "https://orcid.org/0000-0001-7479-0218"
  - family-names: "Kool"
    given-names: "Wouter"
    orcid: "https://orcid.org/0000-0002-1837-1454"
  title: "PyVRP: a high-performance VRP solver package"
  journal: "INFORMS Journal on Computing"
  year: 2024
  doi: "10.1287/ijoc.2023.0055"
  volume: 36
  issue: 4
  start: 943
  end: 955

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 266
  • Total pull requests: 642
  • Average time to close issues: 4 months
  • Average time to close pull requests: 7 days
  • Total issue authors: 43
  • Total pull request authors: 9
  • Average comments per issue: 3.44
  • Average comments per pull request: 2.5
  • Merged pull requests: 526
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 67
  • Pull requests: 270
  • Average time to close issues: 3 days
  • Average time to close pull requests: 5 days
  • Issue authors: 33
  • Pull request authors: 7
  • Average comments per issue: 1.54
  • Average comments per pull request: 2.59
  • Merged pull requests: 203
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • N-Wouda (138)
  • leonlan (48)
  • wouterkool (28)
  • yxz777 (3)
  • braktar (3)
  • HarryZhangHH (2)
  • camold (2)
  • shubhampaliwal-fareye (2)
  • ChristianP85 (2)
  • SemUijen (2)
  • abb-omidi (2)
  • bmorlo (2)
  • Olivier418 (2)
  • dimauloagustin (1)
  • libklein (1)
Pull Request Authors
  • N-Wouda (472)
  • leonlan (113)
  • wouterkool (37)
  • joopvdh (10)
  • alessio-locatelli (4)
  • libklein (2)
  • shkangomelet (2)
  • braktar (1)
  • ericemrick-8451 (1)
Top Labels
Issue Labels
enhancement (92) maintenance (31) documentation (20) bug (15) discussion (13) question (11) performance (11) support (10) build-install (9) experiment (9) help wanted (8) release-notes (6) good first issue (3) benchmark (3) research (2) waiting for funding (1) waiting for use case (1) triage (1)
Pull Request Labels
maintenance (8) bug (7) documentation (4) enhancement (2) experiment (2) build-install (1)

Dependencies

.github/workflows/CD.yml actions
  • actions/checkout v3 composite
  • actions/download-artifact v3 composite
  • actions/setup-python v4 composite
  • actions/upload-artifact v3 composite
  • pypa/cibuildwheel v2.12.0 composite
.github/workflows/CI.yml actions
  • actions/cache v3 composite
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
  • codecov/codecov-action v3 composite
  • egor-tensin/setup-clang v1 composite
  • egor-tensin/setup-gcc v1 composite
pyproject.toml pypi
  • matplotlib >=2.2.0
  • numpy >=1.15.2
  • python ^3.8,<4.0
  • tomli ^2.0.1
  • tqdm ^4.64.1
  • vrplib ^1.0.0
.github/workflows/DOC.yml actions
  • actions/cache v3 composite
  • actions/checkout v4 composite
  • actions/configure-pages v3 composite
  • actions/deploy-pages v2 composite
  • actions/setup-python v4 composite
  • actions/upload-pages-artifact v1 composite
  • egor-tensin/setup-gcc v1 composite