Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/VROOM-Project/vroom
Vehicle Routing Open-source Optimization Machine
https://github.com/VROOM-Project/vroom
cvrp delivery logistics optimization pdptw pickup solver travelling-salesman tsp vehicle-routing-problem vroom vrp vrptw
Last synced: about 2 months ago
JSON representation
Vehicle Routing Open-source Optimization Machine
- Host: GitHub
- URL: https://github.com/VROOM-Project/vroom
- Owner: VROOM-Project
- License: bsd-2-clause
- Created: 2015-09-05T12:58:42.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2024-05-22T12:33:50.000Z (7 months ago)
- Last Synced: 2024-05-23T09:44:34.669Z (7 months ago)
- Topics: cvrp, delivery, logistics, optimization, pdptw, pickup, solver, travelling-salesman, tsp, vehicle-routing-problem, vroom, vrp, vrptw
- Language: C++
- Homepage: http://vroom-project.org/
- Size: 3.5 MB
- Stars: 1,239
- Watchers: 63
- Forks: 322
- Open Issues: 42
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# Vehicle Routing Open-source Optimization Machine
_Good solutions, fast._
---
## About
VROOM is an open-source optimization engine written in C++20 that aim
at providing good solutions to various real-life [vehicle routing
problems](https://en.wikipedia.org/wiki/Vehicle_routing_problem) (VRP)
within a small computing time.The project has been initiated by [Verso](https://verso-optim.com/) to
power its [route optimization
API](https://blog.verso-optim.com/category/route-optimization/api/).## Supported problem types
VROOM can solve several well-known types of vehicle routing problems
(VRP).- TSP (travelling salesman problem)
- CVRP (capacitated VRP)
- VRPTW (VRP with time windows)
- MDHVRPTW (multi-depot heterogeneous vehicle VRPTW)
- PDPTW (pickup-and-delivery problem with TW)VROOM can also solve any mix of the above problem types.
## Features
VROOM models a VRP with a description of resources (`vehicles`),
single-location pickup and/or delivery tasks (`jobs`) and
pickup-and-delivery tasks that should happen within the same route
(`shipments`).### Job and shipment
- Delivery/pickup amounts on arbitrary number of metrics
- Service time windows
- Service duration
- Skills
- Priority### Vehicle
- Capacity on arbitrary number of metrics
- Skills
- Working hours
- Driver breaks
- Start and end defined on a per-vehicle basis
- Start and end can be different
- Open trip optimization (only start or only end defined)## Supported routing engines
VROOM works out-of-the-box on top of several open-source routing
engines.- [OSRM](http://project-osrm.org/)
- [Openrouteservice](https://openrouteservice.org/)
- [Valhalla](https://github.com/valhalla/valhalla)VROOM can also use a custom cost matrix computed from any other
source.## Getting started
### Demo
- The [demo frontend](http://map.vroom-project.org/) provides a simple
user interface for quick tests.
- The [demo
server](https://github.com/VROOM-Project/vroom/wiki/Demo-server) makes
it easy to send sample optimization requests for testing purposes.### Setup your own VROOM stack
#### Solving engine
Several options are available to get `vroom` running on command-line.
1. Build from source following [the wiki
instructions](https://github.com/VROOM-Project/vroom/wiki/Building).
2. Use
[`vroom-docker`](https://github.com/VROOM-Project/vroom-docker).### Command-line usage
Refer to [this wiki
page](https://github.com/VROOM-Project/vroom/wiki/Usage)#### Http wrapper
[`vroom-express`](https://github.com/VROOM-Project/vroom-express) is a
simple wrapper to use `vroom` with http requests. It's already bundled
in the `vroom-docker` setup.#### Using libvroom from C++
The project can also used as a library from any C++ project, refer to
[this wiki
page](https://github.com/VROOM-Project/vroom/wiki/Using-libvroom).## Tests
### CI builds
[![vroom](https://github.com/VROOM-Project/vroom/actions/workflows/vroom.yml/badge.svg)](https://github.com/VROOM-Project/vroom/actions/workflows/vroom.yml)
[![vroom + libosrm](https://github.com/VROOM-Project/vroom/actions/workflows/vroom_libosrm.yml/badge.svg?branch=master)](https://github.com/VROOM-Project/vroom/actions/workflows/vroom_libosrm.yml)
[Github Actions](https://github.com/VROOM-Project/vroom/actions) are
used to check the build across various compilers and settings.### Functional tests
Several sets of instances are used.
1. Benchmark instances from papers (see [wiki page with
results](https://github.com/VROOM-Project/vroom/wiki/Benchmarks)).
2. Custom random instances generated to target typical use-cases and
constraints settings.
3. Real-life instances.Academic and custom benchmarks are heavily used during development for
each new core feature. Every new release is checked against all
benchmarks classes to spot potential regressions with regard to both
solution quality and computing times.## Reference in publications
To cite VROOM in publications, please use:
```bibtex
@manual{vroom_v1.14,
title = {{VROOM v1.14, Vehicle Routing Open-source Optimization Machine}},
author = {Coupey, Julien and Nicod, Jean-Marc and Varnier, Christophe},
year = 2024,
organization = {Verso (\url{https://verso-optim.com/})},
address = {Besançon, France},
note = {\url{http://vroom-project.org/}}
}
```