Vroom - green-ecolution/backend GitHub Wiki
Vroom is an open-source software designed for solving vehicle routing problems (VRP) efficiently. It provides fast and scalable solutions for optimizing delivery routes, ride-sharing logistics, and other transportation-related challenges.
- Multi-vehicle routing: Supports optimization for multiple vehicles with different capacities.
- Time windows: Allows scheduling constraints for pickup and delivery tasks.
- Skill matching: Assigns tasks to vehicles based on skill or type constraints.
- Priority handling: Prioritizes certain jobs for more efficient route planning.
- Flexible objective functions: Supports minimizing travel distance, duration, or balancing workloads.
- Integration with OpenStreetMap and OSRM/Valhalla: Uses external routing engines for accurate distance and time calculations.
- Scalability: Capable of handling thousands of jobs efficiently.
To set up a local environment to work with our system, spin up a container as described here: docker-vroom
Let's assume that we set up Vroom in a Docker Compose file like this:
#! .docker/docker-compose.infra.yaml
services:
# [...]
vroom:
image: ghcr.io/vroom-project/vroom-docker:v1.14.0
ports:
- 2525:3000
volumes:
- ./infra/vroom:/conf
environment:
VROOM_ROUTER: <CHOOSE_YOUR_VROOM_ROUTER> # ors, orsm, valhalla
networks:
- app-network
deploy:
resources:
reservations:
cpus: "1"
memory: 50m
limits:
cpus: "1"
memory: 50m
networks:
app-network:
driver: bridge
Then the Green Ecolution configuration would look like this:
#! config/config.<env>.yaml
routing:
start_point:
- 9.434764259345679
- 54.768731253913806
end_point:
- 9.434764259345679
- 54.768731253913806
watering_point:
- 9.434764259345679
- 54.768731253913806
valhalla:
host: http://localhost:8002
optimization:
vroom:
host: http://localhost:2525
start_point
, end_point
and watering_point
are needed to optimize the route with Vroom. Here, valhalla
is used. Each routing provider in the Green Ecolution system receives an optimization parameter, which refers to the Vroom instance.
For more details, visit the official repository