Custom data¶
Info
This feature is configurable via .json input, but it is targeted to be used
with code customization. It 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 |
|---|---|---|---|---|---|---|
custom_data |
No | any |
NA | input | {"custom_data": {"foo": "bar"}} |
➖ |
custom_data |
No | any |
NA | vehicle |
{"custom_data": {"foo": "bar"}} |
➖ |
custom_data |
No | any |
NA | stop |
{"custom_data": {"foo": "bar"}} |
➖ |
You can define custom_data on the input, vehicle, and stop. This is useful
when you want to add custom data that can be used for internal tracking or
defining a custom objective or custom
constraint. There is no restriction on the data type of
the custom_data, for it allows you to add fields outside of the features that
are offered out of the box.
When adding custom_data to the stop and/or vehicle, it will be marshaled to
the output stop and output vehicle,
respectively. This makes it easier to add metadata to the entities that is
preserved once the solution is obtained. In the case of stops, the data is
added regardless of the stop being planned or not.
Here is an example input defining custom data for stops and vehicles. A sample output obtained after solving the problem is also shown.
{
"stops": [
{
"id": "Fushimi Inari Taisha",
"location": { "lon": 135.772695, "lat": 34.967146 },
"custom_data": {
"foo": "bar",
"baz": 0
}
},
{
"id": "Kiyomizu-dera",
"location": { "lon": 135.78506, "lat": 34.994857 },
"custom_data": {
"foo": "bar",
"baz": 1
}
},
{
"id": "Nijō Castle",
"location": { "lon": 135.748134, "lat": 35.014239 },
"custom_data": {
"foo": "bar",
"baz": 2
}
},
{
"id": "Kyoto Imperial Palace",
"location": { "lon": 135.762057, "lat": 35.025431 },
"custom_data": {
"foo": "bar",
"baz": 3
}
},
{
"id": "Gionmachi",
"location": { "lon": 135.775682, "lat": 35.002457 },
"custom_data": {
"foo": "bar",
"roh": true
}
},
{
"id": "Kinkaku-ji",
"location": { "lon": 135.728898, "lat": 35.039705 },
"custom_data": {
"foo": "bar",
"roh": false
}
},
{
"id": "Arashiyama Bamboo Forest",
"location": { "lon": 135.672009, "lat": 35.017209 }
}
],
"vehicles": [
{
"id": "v1",
"start_location": { "lon": 135.672009, "lat": 35.017209 },
"speed": 20,
"custom_data": {
"lorem": "ipsum",
"dolor": "sit amet"
}
}
]
}
{
"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": 909.0466359667602,
"factor": 1,
"name": "vehicles_duration",
"value": 909.0466359667602
},
{
"factor": 1,
"name": "unplanned_penalty",
"value": 0
}
],
"value": 909.0466359667602
},
"unplanned": [],
"vehicles": [
{
"custom_data": {
"dolor": "sit amet",
"lorem": "ipsum"
},
"id": "v1",
"route": [
{
"cumulative_travel_duration": 0,
"stop": {
"id": "v1-start",
"location": {
"lat": 35.017209,
"lon": 135.672009
}
},
"travel_duration": 0
},
{
"cumulative_travel_duration": 0,
"stop": {
"id": "Arashiyama Bamboo Forest",
"location": {
"lat": 35.017209,
"lon": 135.672009
}
},
"travel_duration": 0
},
{
"cumulative_travel_distance": 5752,
"cumulative_travel_duration": 287,
"stop": {
"custom_data": {
"foo": "bar",
"roh": false
},
"id": "Kinkaku-ji",
"location": {
"lat": 35.039705,
"lon": 135.728898
}
},
"travel_distance": 5752,
"travel_duration": 287
},
{
"cumulative_travel_distance": 9081,
"cumulative_travel_duration": 454,
"stop": {
"custom_data": {
"baz": 2,
"foo": "bar"
},
"id": "Nijō Castle",
"location": {
"lat": 35.014239,
"lon": 135.748134
}
},
"travel_distance": 3329,
"travel_duration": 166
},
{
"cumulative_travel_distance": 10857,
"cumulative_travel_duration": 542,
"stop": {
"custom_data": {
"baz": 3,
"foo": "bar"
},
"id": "Kyoto Imperial Palace",
"location": {
"lat": 35.025431,
"lon": 135.762057
}
},
"travel_distance": 1776,
"travel_duration": 88
},
{
"cumulative_travel_distance": 13696,
"cumulative_travel_duration": 684,
"stop": {
"custom_data": {
"foo": "bar",
"roh": true
},
"id": "Gionmachi",
"location": {
"lat": 35.002457,
"lon": 135.775682
}
},
"travel_distance": 2839,
"travel_duration": 141
},
{
"cumulative_travel_distance": 14897,
"cumulative_travel_duration": 745,
"stop": {
"custom_data": {
"baz": 1,
"foo": "bar"
},
"id": "Kiyomizu-dera",
"location": {
"lat": 34.994857,
"lon": 135.78506
}
},
"travel_distance": 1201,
"travel_duration": 60
},
{
"cumulative_travel_distance": 18177,
"cumulative_travel_duration": 909,
"stop": {
"custom_data": {
"baz": 0,
"foo": "bar"
},
"id": "Fushimi Inari Taisha",
"location": {
"lat": 34.967146,
"lon": 135.772695
}
},
"travel_distance": 3280,
"travel_duration": 164
}
],
"route_duration": 909,
"route_travel_distance": 18177,
"route_travel_duration": 909
}
]
}
],
"statistics": {
"result": {
"custom": {
"activated_vehicles": 1,
"max_duration": 0.123,
"max_stops_in_vehicle": 7,
"max_travel_duration": 0.123,
"min_duration": 0.123,
"min_stops_in_vehicle": 7,
"min_travel_duration": 0.123,
"unplanned_stops": 0
},
"duration": 0.123,
"value": 0.123
},
"run": {
"duration": 0.123,
"iterations": 50
},
"schema": "v1"
},
"version": {
"sdk": "VERSION"
}
}