Skip To Content

VehicleRoutingProblem output data types

Describes the output data types containing the results from a vehicle routing problem analysis.

UnassignedStops

Provides access to the orders that couldn't be visited by any routes. You can also determine why the order couldn't be visited and can make the necessary changes to correct the problem.

Note:

When the returnStopShapes property of the analysis object is set to True, this data type is a feature class. Otherwise it is a table.

The data type supports the following fields:

Field

Description

Data type

StopType

Indicates whether the stop represents a depot, an order, or a break. The field value is an integer that can be interpreted in the following ways:

  • 0: The stop is an order.
  • 1: The stop is a depot.
  • 2: The stop is a break.

Integer

Name

The name of the stop. The value of this field is the same as the Name field from input orders, depots, or breaks. You can use the StopType field to determine if the Name field value refers to a depot, an order or a break.

Text

ViolationConstraints

Contains a summary of constraints that are violated when assigning the order to any of the routes. The analysis assigns a unique integer for each violated constraint. The ViolatedConstraints field value is an integer representing the sum of all the constraints that are violated by the route. To determine the individual constraints that are violated, you can treat the field value as a bit mask and derive the values for the individual bits. For instance, the combination of Capacities exceeded (2) and Hard route zone (128) is coded as 130 (2 +128).

If an order causes a constraint to be violated, a combination of one or more of the violations listed below could be assigned to the ViolatedConstraints field:

  • MaxOrderCount exceeded (1): The preassigned orders can't be assigned to the route, since assigning the orders would exceed the maximum number of orders that can be assigned to the route as specified by the MaxOrderCount field of the input routes.
  • Capacities exceeded (2): The preassigned orders can't be assigned to the route, since assigning the orders would exceed the total route capacity as specified by the Capacities field of the input routes.
  • MaxTotalTime exceeded (4): The travel time from the start depot to the end depot plus the service and wait times at both depots and any break exceeds the total time for the route as specified by the MaxTotalTime field of the input routes.
  • MaxTotalTravelTime exceeded (8): The travel time from the start depot to the end depot exceeds the total travel time for the route as specified by the MaxTotalTravelTime field of the input routes.
  • MaxTotalDistance exceeded (16): The travel distance from the start depot to the end depot exceeds the total travel distance for the route as specified by the MaxTotalDistance field of the input routes.
  • Hard time window (32): There is a hard time window violation on the start depot, end depot, or break associated with the route.
  • Unmatched speciality (64): The specialties required by an order are not found on the target route.
  • Hard route zone (128): An order that was preassigned to the route does not fall within a hard route zone.
  • Order pair MaxTransitTime exceeded (256): There is an order pair preassigned to the route, and assigning the orders in the order pair would exceed the maximum transit time for the order pair as specified by the MaxTransitTime field on the input order pairs.
  • Order pair violation (512): An order belongs to an order pair and can't be assigned to the preassigned route.
  • Unreachable (1024): A preassigned order is located on a street that cannot be reached by the route.
  • Cannot insert required break (2048): A break for the route has a null sequence value in the presence of preassigned orders, and the break can't be inserted anywhere without introducing other violations.
  • MaxTravelTimeBetweenBreaks exceeded (8192): The solver was unable to insert a break within the time specified by the MaxTravelTimeBetweenBreaks field on the input breaks. This is often caused by preassigning a sequence to a break such that it can't be reached within the maximum travel time.
  • Break MaxCumulWorkTime exceeded (16384): The service was unable to insert a break within the time specified by the MaxCumulWorkTime field on input breaks. This is often caused by preassigning a sequence to a break such that it can't be reached within the maximum work time.
Dive-in:

The ViolatedConstraints value of an un-routed order may or may not describe all its violations. If the violation is severe enough to immediately exclude the order from further consideration, the analysis does so, which prevents any other violations from being discovered for that order. If a violation is encountered that doesn't automatically stop a solution from being generated, the violation is noted in ViolatedConstraints, and the solver continues to consider the order. Any further violations like these are added to the ViolatedConstraints field until either (a) the service finds a violation that prematurely stops the solve process for that particular order, or (b) the service finds an overall solution to the problem.

