Dynamic re-routing and maximum delivery speed
The end-location on a vehicle is optional and can be omitted to generate open-ended routes.
If you are generating the routes for the entire day, and you want to make sure that the driver reaches the end location at the end of the shift, you can provide an end-location. If the driver needs to return to a depot, the algorithm can utilize this final leg back to make a few visits along the way.
However, if you are only interested in getting all your deliveries done as soon as possible without considering where driver might be at the end of his/her shift, you may opt to leave the route open-ended.
On-demand businesses that need real-time routing is another great use-case where you would keep the routes open-ended. As new orders come in dynamically throughout the day, you may call the API with the real-time locations of your drivers and keep re-optimizing throughout the day, without returning home.
{
"visits": {
"order_1": {
"location": {
"name": "6800 Cambie",
"lat": 49.227107,
"lng": -123.1163085
}
},
"order_2": {
"location": {
"name": "3780 Arbutus",
"lat": 49.2474624,
"lng": -123.1532338
}
},
"order_3": {
"location": {
"name": "800 Robson",
"lat": 49.2819229,
"lng": -123.1211844
}
}
},
"fleet": {
"vehicle_1": {
"start_location": {
"id": "depot",
"name": "800 Kingsway",
"lat": 49.2553636,
"lng": -123.0873365
}
}
}
}
{
"status": "success",
"total_travel_time": 31.983334,
"total_idle_time": 0,
"num_unserved": 0,
"unserved": null,
"solution": {
"vehicle_1": [
{
"location_id": "depot",
"location_name": "800 Kingsway"
},
{
"location_id": "order_3",
"location_name": "800 Robson"
},
{
"location_id": "order_2",
"location_name": "3780 Arbutus"
},
{
"location_id": "order_1",
"location_name": "6800 Cambie"
}
]
}
}