Maximum route duration¶
Info
This feature is configurable via .json input, without the need for code
customization and is available for both the Marketplace app and Platform. You
can find a list of all available features.
| Field name | Required | Data type | SI Unit | Defined on | Example | Configurable via defaults |
|---|---|---|---|---|---|---|
max_duration |
No | int |
seconds |
vehicle |
{"max_duration": 123} |
✅ |
It may be useful to set a hard limit on the maximum duration of a route for a
vehicle. For example, if the vehicle or vehicle driver has a limited
availability. This limit can be set via the max_duration feature on vehicles.
The duration is given in seconds.
Please note that the max_duration includes any time spent traveling, waiting
at stops, and servicing them.
Info
When defining start_time and end_time on a vehicle
there is a time duration defined by end_time - start_time. The route duration
is limited by the most constrained duration between end_time - start_time and
max_duration.
Here is an example defining different maximum durations for vehicles. A sample output obtained after solving the problem is also shown.
{
"defaults": {
"vehicles": {
"speed": 5,
"start_time": "2023-01-01T12:00:00Z"
},
"stops": {
"unplanned_penalty": 20000,
"duration": 300
}
},
"stops": [
{
"id": "Fushimi Inari Taisha",
"location": { "lon": 135.772695, "lat": 34.967146 }
},
{
"id": "Kiyomizu-dera",
"location": { "lon": 135.78506, "lat": 34.994857 }
},
{
"id": "Nijō Castle",
"location": { "lon": 135.748134, "lat": 35.014239 }
},
{
"id": "Kyoto Imperial Palace",
"location": { "lon": 135.762057, "lat": 35.025431 }
},
{
"id": "Gionmachi",
"location": { "lon": 135.775682, "lat": 35.002457 }
},
{
"id": "Kinkaku-ji",
"location": { "lon": 135.728898, "lat": 35.039705 }
},
{
"id": "Arashiyama Bamboo Forest",
"location": { "lon": 135.672009, "lat": 35.017209 }
}
],
"vehicles": [
{
"id": "v1",
"max_duration": 1800
},
{
"id": "v2",
"max_duration": 1200
}
]
}
{
"options": {
"check": {
"duration": 30000000000,
"verbosity": "off"
},
"format": {
"disable": {
"progression": true
}
},
"model": {
"constraints": {
"disable": {
"attributes": false,
"capacities": null,
"capacity": false,
"distance_limit": false,
"groups": false,
"maximum_duration": false,
"maximum_stops": false,
"maximum_wait_stop": false,
"maximum_wait_vehicle": false,
"mixing_items": false,
"precedence": false,
"start_time_windows": false,
"vehicle_end_time": false,
"vehicle_start_time": false
},
"enable": {
"cluster": false
}
},
"objectives": {
"capacities": "",
"cluster": 0,
"distance": 0,
"early_arrival_penalty": 1,
"late_arrival_penalty": 1,
"min_stops": 1,
"stop_balance": 0,
"travel_duration": 0,
"unplanned_penalty": 1,
"vehicle_activation_penalty": 1,
"vehicles_duration": 1
},
"properties": {
"disable": {
"duration_groups": false,
"durations": false,
"initial_solution": false,
"stop_duration_multipliers": false
},
"maximum_time_horizon": 15552000
},
"validate": {
"disable": {
"resources": false,
"start_time": false
},
"enable": {
"matrix": false,
"matrix_asymmetry_tolerance": 20
}
}
},
"solve": {
"duration": 10000000000,
"iterations": 50,
"parallel_runs": 1,
"plateau": {
"absolute_threshold": -1,
"delay": 0,
"duration": 0,
"iterations": 0,
"relative_threshold": 0
},
"run_deterministically": true,
"solver": {
"plan_group_size": {
"delta": 0,
"delta_after_iterations": 1000000000,
"max_value": 2,
"min_value": 2,
"snap_back_after_improvement": true,
"start_value": 2,
"zigzag": true
},
"unplan_units": {
"delta": 2,
"delta_after_iterations": 125,
"max_value": -1,
"min_value": 2,
"snap_back_after_improvement": true,
"start_value": 2,
"zigzag": true
},
"unplan_weights": "Vehicle:3,Island:1,Location:293"
},
"start_solutions": 1
}
},
"solutions": [
{
"objective": {
"name": "1 * vehicles_duration + 1 * unplanned_penalty",
"objectives": [
{
"base": 2751.797765016556,
"factor": 1,
"name": "vehicles_duration",
"value": 2751.797765016556
},
{
"base": 40000,
"factor": 1,
"name": "unplanned_penalty",
"value": 40000
}
],
"value": 42751.797765016556
},
"unplanned": [
{
"id": "Arashiyama Bamboo Forest",
"location": {
"lat": 35.017209,
"lon": 135.672009
}
},
{
"id": "Kinkaku-ji",
"location": {
"lat": 35.039705,
"lon": 135.728898
}
}
],
"vehicles": [
{
"id": "v1",
"route": [
{
"arrival_time": "2023-01-01T12:00:00Z",
"cumulative_travel_duration": 0,
"duration": 300,
"end_time": "2023-01-01T12:05:00Z",
"start_time": "2023-01-01T12:00:00Z",
"stop": {
"id": "Fushimi Inari Taisha",
"location": {
"lat": 34.967146,
"lon": 135.772695
}
},
"travel_duration": 0
},
{
"arrival_time": "2023-01-01T12:15:56Z",
"cumulative_travel_distance": 3280,
"cumulative_travel_duration": 656,
"duration": 300,
"end_time": "2023-01-01T12:20:56Z",
"start_time": "2023-01-01T12:15:56Z",
"stop": {
"id": "Kiyomizu-dera",
"location": {
"lat": 34.994857,
"lon": 135.78506
}
},
"travel_distance": 3280,
"travel_duration": 656
},
{
"arrival_time": "2023-01-01T12:24:56Z",
"cumulative_travel_distance": 4481,
"cumulative_travel_duration": 896,
"duration": 300,
"end_time": "2023-01-01T12:29:56Z",
"start_time": "2023-01-01T12:24:56Z",
"stop": {
"id": "Gionmachi",
"location": {
"lat": 35.002457,
"lon": 135.775682
}
},
"travel_distance": 1201,
"travel_duration": 240
}
],
"route_duration": 1796,
"route_stops_duration": 900,
"route_travel_distance": 4481,
"route_travel_duration": 896
},
{
"id": "v2",
"route": [
{
"arrival_time": "2023-01-01T12:00:00Z",
"cumulative_travel_duration": 0,
"duration": 300,
"end_time": "2023-01-01T12:05:00Z",
"start_time": "2023-01-01T12:00:00Z",
"stop": {
"id": "Nijō Castle",
"location": {
"lat": 35.014239,
"lon": 135.748134
}
},
"travel_duration": 0
},
{
"arrival_time": "2023-01-01T12:10:55Z",
"cumulative_travel_distance": 1776,
"cumulative_travel_duration": 355,
"duration": 300,
"end_time": "2023-01-01T12:15:55Z",
"start_time": "2023-01-01T12:10:55Z",
"stop": {
"id": "Kyoto Imperial Palace",
"location": {
"lat": 35.025431,
"lon": 135.762057
}
},
"travel_distance": 1776,
"travel_duration": 355
}
],
"route_duration": 955,
"route_stops_duration": 600,
"route_travel_distance": 1776,
"route_travel_duration": 355
}
]
}
],
"statistics": {
"result": {
"custom": {
"activated_vehicles": 2,
"max_duration": 0.123,
"max_stops_in_vehicle": 3,
"max_travel_duration": 0.123,
"min_duration": 0.123,
"min_stops_in_vehicle": 2,
"min_travel_duration": 0.123,
"unplanned_stops": 2
},
"duration": 0.123,
"value": 0.123
},
"run": {
"duration": 0.123,
"iterations": 50
},
"schema": "v1"
},
"version": {
"sdk": "VERSION"
}
}