graphhopper route optimization · 2015-11-27 · route optimization api 1. geocode 2. snap geocodes...

26
GraphHopper Route Optimization Stefan Schröder

Upload: others

Post on 07-Apr-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: GraphHopper Route Optimization · 2015-11-27 · Route Optimization API 1. Geocode 2. Snap Geocodes to networks 3. Calculate n x n travel times/distances 4. Optimize Friedrichstraße

GraphHopper Route Optimization

Stefan Schröder

Page 2: GraphHopper Route Optimization · 2015-11-27 · Route Optimization API 1. Geocode 2. Snap Geocodes to networks 3. Calculate n x n travel times/distances 4. Optimize Friedrichstraße

● Fast and Flexible Directions API

● Lightweight API to solve heavy routing problems

What is GraphHopper?

Page 3: GraphHopper Route Optimization · 2015-11-27 · Route Optimization API 1. Geocode 2. Snap Geocodes to networks 3. Calculate n x n travel times/distances 4. Optimize Friedrichstraße

● 04/2012 – Peter Karich published OS GraphHopper routingbased on OSM

● 06/2013 – Stefan Schröder published jsprit, a toolkit to solvevehicle routing problems

● 04/2015 – we joined forces to develop the GraphHopperDirections API

Brief history

Page 4: GraphHopper Route Optimization · 2015-11-27 · Route Optimization API 1. Geocode 2. Snap Geocodes to networks 3. Calculate n x n travel times/distances 4. Optimize Friedrichstraße

Directions API

Page 5: GraphHopper Route Optimization · 2015-11-27 · Route Optimization API 1. Geocode 2. Snap Geocodes to networks 3. Calculate n x n travel times/distances 4. Optimize Friedrichstraße

Route Optimization API

● Difference between Routing and RouteOptimization API

Least cost path from A to B

Least cost paths withvia points

A

B

A

B

C

D

E

A

B

C

D

E

Least cost route byordering of via points

Page 6: GraphHopper Route Optimization · 2015-11-27 · Route Optimization API 1. Geocode 2. Snap Geocodes to networks 3. Calculate n x n travel times/distances 4. Optimize Friedrichstraße

Route Optimization API

1. Geocode

2. Snap Geocodes tonetworks

3. Calculate n x n traveltimes/distances

4. Optimize

Friedrichstraße 52lon,lat

1

n

1 n

Page 7: GraphHopper Route Optimization · 2015-11-27 · Route Optimization API 1. Geocode 2. Snap Geocodes to networks 3. Calculate n x n travel times/distances 4. Optimize Friedrichstraße

Vehicle Routing Problem

● VRP: Given m vehicles with capacity restrictions and ncustomers, find vehicle routes that minimizetransportation costs.

● TSP: Round trip visiting every location once

● Last mile deliveries, health care, garbage collection,technicians, ...

● Challenges: Search space, Example 50 L-TSP

Page 8: GraphHopper Route Optimization · 2015-11-27 · Route Optimization API 1. Geocode 2. Snap Geocodes to networks 3. Calculate n x n travel times/distances 4. Optimize Friedrichstraße

Search algorithms

● Exact methods – Branch & Bound

● Meta-Heuristics – Tabu Search, SimulatedAnnealing, etc.

● Ruin and Recreate – Large NeighborhoodSearch Threshold Acceptance and SimulatedAnnealing

Page 9: GraphHopper Route Optimization · 2015-11-27 · Route Optimization API 1. Geocode 2. Snap Geocodes to networks 3. Calculate n x n travel times/distances 4. Optimize Friedrichstraße

Route Optimization Editor

● Switch to Route Editor and solve problems live

● TSP● TSP-Relation● VRP● VRP-Relation● VRP-Bike● VRP-Min-Max

Page 10: GraphHopper Route Optimization · 2015-11-27 · Route Optimization API 1. Geocode 2. Snap Geocodes to networks 3. Calculate n x n travel times/distances 4. Optimize Friedrichstraße

Problem Berlin

Page 11: GraphHopper Route Optimization · 2015-11-27 · Route Optimization API 1. Geocode 2. Snap Geocodes to networks 3. Calculate n x n travel times/distances 4. Optimize Friedrichstraße