Integer

Status

Indicates the status of the stop in the solution returned by the service. The attribute value is an integer that can be interpreted in the following ways:

  • 0: The stop was successfully evaluated.
  • 3: The street on which the stop is located is not traversable. This can occur if the street is restricted by a restriction specified by the restrictions parameter.
  • 4: The attribute values of the stop fall outside the coded value or range domains expected by the service. For example, a negative number may exist where positive numbers are required.
  • 5: The stop can't be arrived at by the service.

Integer

Stops

Provides information about stops made at depots, orders, and breaks. The information includes which routes make the stops, the arrival and departure times, and the stop sequence.

Note:

When the returnStopShapes property of the analysis object is set to True, this data type is a feature class. Otherwise it is a table.

The data type supports the following fields:

Field name

Description

Data type

Name

The name of the stop. The value of this field is the same as the Name field from input orders, depots, or breaks. You can use the StopType field to determine if the Name field value refers to a depot, an order or a break.

Text

StopType

Indicates whether the stop represents a depot, an order, or a break. The field value is an integer that can be interpreted in the following ways:

  • 0: The stop is an order.
  • 1: The stop is a depot.
  • 2: The stop is a break.

Integer

PickupQuantities

The amount of cargo or number of people to be picked up from a stop. If multiple dimensions are delivered to a stop, each quantity is separated by a space.

The units for the value of this field aren't stored. You should interpret the units according to the way in which you specified the Quantities field on the input routes and the PickupQuantities and DeliveryQuantities fields on the input orders.

Text

DeliveryQuantities

The amount of cargo or number of people to be delivered to a stop. If multiple dimensions are delivered to a stop, each quantity is separated by a space.

The units for the value of this field aren't stored. You should interpret the units according to the way in which you specified the Quantities field on the input routes and the PickupQuantities and DeliveryQuantities fields on the input orders.

Text

RouteName

The name of the route to which the stop is assigned.

Text

Sequence

The relative sequence in which the assigned route visits the stop.

Long

FromPrevTravelTime

The elapsed travel time from the route's previous stop to the current stop.

The value is in the units specified by the timeUnits property of the analysis object.

Double

FromPrevDistance

The distance along the route from the previous stop to the current stop.

The value is in the units specified by the distanceUnits property of the analysis object.

Double

ArriveCurbApproach

Indicates the side of the vehicle the curb is on when arriving at the stop. A value of 1 means the right side of vehicle; 2 indicates the left side.

Long

DepartCurbApproach

Indicates the side of the vehicle the curb is on when departing from the stop. A value of 1 means the right side of vehicle; 2 indicates the left side.

Long

ArriveTime

The time of day when the route arrives at the stop. The time-of-day value for this field is in the time zone in which the stop is located.

Date

DepartTime

The time of day when the route departs from the stop. The time-of-day value for this field is in the time zone in which the stop is located.

Date

ArriveTimeUTC

The time of day when the route arrives at the stop. This value is given in Coordinated Universal Time (UTC).

Date

DepartTimeUTC

The time of day when the route departs from the stop. This value is given in Coordinated Universal Time (UTC).

Date

WaitTime

The wait time or layover at the stop. For example, a wait time is incurred when a route must wait at an order for a time window to open.

The value is in the units specified by the timeUnits property of the analysis object.

Double

ViolationTime

The amount of time elapsed from the end of the stop's time window to the arrival of the route vehicle.

The value is in the units specified by the timeUnits property of the analysis object.

Double

ORIG_FID

The ObjectID of the input order, depot, or break. This field can be used to join attributes from input features.

Long

Routes

Provides access to the drivers, vehicles, and route paths of a vehicle routing problem analysis.

The data type supports the following fields:

Field name

Description

Data type

Name

The name of the route. The values for this field are copied from the Name field on the input routes.

Text

ViolationConstraints

