VehicleRoutingProblem output data types for schema version One

Describes the output data types containing the results from a vehicle routing problem analysis when using the VehicleRoutingProblemSchemaVersion.One schema version.

UnassignedStops

This provides access to the orders that couldn't be visited by any routes. You can also determine why the orders couldn't be visited and 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:

FieldDescriptionData type

ObjectID

The object ID of the feature.

ObjectID

StopType

Specifies 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.

Short

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 whether the Name field value refers to a depot, an order, or a break.

Text

ViolatedConstraints

This field contains a summary of violated constraints and is set after a solve operation. If a constraint is violated, a combination of one or more of the violations listed below could be assigned to the field.

Dive-in:

The coded value that represents the text description is shown in the list below in parentheses. Notice that the coded values are part of a geometric sequence that increases by doubling the last value. This allows various combinations of violations to be coded. For instance, the combination of Capacities exceeded (2) and Hard route zone (128) is coded as 130 (2 +128).

  • MaxOrderCount exceeded (1)—The preassigned orders cannot 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 route's MaxOrderCount field value.
  • Capacities exceeded (2)—The preassigned orders cannot be assigned to the route since assigning the orders would exceed the total route capacity as specified by the route's Capacities field value.
  • 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 route's MaxTotalTime field value.
  • 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 route's MaxTotalTravelTime field value.
  • 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 route's MaxTotalDistance field value.
  • Hard time window (32)—There is a hard time window violation on the start depot, end depot, or break associated with the route.
  • Unmatched specialty (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 order pair's MaxTransitTime field value.
  • Order pair violation (512)—An order belongs to an order pair and cannot be assigned to the preassigned route.
  • Unreachable (1024)—A preassigned order is located on a network element 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 cannot be inserted anywhere without introducing other violations.
  • Cannot insert required renewal (4096)—A route exceeds its capacity and needs to visit a route renewal; however, the associated route renewal has a null sequence value in the presence of preassigned orders and cannot be inserted anywhere without introducing other violations.
  • MaxTravelTimeBetweenBreaks exceeded (8192)—The solver was unable to insert a break within the time specified by the break's MaxTravelTimeBetweenBreaks field. This is often caused by preassigning a sequence to a break such that it cannot be reached within the maximum travel time.

  • Break MaxCumulWorkTime exceeded (16384)—The solver was unable to insert a break within the time specified by the break's MaxCumulWorkTime field. This is often caused by preassigning a sequence to a break such that it cannot be reached within the maximum work time.
  • InboundArriveTime or OutboundDepartTime order violation (32768)—The order couldn't be serviced within the inbound arrive time or outbound depart time constraints. This violation occurs when all the routes' LatestStartTime field values precede the InboundArriveTime values or none of the routes can reach a depot before the order's OutboundDepartTime value.
  • Cannot anchor first/last (65536)—The order has an Anchor first or Anchor last assignment rule, but the solver was not able to honor this constraint. This violation occurs when the number of Anchor first orders or the number of Anchor last orders is greater than the number of available routes.

Long

Long

Status

Specifies the status of the point with respect to its location on the network and the outcome of the analysis. The possible values are the following:

  • 0 (OK)—The point was located on the network.
  • 1 (Not Located)—The point was not located on the network and was not included in the analysis.
  • 2 (Network element not located)—The network element identified by the point's network location fields can't be found. This can occur when a network element where the point should be was deleted, and the network location was not recalculated.
  • 3 (Element not traversable)—The network element that the point is located on is not traversable. This can occur when the element is restricted by a restriction attribute.
  • 4 (Invalid Field Values)—Field values fall outside a range or coded-value domain. For example, a negative number exists where positive numbers are required.
  • 5 (Not Reached)—The point can't be reached by the solver. The point may be on a separate, disconnected area of the network from the other inputs, or barriers or restrictions prevent travel to or from the point.
  • 6 (Time window violation)—The point could not be reached within the designated time windows. This status only applies to network analysis types that support time windows.
  • 7 (Not located on closest)—The closest network location to the point is not traversable because of a restriction or barrier, so the point has been located on the closest traversable network feature instead.

Long

ORIG_FID

The ObjectID value of the input order, depot, or break.

This field is not always reliable for joins. This field is 0 for inputs added to the analysis using the insertCursor method. Values may not be unique if multiple feature classes were loaded using the load method.

Long

Stops

This 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:

FieldDescriptionData type

ObjectID

The object ID of the feature.

ObjectID

Name

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

Text

StopType

Specifies 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.

Short

PickupQuantities

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

The units for the value of this field aren't stored. Interpret the units according to the way you specified the Capacities 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. Interpret the units according to the way you specified the Capacities 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.

This field corresponds to the Name field in the output Routes table.

Text

Sequence

The relative sequence the assigned route visits the stop.

Long

FromPrevTravelTime

The elapsed travel time from the 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

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

Long

DepartCurbApproach

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

Long

ArriveTime

The time of day 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 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 the route arrives at the stop. This value is in coordinated universal time (UTC).

Date

DepartTimeUTC

The time of day the route departs from the stop. This value is 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 value of the input order, depot, or break.

This field is not always reliable for joins. This field is 0 for inputs added to the analysis using the insertCursor method. Values may not be unique if multiple feature classes were loaded using the load method.

Long

Routes

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

The data type supports the following fields:

FieldDescriptionData type

ObjectID

The object ID of the feature.

ObjectID

Name

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

Text

ViolatedConstraints

This field contains a summary of violated constraints and is set after a solve operation. If a constraint is violated, a combination of one or more of the violations listed below could be assigned to the field.

Dive-in:

The coded value that represents the text description is shown in the list below in parentheses. Notice that the coded values are part of a geometric sequence that increases by doubling the last value. This allows various combinations of violations to be coded. For instance, the combination of Capacities exceeded (2) and Hard route zone (128) is coded as 130 (2 +128).

  • MaxOrderCount exceeded (1)—The preassigned orders cannot 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 route's MaxOrderCount field value.
  • Capacities exceeded (2)—The preassigned orders cannot be assigned to the route since assigning the orders would exceed the total route capacity as specified by the route's Capacities field value.
  • 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 route's MaxTotalTime field value.
  • 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 route's MaxTotalTravelTime field value.
  • 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 route's MaxTotalDistance field value.
  • Hard time window (32)—There is a hard time window violation on the start depot, end depot, or break associated with the route.
  • Unmatched specialty (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 order pair's MaxTransitTime field value.
  • Order pair violation (512)—An order belongs to an order pair and cannot be assigned to the preassigned route.
  • Unreachable (1024)—A preassigned order is located on a network element 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 cannot be inserted anywhere without introducing other violations.
  • Cannot insert required renewal (4096)—A route exceeds its capacity and needs to visit a route renewal; however, the associated route renewal has a null sequence value in the presence of preassigned orders and cannot be inserted anywhere without introducing other violations.
  • MaxTravelTimeBetweenBreaks exceeded (8192)—The solver was unable to insert a break within the time specified by the break's MaxTravelTimeBetweenBreaks field. This is often caused by preassigning a sequence to a break such that it cannot be reached within the maximum travel time.

  • Break MaxCumulWorkTime exceeded (16384)—The solver was unable to insert a break within the time specified by the break's MaxCumulWorkTime field. This is often caused by preassigning a sequence to a break such that it cannot be reached within the maximum work time.
  • InboundArriveTime or OutboundDepartTime order violation (32768)—The order couldn't be serviced within the inbound arrive time or outbound depart time constraints. This violation occurs when all the routes' LatestStartTime field values precede the InboundArriveTime values or none of the routes can reach a depot before the order's OutboundDepartTime value.
  • Cannot anchor first/last (65536)—The order has an Anchor first or Anchor last assignment rule, but the solver was not able to honor this constraint. This violation occurs when the number of Anchor first orders or the number of Anchor last orders is greater than the number of available routes.

Long

Long

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.

Long

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

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

The data type supports the following fields:

FieldDescriptionData type

ObjectID

The object ID of the feature.

ObjectID

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.

Text

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, review the SubItemType field value.

Type can be used, for example, to assign an icon for 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 the application.

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

Maneuver Types

  • 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
  • 27: Pedestrian ramp
  • 28: Elevator
  • 29: Escalator
  • 30: Stairs
  • 31: Door passage

Directions String Types

  • 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 field refers to the values from the Maneuver Types table.
  • If the SubItemType value is 2, the Type field refers to the values from the Directions String Types table.
  • If the SubItemType value is 3, the Type field refers to the values from the Directions String Types table.

Short

Text

A text description of the travel directions.

Text

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.

Float

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 value is 0 for the directions text at the start of the route.

Float