Skills
This example demonstrates how to use the skills feature with jobs and vehicles. In general, the skills feature is useful for locking specific jobs to specific vehicles.
Complete problem json
{
"plan": {
"jobs": [
{
"id": "job1",
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.52599,
"lng": 13.45413
},
"duration": 300.0
}
],
"demand": [
1
]
}
],
"skills": {
"allOf": [
"fridge"
],
"noneOf": [
"washing_machine"
]
}
},
{
"id": "job2",
"deliveries": [
{
"places": [
{
"location": {
"lat": 52.5225,
"lng": 13.4095
},
"duration": 240.0
}
],
"demand": [
1
]
}
],
"skills": {
"allOf": [
"handyman"
]
}
}
]
},
"fleet": {
"vehicles": [
{
"typeId": "vehicle_with_fridge",
"vehicleIds": [
"vehicle_with_fridge_1"
],
"profile": {
"matrix": "normal_car"
},
"costs": {
"fixed": 22.0,
"distance": 0.0002,
"time": 0.004806
},
"shifts": [
{
"start": {
"earliest": "2019-07-04T09:00:00Z",
"location": {
"lat": 52.5316,
"lng": 13.3884
}
},
"end": {
"latest": "2019-07-04T18:00:00Z",
"location": {
"lat": 52.5316,
"lng": 13.3884
}
}
}
],
"capacity": [
2
],
"skills": [
"fridge"
]
},
{
"typeId": "vehicle_with_handyman",
"vehicleIds": [
"vehicle_with_handyman_1"
],
"profile": {
"matrix": "normal_car"
},
"costs": {
"fixed": 22.0,
"distance": 0.0002,
"time": 0.004806
},
"shifts": [
{
"start": {
"earliest": "2019-07-04T09:00:00Z",
"location": {
"lat": 52.5316,
"lng": 13.3884
}
},
"end": {
"latest": "2019-07-04T18:00:00Z",
"location": {
"lat": 52.5316,
"lng": 13.3884
}
}
}
],
"capacity": [
2
],
"skills": [
"handyman"
]
}
],
"profiles": [
{
"name": "normal_car"
}
]
}
}
Complete solution json
{
"statistic": {
"cost": 64.31331800000001,
"distance": 16188,
"duration": 3553,
"times": {
"driving": 3013,
"serving": 540,
"waiting": 0,
"break": 0
}
},
"tours": [
{
"vehicleId": "vehicle_with_handyman_1",
"typeId": "vehicle_with_handyman",
"shiftIndex": 0,
"stops": [
{
"location": {
"lat": 52.5316,
"lng": 13.3884
},
"time": {
"arrival": "2019-07-04T09:00:00Z",
"departure": "2019-07-04T09:00:00Z"
},
"distance": 0,
"load": [
1
],
"activities": [
{
"jobId": "departure",
"type": "departure"
}
]
},
{
"location": {
"lat": 52.5225,
"lng": 13.4095
},
"time": {
"arrival": "2019-07-04T09:08:28Z",
"departure": "2019-07-04T09:12:28Z"
},
"distance": 2470,
"load": [
0
],
"activities": [
{
"jobId": "job2",
"type": "delivery"
}
]
},
{
"location": {
"lat": 52.5316,
"lng": 13.3884
},
"time": {
"arrival": "2019-07-04T09:22:06Z",
"departure": "2019-07-04T09:22:06Z"
},
"distance": 5138,
"load": [
0
],
"activities": [
{
"jobId": "arrival",
"type": "arrival"
}
]
}
],
"statistic": {
"cost": 29.400356000000002,
"distance": 5138,
"duration": 1326,
"times": {
"driving": 1086,
"serving": 240,
"waiting": 0,
"break": 0
}
}
},
{
"vehicleId": "vehicle_with_fridge_1",
"typeId": "vehicle_with_fridge",
"shiftIndex": 0,
"stops": [
{
"location": {
"lat": 52.5316,
"lng": 13.3884
},
"time": {
"arrival": "2019-07-04T09:00:00Z",
"departure": "2019-07-04T09:00:00Z"
},
"distance": 0,
"load": [
1
],
"activities": [
{
"jobId": "departure",
"type": "departure"
}
]
},
{
"location": {
"lat": 52.52599,
"lng": 13.45413
},
"time": {
"arrival": "2019-07-04T09:15:12Z",
"departure": "2019-07-04T09:20:12Z"
},
"distance": 5112,
"load": [
0
],
"activities": [
{
"jobId": "job1",
"type": "delivery"
}
]
},
{
"location": {
"lat": 52.5316,
"lng": 13.3884
},
"time": {
"arrival": "2019-07-04T09:37:07Z",
"departure": "2019-07-04T09:37:07Z"
},
"distance": 11050,
"load": [
0
],
"activities": [
{
"jobId": "arrival",
"type": "arrival"
}
]
}
],
"statistic": {
"cost": 34.912962,
"distance": 11050,
"duration": 2227,
"times": {
"driving": 1927,
"serving": 300,
"waiting": 0,
"break": 0
}
}
}
],
"unassigned": []
}