Contains a summary of constraints that are violated when assigning the order to any of the routes. The analysis assigns a unique integer for each violated constraint. The ViolatedConstraints field value is an integer representing the sum of all the constraints that are violated by the route. To determine the individual constraints that are violated, you can treat the field value as a bit mask and derive the values for the individual bits. For instance, the combination of Capacities exceeded (2) and Hard route zone (128) is coded as 130 (2 +128).

If a route causes a constraint to be violated, a combination of one or more of the violations listed below could be assigned to the ViolatedConstraints field:

  • MaxOrderCount exceeded (1): The preassigned orders can't be assigned to the route. since assigning the orders would exceed the maximum number of orders that can be assigned to the route as specified by the MaxOrderCount field on the input routes.
  • Capacities exceeded (2): The preassigned orders can't be assigned to the route, since assigning the orders would exceed the total route capacity as specified by the Capacities field on the input routes.
  • MaxTotalTime exceeded (4): The travel time from the start depot to the end depot plus the service and wait times at both depots and any break exceeds the total time for the route as specified by the MaxTotalTime field on the input routes.
  • MaxTotalTravelTime exceeded (8): The travel time from the start depot to the end depot exceeds the total travel time for the route as specified by the MaxTotalTravelTime field on the input routes.
  • MaxTotalDistance exceeded (16): The travel distance from the start depot to the end depot exceeds the total travel distance for the route as specified by the MaxTotalDistance field on the input routes.
  • Hard time window (32): There is a hard time window violation on the start depot, end depot, or break associated with the route.
  • Unmatched speciality (64): The specialties required by an order are not found on the target route.
  • Hard route zone (128): An order that was preassigned to the route does not fall within a hard route zone.
  • Order pair MaxTransitTime exceeded (256): There is an order pair preassigned to the route, and assigning the orders in the order pair would exceed the maximum transit time for the order pair as specified by the MaxTransitTime field on the input order pairs.
  • Order pair violation (512): An order belongs to an order pair and can't be assigned to the preassigned route.
  • Unreachable (1024): A preassigned order is located on a street that cannot be reached by the route.
  • Cannot insert required break (2048): A break for the route has a null sequence value in the presence of preassigned orders, and the break can't be inserted anywhere without introducing other violations.
  • MaxTravelTimeBetweenBreaks exceeded (8192): The solver was unable to insert a break within the time specified by the MaxTravelTimeBetweenBreaks field on the input breaks. This is often caused by preassigning a sequence to a break such that it can't be reached within the maximum travel time.
  • Break MaxCumulWorkTime exceeded (16384): The service was unable to insert a break within the time specified by the MaxCumulWorkTime field on the input breaks. This is often caused by preassigning a sequence to a break such that it can't be reached within the maximum work time.

Integer

OrderCount

The number of orders assigned to the route.

Long

TotalCost

The total operating cost of the route, which is the sum of the following field values: FixedCost, RegularTimeCost, OvertimeCost, and DistanceCost.

Double

RegularTimeCost

The cost of regular work time, excluding any unpaid breaks.

Double

OvertimeCost

The cost of overtime work, excluding any unpaid breaks.

Double

DistanceCost

The distance cost component obtained by multiplying the TotalDistance and CostPerUnitDistance field values.

Double

TotalTime

The total route duration. This includes travel times as well as service and wait times at orders, depots, and breaks. The TotalTime value is the sum of the following attribute fields:

  • StartDepotServiceTime
  • EndDepotServiceTime
  • TotalOrderServiceTime
  • TotalBreakServiceTime
  • TotalRenewalServiceTime
  • TotalWaitTime
  • TotalTravelTime

The value is in the units specified by the timeUnits property of the analysis object.

Double

TotalOrderServiceTime

The total service time spent at all orders on the route.

The value is in the units specified by the timeUnits property of the analysis object.

Double

TotalBreakServiceTime

The total service time spent at all breaks on the route.

The value is in the units specified by the timeUnits property of the analysis object.

Double

TotalTravelTime

The total travel time for the route.

The value is in the units specified by the timeUnits property of the analysis object.