Sufficient capacity - TSP

Page 12: GraphHopper Route Optimization · 2015-11-27 · Route Optimization API 1. Geocode 2. Snap Geocodes to networks 3. Calculate n x n travel times/distances 4. Optimize Friedrichstraße

Direct sequence of 37 & 38

Page 13: GraphHopper Route Optimization · 2015-11-27 · Route Optimization API 1. Geocode 2. Snap Geocodes to networks 3. Calculate n x n travel times/distances 4. Optimize Friedrichstraße

VRP

Page 14: GraphHopper Route Optimization · 2015-11-27 · Route Optimization API 1. Geocode 2. Snap Geocodes to networks 3. Calculate n x n travel times/distances 4. Optimize Friedrichstraße

VRP with relation

Page 15: GraphHopper Route Optimization · 2015-11-27 · Route Optimization API 1. Geocode 2. Snap Geocodes to networks 3. Calculate n x n travel times/distances 4. Optimize Friedrichstraße

VRP – min-max compl. time

Page 16: GraphHopper Route Optimization · 2015-11-27 · Route Optimization API 1. Geocode 2. Snap Geocodes to networks 3. Calculate n x n travel times/distances 4. Optimize Friedrichstraße

VRP – min-max by foot

Page 17: GraphHopper Route Optimization · 2015-11-27 · Route Optimization API 1. Geocode 2. Snap Geocodes to networks 3. Calculate n x n travel times/distances 4. Optimize Friedrichstraße

Shortest route throughDublin avoiding pubs?

Page 18: GraphHopper Route Optimization · 2015-11-27 · Route Optimization API 1. Geocode 2. Snap Geocodes to networks 3. Calculate n x n travel times/distances 4. Optimize Friedrichstraße

Dublin – “avoid pubs”

Page 19: GraphHopper Route Optimization · 2015-11-27 · Route Optimization API 1. Geocode 2. Snap Geocodes to networks 3. Calculate n x n travel times/distances 4. Optimize Friedrichstraße

Dublin – “avoid pubs”

Page 20: GraphHopper Route Optimization · 2015-11-27 · Route Optimization API 1. Geocode 2. Snap Geocodes to networks 3. Calculate n x n travel times/distances 4. Optimize Friedrichstraße

Publicity?

● handful retweets

● <100 blog readers

● pointer to this: “there's someone trying to drink inevery pub in Dublin, might be another interestingdemo for you.”

Page 21: GraphHopper Route Optimization · 2015-11-27 · Route Optimization API 1. Geocode 2. Snap Geocodes to networks 3. Calculate n x n travel times/distances 4. Optimize Friedrichstraße

Shortest route throughDublin visiting all pups?

Page 22: GraphHopper Route Optimization · 2015-11-27 · Route Optimization API 1. Geocode 2. Snap Geocodes to networks 3. Calculate n x n travel times/distances 4. Optimize Friedrichstraße

Dublin – “visit all pubs”

Page 23: GraphHopper Route Optimization · 2015-11-27 · Route Optimization API 1. Geocode 2. Snap Geocodes to networks 3. Calculate n x n travel times/distances 4. Optimize Friedrichstraße

Publicity?● many retweets from all over the world

● >3000 readers

● on reddit

● a day on the front page of hacker news with 84points

Page 24: GraphHopper Route Optimization · 2015-11-27 · Route Optimization API 1. Geocode 2. Snap Geocodes to networks 3. Calculate n x n travel times/distances 4. Optimize Friedrichstraße

Dublin – “visit all pubs”

Page 25: GraphHopper Route Optimization · 2015-11-27 · Route Optimization API 1. Geocode 2. Snap Geocodes to networks 3. Calculate n x n travel times/distances 4. Optimize Friedrichstraße

GraphHopper.com

[email protected]

Page 26: GraphHopper Route Optimization · 2015-11-27 · Route Optimization API 1. Geocode 2. Snap Geocodes to networks 3. Calculate n x n travel times/distances 4. Optimize Friedrichstraße