Error Index
This page lists errors produced by the solver.
E0xxx Error
Errors from E0xxx range are generic.
E0000
cannot deserialize problem
is returned when problem definition cannot be deserialized from the input stream.
E0001
cannot deserialize matrix
is returned when routing matrix definition cannot be deserialized from the input stream.
E0002
cannot create transport costs
is returned when problem cannot be matched within routing matrix data passed.
There are two options to consider, when specifying routing matrix data:
- time dependent VRP requires all matrices to have
profile
andtimestamp
properties to be se - time agnostic VRP requires
timestamp
property to be omitted,profile
property either set or skipped for all matrices
E0003
cannot find any solution
is returned when no solution is found. In this case, please submit a bug and share original
problem and routing matrix.
E0004
cannot read config
is returned when algorithm configuration cannot be created. To fix it, make sure that config has
a valid json schema and valid parameters.
E1xxx: Validation errors
Errors from E1xxx range are used by validation engine which checks logical correctness of the rich VRP definition.
E11xx: Jobs
These errors are related to plan.jobs
property definition.
E1100
duplicated job ids
error is returned when plan.jobs
has jobs with the same ids:
{
"plan": {
"jobs": [
{
"id": "job1",
/** omitted **/
},
{
/** Error: this id is already used by another job **/
"id": "job1",
/** omitted **/
}
/** omitted **/
]
}
}
Duplicated job ids are not allowed, so you need to remove all duplicates in order to fix the error.
E1101
invalid job task demand
error is returned when job has invalid demand: pickup
, delivery
, replacement
job types should
have demand specified on each job task, service
type should have no demand specified:
{
"id": "job1",
"deliveries": [
{
/** omitted **/
/** Error: delivery task should have demand set**/
"demand": null
}
],
"services": [
{
/** omitted **/
/** Error: service task should have no demand specified**/
"demand": [1]
}
]
}
To fix the error, make sure that each job task has proper demand.
E1102
invalid pickup and delivery demand
error code is returned when job has both pickups and deliveries, but the sum of
pickups demand does not match to the sum of deliveries demand:
{
"id": "job",
"pickups": [
{
"places": [/** omitted **/],
"demand": [1],
},
{
"places": [/** omitted **/],
"demand": [1]
}
],
"deliveries": [
{
"places": [/** omitted **/],
/** Error: should be 2 as the sum of pickups is 2 **/
"demand": [1]
}
]
}
E1103
invalid time windows in jobs
error is returned when there is a job which has invalid time windows, e.g.:
{
/** Error: end time is one hour earlier than start time**/
"times": [
[
"2020-07-04T12:00:00Z",
"2020-07-04T11:00:00Z"
]
]
}
Each time window must satisfy the following criteria:
- array of two strings each of these specifies date in RFC3339 format. The first is considered as start, the second - as end
- start date is earlier than end date
- if multiple time windows are specified, they must not intersect, e.g.:
{
/** Error: second time window intersects with first one: [13:00, 14:00] **/
"times": [
[
"2020-07-04T10:00:00Z",
"2020-07-04T14:00:00Z"
],
[
"2020-07-04T13:00:00Z",
"2020-07-04T17:00:00Z"
]
]
}
E1104
reserved job id is used
error is returned when there is a job which has reserved job id:
{
/** Error: 'departure' is reserved job id **/
"id": "departure"
}
To avoid confusion, the following ids are reserved: departure
, arrival
, break
, and reload
. These
ids are not allowed to be used within job.id
property.
E1105
empty job
error is returned when there is a job which has no or empty job tasks:
{
/** Error: at least one job task has to be defined **/
"id": "job1",
"pickups": null,
"deliveries": []
}
To fix the error, remove job from the plan or add at least one job task to it.
E1106
job has negative duration
error is returned when there is a job place with negative duration:
{
"id": "job",
"pickups": [
{
"places": [{
/** Error: negative duration does not make sense **/
"duration": -10,
"location": {/* omitted */}
}]
/* omitted */
}
]
}
To fix the error, make sure that all durations are non negative.
E1107
job has negative demand
error is returned when there is a job with negative demand in any of dimensions:
{
"id": "job",
"pickups": [
{
"places": [/* omitted */],
/** Error: negative demand is not allowed **/
"demand": [10, -1]
}
]
}
To fix the error, make sure that all demand values are non negative.
E12xx: Relations
These errors are related to plan.relations
property definition.
E1200
relation has job id which does not present in the plan
error is returned when plan.relations
has relations with
job ids, not present in plan.jobs
.
E1201
relation has vehicle id which does not present in the fleet
error is returned when plan.relations
has relations with
vehicle ids, not present in plan.fleet
.
E1202
relation has empty job id list
error is returned when plan.relations
has relations with empty jobs
list or it has
only reserved ids such as departure
, arrival
, break
, reload
.
E1203
strict or sequence relation has job with multiple places or time windows
error is returned when plan.relations
has
strict or sequence relation which refers one or many jobs with multiple places and/or time windows.
This is currently not allowed due to matching problem.
E1204
job is assigned to different vehicles in relations
error is returned when plan.relations
has a job assigned to several
relations with different vehicle ids:
{
"plan": {
"relations": [
{
"vehicleId": "vehicle_1",
"jobs": ["job1"],
/** omitted **/
},
{
/** Error: this job id is already assigned to another vehicle **/
"vehicleId": "vehicle_2",
"jobs": ["job1"],
/** omitted **/
}
]
}
}
To fix this, remove job id from one of relations.
E1205
relation has invalid shift index
error is returned when plan.relations
has shiftIndex
value and no corresponding
shift
is present in list of shifts.
E1206
relation has special job id which is not defined on vehicle shift
error is returned when plan.relations
has reserved
job id and corresponding property on fleet.vehicles.shifts
is not defined. Reserved ids are break
, reload
and arrival
.
E1207
some relations have incomplete job definitions
error is returned when plan.relations
has relation with incomplete
job definitions: e.g. job has two pickups, but in relation its job id is specified only once. To fix the issue, either
remove job ids completely or add missing ones.
E13xx: Vehicles
These errors are related to fleet.vehicles
property definition.
E1300
duplicated vehicle type ids
error is returned when fleet.vehicles
has vehicle types with the same typeId
:
{
"fleet": {
"vehicles": [
{
"typeId": "vehicle_1",
/** omitted **/
},
{
/** Error: this id is already used by another vehicle type **/
"typeId": "vehicle_1",
/** omitted **/
}
/** omitted **/
]
}
}
E1301
duplicated vehicle ids
error is returned when fleet.vehicles
has vehicle types with the same vehicleIds
:
{
"fleet": {
"vehicles": [
{
"typeId": "vehicle_1",
"vehicleIds": [
"vehicle_1_a",
"vehicle_1_b",
/** Error: vehicle_1_b is used second time **/
"vehicle_1_b"
],
/** omitted **/
},
{
"typeId": "vehicle_2",
"vehicleIds": [
/** Error: vehicle_1_a is used second time **/
"vehicle_1_a",
"vehicle_2_b"
],
/** omitted **/
}
/** omitted **/
]
}
}
Please note that vehicle id should be unique across all vehicle types.
E1302
invalid start or end times in vehicle shift
error is returned when vehicle has start/end shift times violating one of
time windows rules defined for jobs in E1103.
E1303
invalid break time windows in vehicle shift
error is returned when vehicle has invalid time window of a break. List of
break should follow time window rules defined for jobs in E1103. Additionally, break time should be inside vehicle shift
it is specified:
{
"start": {
"time": "2019-07-04T08:00:00Z",
/** omitted **/
},
"end": {
"time": "2019-07-04T15:00:00Z",
/** omitted **/
},
"breaks": [
{
/** Error: break is outside of vehicle shift times **/
"times": [
[
"2019-07-04T17:00:00Z",
"2019-07-04T18:00:00Z"
]
],
"duration": 3600.0
}
]
}
E1304
invalid reload time windows in vehicle shift
error is returned when vehicle has invalid time window of a reload. Reload
list should follow time window rules defined for jobs in E1003 except multiple reloads can have time window intersections.
Additionally, reload time should be inside vehicle shift it is specified:
{
"start": {
"time": "2019-07-04T08:00:00Z",
/** omitted **/
},
"end": {
"time": "2019-07-04T15:00:00Z",
/** omitted **/
},
"reloads": [
{
/** Error: reload is outside of vehicle shift times **/
"times": [
[
"2019-07-04T17:00:00Z",
"2019-07-04T18:00:00Z"
]
],
"location": { /** omitted **/ },
"duration": 3600.0
}
]
}
E1306
time and duration costs are zeros
is returned when both time and duration costs are zeros in vehicle type definition:
{
"typeId": "vehicle",
"vehicleIds": [
"vehicle_1"
],
"profile": {
"matrix": "car"
},
"costs": {
"fixed": 20.0,
/** Error: distance and time are zero **/
"distance": 0,
"time": 0
},
/** omitted **/
}
You can fix the error by defining a small value (e.g. 0.0000001) for duration or time costs.
E1307
time offset interval for break is used with departure rescheduling
is returned when time offset interval is specified for break,
but start.latest
is not set equal to start.earliest
in the shift.
{
"start": {
"earliest": "2019-07-04T09:00:00Z",
/** Error: need to set latest to "2019-07-04T09:00:00Z" explicitely **/
"location": { "lat": 52.5316, "lng": 13.3884 }
},
"breaks": [{
/** Note: offset time is used here **/
"time": [3600, 4000],
"places": [{ "duration": 1800 } ]
}]
}
Alternatively, you can switch to time window definition and keep start.latest
property as you wish.
E1308
invalid vehicle reload resource
is returned when:
fleet.resources
has vehicle reloads with the sameid
- required vehicle reload is used with resource id, which is not specified in
fleet.resources
E15xx: Routing profiles
These errors are related to routing locations and fleet.profiles
property definitions.
E1500
duplicate profile names
error is returned when fleet.profiles
has more than one profile with the same name:
{
"profiles": [
{
"name": "vehicle_profile",
"type": "car"
},
{
"name": "vehicle_profile",
"type": "truck"
}
]
}
To fix the issue, remove all duplicates.
E1501
empty profile collection
error is returned when fleet.profiles
is empty:
{
"profiles": []
}
E1502
mixing different location types
error is returned when problem contains locations in different formats. In order to
fix the issue, change the problem definition to use one specific location type: index reference or geocoordinate.
E1503
location indices requires routing matrix to be specified
is returned when location indices are used, but no
routing matrix provided.
E1504
amount of locations does not match matrix dimension
is returned when:
- location indices are used and max index is greater than matrix size
- amount of total locations is higher than matrix size
Check locations in problem definition and matrix size.
E1505
unknown matrix profile name in vehicle or vicinity clustering profile
is returned when vehicle has in fleet.vehicles.profile.matrix
or plan.clustering.profile
value which is not specified in fleet.profiles
collection. To fix issue, either change
value to one specified or add a corresponding profile in profiles collection.
E16xx: Objectives
These errors are related to objectives
property definition.
E1600
an empty objective specified
error is returned when objective property is present in the problem, but no single
objective is set, e.g.:
{
"objectives": []
}
objectives
property is optional, just remove it to fix the problem and use default objectives.
E1601
duplicate objective specified
error is returned when objective of specific type specified more than once:
{
"objectives": [
{
"type": "minimize-unassigned"
},
{
"type": "minimize-unassigned"
},
{
"type": "minimize-cost"
}
]
}
To fix this issue, just remove one, e.g. minimize-unassigned
.
E1602
missing one of cost objectives
error is returned when no cost objective specified:
{
"objectives": [
{
"type": "minimize-unassigned"
}
]
}
To solve it, specify one of the cost objectives: minimize-cost
, minimize-distance
or minimize-duration
.
E1603
redundant value objective
error is returned when objectives definition is overridden with maximize-value
, but
there is no jobs with non-zero value specified. To fix the issue, specify at least one non-zero valued job or simply
delete 'maximize-value' objective.
E1604
redundant tour order objective
error is returned when objectives definition is overridden with tour-order
, but
there is no jobs with non-zero order specified. To fix the issue, specify at least one job with non-zero order or simply
delete 'tour-order' objective.
E1605
value or order of a job should be greater than zero
error is returned when job's order or value is less than 1. To
fix the issue, make sure that value or order of all jobs are greater than zero.
E1606
multiple cost objectives specified
error is returned when more than one cost objective is specified. To fix the issue,
keep only one cost objective in the list of objectives.
E1607
missing value objective
error is returned when plan has jobs with value set, but user defined objective doesn't
include the maximize-value
objective.