Double

TotalDistance

The total travel distance for the route.

The value is in the units specified by the distanceUnits property of the analysis object.

Double

StartTime

The starting time of the route. The route may start before the beginning of its start depot's time window, in which case there is a wait time at the starting depot. The time-of-day value for this attribute is in the time zone in which the starting depot is located.

Date

EndTime

The ending time of the route. The route ends upon completion of service at the ending depot. The time-of-day value for this attribute is in the time zone in which the ending depot is located.

Date

StartTimeUTC

The start time of the route in Coordinated Universal Time (UTC).

Date

EndTimeUTC

The end time of the route in Coordinated Universal Time (UTC).

Date

TotalWaitTime

The total wait time at all orders, depots, and breaks on the route.

The value is in the units specified by the timeUnits property of the analysis object.

Double

TotalViolationTime

The total violation time at all orders and breaks on the route.

The value is in the units specified by the timeUnits property of the analysis object.

Double

RenewalCount

For a route with renewals, this is equal to the number of visits to depots for the purpose of renewing a vehicle, that is, loading or unloading a vehicle.

Integer

TotalRenewalServiceTime

For a route with renewals, this is the total service time spent at all renewal visits on the route.

The value is in the units specified by the timeUnits property of the analysis object.

Double

Directions

Provides access to the turn-by-turn directions for each resulting route.

The data type supports the following fields:

Field

Description

Data type

RouteName

The name of the route to which the driving action applies. This value is the same as the Name field of the output routes.

String

ArriveTime

The time of day to initiate the given driving action. If the route spans multiple days, the date and time of day are displayed.

Date

Type

The type of maneuver that the directions feature represents or the type of the directions text. To determine whether Type refers to a maneuver type or a directions string type, you need to check the value of the SubItemType field.

Type can be used, for example, to assign an icon for a direction text based on the maneuver type, or it can use a formatting style based on the directions string type when displaying the driving directions in your application.

The Type value is an integer from the Maneuver Types or Directions String Types table listed below.

Maneuver Types

ValueDescription

0

Unknown

1

Arrive at Stop

2

Go straight

3

Bear left

4

Bear right

5

Turn left

6

Turn right

7

Make sharp left

8

Make sharp right

9

Make U-turn

10

Take ferry

11

Take roundabout

12

Merge to highway

13

Exit highway

14

Go on another highway

15

At fork keep center

16

At fork keep left

17

At fork keep right

18

Depart stop

19

Trip planning item

20

End of ferry

21

Ramp right

22

Ramp left

23

Turn left and immediately turn right

24

Turn right and immediately turn left

25

Turn right and immediately turn right

26

Turn left and immediately turn left

Directions String Types

ValueDescription

0

General directions string type

1

Depart directions string type

2

Arrive directions string type

3

Length directions string type

4

Time directions string type

5

Time summary directions string type

6

Time Window directions string type

7

Violation Time directions string type

8

Wait Time directions string type

9

Service Time directions string type

10

Estimated Arrival Time directions string type

11

Cumulative Length directions string type

12

Street name directions string type

13

Alternate street name directions string type

14

Sign branch information directions string type

15

Sign toward information directions string type

16

Cross street name directions string type

17

Sign exit number directions string type

Short

SubItemType

Specifies whether the Type field refers to an integer from the Directions String Types table or the Maneuver Types table.

  • If the SubItemType value is 1, the Type refers to the values from the Maneuver Types table.
  • If the SubItemType value is 2, the Type refers to the values from the Directions String Types table.

Short

Text

A text description of the driving directions.

String

ElaspsedTime

The time elapsed in minutes from when the current driving direction starts until the next one starts, or until the route ends for the last driving direction.

Double

DriveDistance

The distance from where the current driving direction occurs to where the next one occurs, or to where the route ends for the last driving direction.

The value is in the units specified by the directionsDistanceUnits property of the analysis object.

This value is zero for driving directions that occur at the same location where the next one begins. For example, the DriveDistance is 0 for the directions text at the start of the route.

Double