Skip to content
/ PyVRP Public
forked from PyVRP/PyVRP

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

License

Notifications You must be signed in to change notification settings

ortec/PyVRP

Repository files navigation

CI Documentation Status codecov

⚠️⚠️⚠️ This package is under heavy development - expect things to break! ⚠️⚠️⚠️

PyVRP

The pyvrp package is an open-source, state-of-the-art vehicle routing problem solver.

Local installation

You will need a recent/modern C++ compiler. Any recent version of gcc, clang, or msvc should do. We also use poetry extensively. If you do not have poetry, you can get it via

pip install poetry

Now we need to install all dependencies into the local environment:

poetry install

This command does two things: first, it installs all dependencies that are required for developing pyvrp. Second, it installs the pyvrp package in editable mode in the poetry environment. Setting up the poetry environment and installing the pyvrp package takes a little while, but most of it only needs to be done once. When the command finishes, you can verify everything went correctly by running

poetry run pytest

If all tests pass without errors, you have a working installation of the codebase.

From this point onwards, recompilation of the C++ extensions can best be done using the scripts/install.sh script. It can be called as

poetry run scripts/install.sh <buildtype>

It also takes an optional build type argument: valid options include debug (default), and release.

Details

We use the Meson build system to compile the C++ extensions. Meson is configured using the meson.build file in the repository root. You should not have to touch this file often: all installation is handled via the scripts/install.sh script. For deployment, we use the pypa/build frontend. The first uses (via poetry-core, as defined under [build-system] in the pyproject.toml file) the build_extension.py file to call into scripts/install.sh.

In short: (for now) everything runs via scripts/install.sh.

You can also compile for different problem types. Currently, cvrp and vrptw are supported. This is achieved by passing -Dproblem=<type> to the scripts/install.sh script. The default is vrptw.

Build system

Any recent compiler should do. We test using clang 12 and up, and gcc 10 and up.

Any recent Python version should do. We test using Python 3.8 and up (currently 3.8 - 3.11).

About

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

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 63.2%
  • C++ 36.1%
  • Other 0.7%