Last mile delivery analysis layer

The Last Mile Delivery solver is a use case-specific Vehicle Routing Problem (VRP) algorithm designed for a fleet of vehicles that are delivering packages to the final customers. For example, it can be used for a single distribution center or store delivering to the final customer locations which can be as dense as delivering to a few customers on most streets most streets but is not intended to visit every house on every street.

Delivery companies determine the orders (package delivery location) that are to be serviced by each route (delivery vehicle and driver) and the sequence the orders will be visited. The goal is to best service the orders by producing geographically clustered routes so the drivers can easily deliver to everyone and minimize the overall operating cost for the fleet of vehicles.

The Network Analyst Route solver finds the best route for a single vehicle to visit many stops. The Last Mile Delivery solver and the Vehicle Routing Problem solver find the best routes for a fleet of vehicles to service many orders. The Vehicle Routing Problem solver has lots of flexibility and can model many different constraints, but the algorithm is also limited by this flexibility. The Last Mile Delivery solver supports a subset of the constraints, but for those it supports, it provides a better quality and performant algorithm.

Learn more about creating a network analysis layer

Learn more about the Last Mile Delivery solver

Orders

The Orders feature class stores the orders that are part of a last mile delivery analysis layer. These are the final customer locations where the routes deliver the packages or initial customer location where they are picking up packages for shipment.

If orders have items to be picked up or delivered, the items can have one or many capacities, which can be based on any form or combination of measurements, such as weight, volume, or number of units. Some orders, such as inspection visits, may not have deliveries or pickups associated with them.

An order can have a service time, which is the time needed to complete the work at the order. For example, a delivery truck may require a 20-minute service time to unload a piece of furniture and move it inside a home. The service time can be the same for all orders, or it can be unique for each order.

Specialties can be associated with an order. That is, an order may require a technician with a certain skill set (for example, an electrician) or a vehicle with certain capabilities (such as a power lift). Only a route that has the same specialty will be assigned to the order.

Orders: Input fields

The input fields for the Orders feature class are described in the following table:

Input fieldDescriptionData type
ObjectID

The system-managed ID field. This cannot be a null value.

Object ID

Shape

The geometry field indicating the geographic location of the network analysis object.

Geometry

Name

The name of the network analysis object. The name must be unique. Order names are case sensitive and cannot be empty, even if the order is excluded from the solve operation. This field acts as a primary key and is used as a foreign key to refer to orders in the Orders Specialties table.

Text

ServiceTime

The amount of time that will be spent at the network location when the route visits it; that is, the impedance value for the network location. A zero or null value indicates that the network location requires no service time. The unit for this field value is specified by the Time Field Units property of the analysis layer.

Double

TimeWindowStart

The beginning time of the time window for the network location. This field can contain a null value; a null value indicates no beginning time. A time window only states when a vehicle can arrive at an order; it doesn't state when the service time must be completed. To account for service time and departure before the time window ends, subtract the ServiceTime value from the TimeWindowEnd value.

Date

TimeWindowEnd

The ending time of the time window for the network location. This field can contain a null value; a null value indicates no ending time.

Date

MaxViolationTime

A time window is considered violated if the arrival time occurs after the time window has ended. This field specifies the maximum allowable violation time for the time window of the order. It can contain a zero value but can't contain negative values. A zero value indicates that a time window violation is unacceptable; that is, the time window is hard. Conversely, a null value indicates that there is no limit on the allowable violation time. A nonzero value specifies the maximum amount of lateness; for example, a route can arrive at an order up to 30 minutes beyond the end of the time window. The unit for the field value is specified by the Time Field Units property of the analysis layer.

Double

InboundArriveTime

The time when the item to be delivered to the order will be ready at the starting depot. The order can be assigned to a route only if the inbound arrive time precedes the route's start time, as the route cannot not leave the depot before the item is ready to be loaded onto it. This field can help model scenarios involving inbound-wave transshipments. For example, a parcel or package being delivered is on an inbound flight that is scheduled to arrive and be sorted by 9:30 a.m. To ensure that a route that leaves before the shipment arrives is not assigned this order, the order's inbound arrive time is set to 9:30 a.m.

Note:
  • The route's start time must occur after the inbound arrive time. If a route begins before an order's inbound arrive time, the order cannot be assigned to the route. The assignment is invalid even if the route has a start-depot service time that lasts until after the inbound arrive time.
  • The solver honors the InboundArriveTime value regardless of the DeliveryQuantity_# value.

Date

OutboundDepartTime

The time when the item to be picked up at the order must arrive at the ending depot. The order can be assigned to a route only if the route can visit the order and reach its end depot before the specified outbound depart time. This field can help model scenarios involving outbound-wave transshipments. For example, a shipping company sends out delivery trucks to pick up packages from orders and bring them into a depot where they are forwarded on to other facilities, en route to their final destination. At 3:00 p.m. every day, a semitrailer stops at the depot to pick up the high-priority packages and take them directly to a central processing station. To avoid delaying the high-priority packages until the next day's 3:00 p.m. trip, the shipping company plans to have delivery trucks pick up the high-priority packages from orders and bring them to the depot before the 3:00 p.m. deadline. This is done by setting the outbound depart time to 3:00 p.m.

Note:
  • The route's end time, including service times, must occur before the outbound depart time. If a route reaches a depot but doesn't complete its end-depot service time prior to the order's outbound depart time, the order cannot be assigned to the route.
  • The solver honors the OutboundDepartTime value regardless of the PickupQuantity_# value.

Date

  • DeliveryQuantity_1
  • DeliveryQuantity_2
  • DeliveryQuantity_3
  • DeliveryQuantity_4
  • DeliveryQuantity_5
  • DeliveryQuantity_6
  • DeliveryQuantity_7
  • DeliveryQuantity_8
  • DeliveryQuantity_9

The size of the delivery. You can specify size in dimensions such as weight, volume, or quantity. If there are multiple delivery quantities, specify them using the DeliveryQuantity_1 through DeliveryQuantity_9 fields as needed. If DeliveryQuanity_# fields are used, the PickupQuantity_# fields cannot be used. The solver supports either all delivery orders or all pick up orders but not both.

Double

  • PickupQuantity_1
  • PickupQuantity_2
  • PickupQuantity_3
  • PickupQuantity_4
  • PickupQuantity_5
  • PickupQuantity_6
  • PickupQuantity_7
  • PickupQuantity_8
  • PickupQuantity_9

The size of the pickup. You can specify size in dimensions such as weight, volume, or quantity. If there are multiple pickup quantities, specify them using the PickupQuantity_1 through PickupQuantity_9 fields as needed. If DeliveryQuanity_# fields are used, the PickupQuantity_# fields cannot be used. The solver supports either all delivery orders or all pick up orders but not both.

Double

AnchorRule

Specifies the anchoring rule for the order, meaning does it have to be the first or last order on a route? If it is additionally constrained to a specific route, that can be controlled by the AssignmentRule field. This field is constrained by the following values (their coded values are shown in parentheses):

  • Null—The order does not have an anchoring constraint and can be sequenced first, last, or anywhere in between. This is the default value
  • First (1)—The order must be the first order on the route.
  • Last (2)—The order must be the last order on the route.

Long

AssignmentRule

Specifies the rule for the order's route assignment options. It is constrained by the following values (their coded values are shown in parentheses):

  • Null—The solver ignores the route preassignment (if any) for the order during the solve operation. It assigns a route to the order that minimizes the overall value of the objective function. This is the default value.
  • Preserve route and relative sequence (1)—The solver always assigns the order to the preassigned relative sequence during the solve operation. If this assignment rule cannot be followed, it results in an order violation. With this setting, only the relative sequence is maintained, not the absolute sequence.
  • Preserve route (2)—The solver always assigns the order to the preassigned route during the solve operation. If a sequence value is provided it will be used for the initial construction of the route. If the order cannot be assigned to the specified route, it results in an order violation.
  • Unassign (3)—The order is removed from the assigned route.

Long

Network location fields

  • SourceID
  • SourceOID
  • PosAlong
  • SideOfEdge
  • SnapX
  • SnapY
  • SnapZ
  • DistanceToNetworkInMeters

Together, these fields describe the point on the network where the object is located.

Learn more about locating inputs on a network

  • Long
  • Long
  • Double
  • Long
  • Double
  • Double
  • Double
  • Double

CurbApproach

Specifies the direction a vehicle may arrive and depart the network location. The value options are as follows (their coded values are shown in parentheses):

  • Either side of vehicle (0)—The vehicle can approach and depart the network location in either direction. U-turns are allowed. Choose this setting if a vehicle can make a U-turn at the stop or if it can pull into a driveway or parking lot and turn around.
  • Right side of vehicle (1)—When the vehicle approaches and departs the network location, the curb must be on the right side of the vehicle. A U-turn is prohibited.
  • Left side of vehicle (2)—When the vehicle approaches and departs the network location, the curb must be on the left side of the vehicle. A U-turn is prohibited.
  • No U-turn (3)—When the vehicle approaches the network location, the curb can be on either side of the vehicle; however, the vehicle must depart without turning around.

Learn more about U-turn policies

Long

Orders: Input/output fields

The input/output fields for the Orders feature class are described in the following table:

Input/output fieldDescriptionData type

RouteName

The name of the route to which the order is assigned. As an input field, this field is used to preassign an order to a specific route. It can contain a null value, indicating that the order is not preassigned to any route, and the solver determines the best possible route assignment for the order. If this is set to null, the sequence field must also be null. The RouteName field is a foreign key to the Name field in the Routes class. After a solve operation, if the order is routed, the RouteName field contains the name of the route that the order is assigned to.

Text

Sequence

The sequence of the order on its assigned route. As an input field, this field is used to specify the relative sequence for an order on the route. This field can contain a null value specifying that the order can be placed anywhere along the route. The input sequence values cannot be negative and must be unique for each route (shared across depot visits and orders) but do not need to start from 0 or be contiguous. After a solve operation, the Sequence field contains the sequence value of the order on its assigned route. Output sequence values for a route are shared across depot visits and orders. The sequences starts from 0 (at the starting depot) and are consecutive. The smallest possible output sequence value for a routed order is 1, since a route always begins at a depot even if it is a virtual depot.

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

If time windows are used and the route arrives early or late, the value changes to Time window violation (6)

Long

Orders: Output fields

The output fields for the Orders feature class are described in the following table:

Output fieldDescriptionData type

  • ViolatedConstraint_1
  • ViolatedConstraint_2
  • ViolatedConstraint_3
  • ViolatedConstraint_4

These fields contain a summary of violated constraints and are set after a solve operation. Each field will contain one violation. If an order has more than one violation, the next ViolatedConstraint_# field will be used.

  • MaxOrderCount exceeded (0)—The preassigned orders cannot be assigned to the route since assigning the orders will exceed the maximum number of orders that can be assigned to the route as specified by the route's MaxOrderCount field value.
  • Capacities exceeded (1)—The preassigned orders cannot be assigned to the route since assigning the orders will exceed the total route capacity as specified by the route's Capacities field value.
  • MaxTotalTime exceeded (2)—The travel time from the start depot to the end depot, plus the service and wait times at both depots, plus any break exceeds the total time for the route as specified by the route's MaxTotalTime field value.
  • MaxTotalTravelTime exceeded (3)—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 (4)—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 (5)—There is a hard time window violation on the start depot, end depot, or break associated with the route.
  • Unmatched specialty (6)—The specialties required by an order are not found on the target route.
  • Hard route zone (7)—An order that was preassigned to the route does not fall within a hard route zone.
  • Unreachable (10)—A preassigned order is located on a network element that cannot be reached by the route.
  • InboundArriveTime or OutboundDepartTime order violation (15)—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 (16)—The order has an Anchor first or Anchor last assignment rule, but the solver could not 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

FromPrevTravelTime

The travel time from the previous stop to the current stop. The unit for this field value is specified by the Time Field Units property of the analysis layer.

Double

FromPrevDistance

The travel distance from the previous stop to the current stop. The unit for this field value is specified by the Distance Field Units property of the analysis layer.

Double

ArriveCurbApproach

The side of the vehicle the curb is on when the vehicle approaches the network location. If the network location's CurbApproach value is set to Right side of vehicle, the ArriveCurbApproach value after solving is Right side of vehicle. However, if the CurbApproach value is set to Either side of vehicle or No U-Turn, the ArriveCurbApproach value may be the right or left side depending on which produces the overall shortest path.

Long

DepartCurbApproach

The side of the vehicle the curb is on when the vehicle departs the network location. If the network location's CurbApproach value is set to Right side of vehicle, the DepartCurbApproach value after solving is Right side of vehicle. However, if the CurbApproach value is set to Either side of vehicle or No U-Turn, the DepartCurbApproach value may be the right or left side depending on which produces the overall shortest path.

Long

ArriveTime

The date and time value indicating the arrival time at the order. The route may arrive at the order before the beginning of one of the order's time windows, in which case there is a wait time at the order. For an order with soft time windows, the route may also arrive at the order after the end of the time window, in which case there is a violation time at the order. This arrival time reflects the travel times that were used during the optimization by the solver. If the network has traffic data, the solver uses an average travel times across the whole day. When using traffic data that covers multiple time zones, the time zone for this time-of-day value is taken from the network element on which the order is located.

Date

DepartTime

The date and time value indicating the departure time for the order. The route departs from the order upon completion of service. This departure time reflects the travel times that were used during the optimization by the solver. If the network has traffic data, the solver uses an average travel times across the whole day. When using traffic data that covers multiple time zones, the time zone for this time-of-day value is taken from the network element on which the order is located.

Date

WaitTime

The wait time or layover at the order. For example, a wait time value is used if a route must wait at the order for a time window to open. The unit for this field value is specified by the Time Field Units property of the analysis layer.

Double

ViolationTime

The amount of time elapsed between the end of the order's time window and the arrival of the route vehicle. The unit for this field value is specified by the Time Field Units property of the analysis layer.

Double

Depots

The Depots feature class stores the depots that are part of a given last mile delivery analysis layer. A depot is a location that a vehicle departs from at the beginning of its workday and returns to at the end of the workday. Depots are locations where the vehicles are loaded (for deliveries) or unloaded (for pickups). For the Last Mile Delivery solver, the routes must all start at the same depot location and must all end at the same depot location. However, the start and end depot locations can be different or can be modeled as virtual depot locations not explicitly specified in the problem.

Depots: Input fields

The input fields for the Depots feature class are described in the following table:

Input fieldDescriptionData type

ObjectID

The system-managed ID field.

Object ID

Shape

The geometry field indicating the geographic location of the network analysis object.

Geometry

Name

The name of the network analysis object. This field is a primary key and is used as a foreign key in the Routes feature layer and Depot Visits feature layer to refer to depots. Depot names are case sensitive, cannot be empty, and must be unique.

Text

Network location fields

  • SourceID
  • SourceOID
  • PosAlong
  • SideOfEdge
  • SnapX
  • SnapY
  • SnapZ
  • DistanceToNetworkInMeters

Together, these fields describe the point on the network where the object is located.

Learn more about locating inputs on a network

  • Long
  • Long
  • Double
  • Long
  • Double
  • Double
  • Double
  • Double

CurbApproach

Specifies the direction a vehicle may arrive and depart the network location. The value options are as follows (their coded values are shown in parentheses):

  • Either side of vehicle (0)—The vehicle can approach and depart the network location in either direction. U-turns are allowed. Choose this setting if a vehicle can make a U-turn at the stop or if it can pull into a driveway or parking lot and turn around.
  • Right side of vehicle (1)—When the vehicle approaches and departs the network location, the curb must be on the right side of the vehicle. A U-turn is prohibited.
  • Left side of vehicle (2)—When the vehicle approaches and departs the network location, the curb must be on the left side of the vehicle. A U-turn is prohibited.
  • No U-turn (3)—When the vehicle approaches the network location, the curb can be on either side of the vehicle; however, the vehicle must depart without turning around.
Learn more about U-turn policies

Long

Depots: Input/Output field

The input/output field for the Depots feature class is described in the following table:

Input/Output fieldDescriptionData type

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

If time windows are used and the route arrives early or late, the value changes to Time window violation (6).

Long

Routes

The Routes feature class stores the routes that describe vehicle and driver characteristics. A route can have start and end depot service times, a fixed or flexible starting time, time-based operating costs, distance-based operating costs, multiple capacities, various constraints on a driver's workday, and so on.

Routes: Input fields

The input fields for the Routes feature class are described in the following table:

Input fieldDescriptionData type

ObjectID

The system-managed ID field.

Object ID

Name

The name of the network analysis object.

This field is the primary key and is used as a foreign key in the Orders, Depot Visits, and feature layers, and RouteSpecialties tables. Route names are case sensitive and cannot be empty, even if the route is not part of the solve operation. The name must be unique.

Text

StartDepotName

The name of the starting depot for the route.

All routes must have the same starting depot. They can all be the same location specified in the Depots class or all left null. The starting depot and the ending depot can be different.

This field is a foreign key to the Name field in the Depots class. Depot objects must exist before they appear in the StartDepotName drop-down list. If the StartDepotName value is null, the route will begin from the first order assigned. Omitting the start depot is useful when the vehicle's starting location is unknown or irrelevant to the routing problem.

Virtual start depots are not allowed if orders or depots are in multiple time zones. If the route is making deliveries and StartDepotName is null, it is assumed that the cargo is loaded on the vehicle at a virtual depot before the route begins.

Text

EndDepotName

The name of the ending depot for the route.

All routes must have the same ending depot. They can all be the same location specified in the Depots class or all left null. The starting depot and the ending depot can be different.

This field is a foreign key to the Name field in the Depots class. Depot objects must exist before they appear in the EndDepotName drop-down list.

Text

StartDepotServiceTime

The service time at the starting depot. This can be used to model the time spent for loading the vehicle. This field can contain a null value; a null value indicates zero service time. The unit for this field value is specified by the Time Field Units property of the analysis layer.

Note:

The service times at the start and end depots are fixed values (given by the StartDepotServiceTime and EndDepotServiceTime field values) and do not take into account the actual load for a route. For example, the time taken to load a vehicle at the starting depot may depend on the size of the orders. As such, the depot service times can be given values corresponding to a full truckload or an average truckload, or you can make your own time estimate.

Double

EndDepotServiceTime

The service time at the ending depot. This can be used to model the time spent for unloading the vehicle. This field can contain a null value; a null value indicates zero service time. The unit for this field value is specified by the Time Field Units property of the analysis layer.

Note:

The service times at the start and end depots are fixed values (given by the StartDepotServiceTime and EndDepotServiceTime field values) and do not take into account the actual load for a route. For example, the time taken to load a vehicle at the starting depot may depend on the size of the orders. As such, the depot service times can be given values corresponding to a full truckload or an average truckload, or you can make your own time estimate.

Double

EarliestStartDate

The earliest allowable starting date for the route. This is used by the solver in conjunction with the EarliestStartTime value to indicate the earliest time and date the route should start. Either this field or the RouteStartDate layer property must be populated. If this field is left null, the RouteStartDate value will be used for the route. When using network datasets with traffic data across multiple time zones, the time zone for EarliestStartTime is the same as the time zone of the edge or junction on which the starting depot is located.

Date Only

EarliestStartTime

The earliest allowable starting time for the route. This is used by the solver in conjunction with the EarliestStartDate value to indicate the earliest time and date the route should start. Either this field or the RouteStartTime layer property must be populated. If this field is left null, the RouteStartTime value will be used for the route. When using network datasets with traffic data across multiple time zones, the time zone for EarliestStartTime is the same as the time zone of the edge or junction on which the starting depot is located.

Time Only

StartFlexibility

The amount of time after the earliest allowed route start time the route can start. The value can be null or zero, which means that there is no flexibility in the starting time, or a positive number.

The unit for this field value is specified by the Time Field Units property of the analysis object.

Double

ArriveDepartDelay

The amount of travel time needed to accelerate the vehicle to normal travel speeds, decelerate it to a stop, and move it off and on the network (for example, in and out of parking). The unit for this field value is specified by the Time Field Units property of the analysis layer. By including an ArriveDepartDelay value, the solver is deterred from sending many routes to service physically coincident orders. The cost for this field is incurred between visits to noncoincident orders and depots. For example, when a route starts from a depot and visits the first order, the total arrive/depart delay is added to the travel time. The same is true when traveling from the first order to the second order. If the second and third orders are coincident, the ArriveDepartDelay value is not added between them, since the vehicle doesn't need to move.

For example, there are five coincident orders in a high-rise building, and they are serviced by three different routes. This means three arrive/depart delays will be incurred; that is, three drivers will need to find parking places and enter the same building. However, if the orders can be serviced by one route instead, only one driver will need to park and enter the building, and only one arrive/depart delay will be incurred. Since the solver tries to minimize cost, it will try to limit the arrive/depart delays and use the single-route option. (Multiple routes may need to be sent when other constraints—such as specialties, time windows, or capacities—require it.)

Double

  • Capacity_1
  • Capacity_2
  • Capacity_3
  • Capacity_4
  • Capacity_5
  • Capacity_6
  • Capacity_7
  • Capacity_8
  • Capacity_9

The maximum capacity (for example, volume, weight, or quantity) that can be carried by the vehicle. If there are multiple capacities, specify them using the Capacity_1 through Capacity_9 fields as needed.

Note:

An empty string or null value is equivalent to infinity. Capacity values cannot be negative.

Double

FixedCost

A fixed monetary cost that is incurred only if the route is used in a solution (that is, it has orders assigned to it). This field can contain null values; a null value indicates zero fixed cost. This cost is part of the total route operating cost.

Double

CostPerUnitTime

The monetary cost incurred, per unit of work time, for the total route duration, including travel times, and service times and wait times at orders and depots. This field cannot contain a null value and has a default value of 1. The unit for this field value is specified by the Time Field Units property of the analysis layer.

Double

CostPerUnitDistance

The monetary cost incurred, per unit of distance traveled, for the route length (total travel distance). This field can contain null values; a null value indicates zero cost. The distance unit is specified by the Distance Field Units property of the analysis layer.

Double

OvertimeStartTime

The duration of regular work time before overtime computation begins. This field can contain null values; a null value indicates that overtime does not apply. If an OvertimeStartTime value is included, it should be greater than zero and less than the MaxTotalTime value. The unit for this field value is specified by the Time Field Units property of the analysis layer.

Double

CostPerUnitOvertime

The monetary cost incurred per time unit of overtime work. This can only contain a null value if OvertimeStartTime is also null; otherwise, it must be a positive value greater than the CostPerUnitTime value.

Double

MaxOrderCount

The maximum allowable number of orders on the route. This field can contain null values; a null value indicates that there is no constraint on the number of orders a route can visit in a day.

Long

MaxTotalTime

The maximum allowable route duration. The route duration includes travel times as well as service and wait times at orders and depots.

Either this field or the maxRouteTotalTime property of the analysis object must be set. If this field is left null, the default value set in the maxRouteTotalTime property will be used for the route.

Double

MaxTotalTravelTime

The maximum allowable travel time for the route. The travel time includes only the time spent driving on the network and does not include service or wait times. The unit for this field value is specified by the Time Field Units property of the analysis layer. This field can contain null values; a null value indicates there is no constraint on the maximum allowable travel time. This field value can't be larger than the MaxTotalTime field value.

Double

MaxTotalDistance

The maximum allowable travel distance for the route. This field can contain null values; a null value indicates there is no constraint on the maximum allowable travel distance.

The unit for this field is specified by the Distance Field Units property.

Double

ZoneName

The name of the zone that is to be used for this route. These are zones that specify a work territory for this route. ZoneName is a foreign key to the Name field in the Zones class. This field can contain null values; a null value indicates that there is no route zone for this route.

Text

IsHardZone

Specifies whether the route zone is a hard zone. The default value is Null.

True(1) indicates that the route zone is hard; that is, an order that falls outside the route zone polygon can't be assigned to the route. False(0) indicates that the orders can still be assigned, but the cost of servicing the order is weighted by a function that is based on the Euclidean distance from the route zone. This means that as the straight-line distance from the soft zone to the order increases, the likelihood of the order being assigned to the route decreases.

Long

AssignmentRule

Specifies whether the route can be used when solving the problem. This field is constrained by a domain of values, and the possible values are the following:

  • Null—The route is open to new orders. This is the default value.
  • Closed(1)—The route will not accept new orders but it can be resequenced or have the outputs updated.
  • Exclude(2)—The route is excluded from the solve operation. The output for this route will not be updated. The orders with the corresponding route will also be excluded from the route, and the output from those orders will not be updated.

Long

Routes: Output fields

The output fields for the Routes feature class are described in the following table:

Output fieldDescriptionData type

Shape

The line shape of the route. If the Output Shape Type property of the analysis layer is set to None, no shape is returned. Setting the Output Shape Type property to Straight Line returns straight route lines that connect each pair of consecutive visits. Along Network returns lines that trace their corresponding routes on the network.

Geometry

  • ViolatedConstraint_1
  • ViolatedConstraint_2
  • ViolatedConstraint_3
  • ViolatedConstraint_4

These fields contain a summary of violated constraints and are set after a solve operation. Each field will contain one violation. If an order has more than one violation, the next ViolatedConstraint_# field will be used.

  • MaxOrderCount exceeded (0)—The preassigned orders cannot be assigned to the route since assigning the orders will exceed the maximum number of orders that can be assigned to the route as specified by the route's MaxOrderCount field value.
  • Capacities exceeded (1)—The preassigned orders cannot be assigned to the route since assigning the orders will exceed the total route capacity as specified by the route's Capacities field value.
  • MaxTotalTime exceeded (2)—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 (3)—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 (4)—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 (5)—There is a hard time window violation on the start depot, end depot, or break associated with the route.
  • Unmatched specialty (6)—The specialties required by an order are not found on the target route.
  • Hard route zone (7)—An order that was preassigned to the route does not fall within a hard route zone.
  • Unreachable (10)—A preassigned order is located on a network element that cannot be reached by the route.
  • InboundArriveTime or OutboundDepartTime order violation (15)—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 (16)—The order has an Anchor first or Anchor last assignment rule, but the solver could not 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

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.

Double

OvertimeCost

The cost of overtime work.

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 and depots. The TotalTime value is the sum of the following field values: StartDepotServiceTime, EndDepotServiceTime, TotalOrderServiceTime, TotalWaitTime, and TotalTravelTime. The unit for this field value is specified by the Time Field Units property of the analysis layer.

Double

TotalOrderServiceTime

The total service time spent at all orders on the route. The unit for this field value is specified by the Time Field Units property of the analysis layer.

Double

TotalTravelTime

The total travel time for the route. The unit for this field value is specified by the Time Field Units property of the analysis layer.

Double

TotalDistance

The total travel distance for the route. The unit for this field value is specified by the Distance Field Units property of the analysis layer.

Double

StartTime

The starting time of the route.

When using traffic data that covers multiple time zones, the time zone for this time-of-day value is taken from the network element on which the starting depot is located.

Date

EndTime

The ending time of the route.

The route ends on completion of service at the ending depot. This end time reflects the travel times that were used during the optimization by the solver.

If the network has traffic data, the solver will use an average travel times across the whole day. When using traffic data that covers multiple time zones, the time zone for this time-of-day value is taken from the network element on which the ending depot is located.

Date

TotalWaitTime

The total wait time at all orders on the route. The unit for this field value is specified by the Time Field Units property of the analysis layer.

Double

TotalViolationTime

The total violation time at all orders on the route. The unit for this field value is specified by the Time Field Units property of the analysis layer.

Double

Zones

The Zones feature class specifies a work territory. It is a polygon feature and is used to constrain servicing only those orders that fall within or near an area.

Zones: Input fields

The input fields for the Zones feature class are described in the following table:

Input fieldDescriptionData type

ObjectID

The system-managed ID field.

Object ID

Shape

The geometry field indicating the geographic location of the network analysis object.

Geometry

Name

The name for the zone.

The name field is useful for describing the zone since it can be used for multiple routes. The name must be unique. Names are case sensitive and cannot be empty. This field is the primary key and is used as a foreign key in the Routes feature layer.

Text

Depot Visits

When a route starts or ends at a depot, a depot visit is created. Depot visit objects provide information regarding why a route visited a depot and what happened there. The quantity of goods loaded on or unloaded from a vehicle at the depot is recorded in the properties of a depot visit. Additional information that is useful in interpreting the solution is also included.

Depot Visits features are created only during the solve operation; the analysis class is always empty before the solve process.

Depot Visits: Output fields

The output fields for the Depot Visits feature class are described in the following table:

Output fieldDescriptionData type

ObjectID

The system-managed ID field.

Object ID

Shape

The geometry field indicating the geographic location of the network analysis object.

Geometry

DepotName

The name of the visited depot. This field is a foreign key to the Name field in the Depots network analysis class.

If the route uses a virtual depot, which means the route starts or ends at an order instead of a depot, DepotName is null.

Text

VisitType

The reason this depot was visited. This field is constrained by a domain of values:

  • 1: Start depot
  • 2: End depot

Long

RouteName

The name of the route containing this visit. This field is a foreign key to the Name field in the Routes feature layer.

Text

Sequence

The sequences of the visited depots on the route. The output sequence values for a route are shared across depot visits or orders, start from 0 (at the starting depot), and are consecutive.

Long

ServiceTime

The service time (such as loading or unloading) at the depot.

The unit for this field value is specified by the Time Field Units property of the analysis layer.

Double

FromPrevTravelTime

The travel time from the preceding visit on the route to the depot.

The unit for this field value is specified by the Time Field Units property of the analysis layer.

Double

FromPrevDistance

The travel distance from the preceding visit on the route to the depot.

The unit for this field value is specified by the Distance Field Units property of the analysis layer.

Double

ArriveTime

The arrive time at the depot. This arrival time reflects the travel times that were used during the optimization by the solver.

If the network has traffic data, the solver will use an average travel times across the whole day. When using traffic data that covers multiple time zones, the time zone for this time-of-day value is taken from the network element on which the depot is located.

Date

DepartTime

The departure time from the depot.

When using traffic data that covers multiple time zones, the time zone for this time-of-day value is the same as the network element on which the depot is located.

Date

  • LoadedQuantity_1
  • LoadedQuantity_2
  • LoadedQuantity_3
  • LoadedQuantity_4
  • LoadedQuantity_5
  • LoadedQuantity_6
  • LoadedQuantity_7
  • LoadedQuantity_8
  • LoadedQuantity_9

The amount (for example, volume, weight, or quantity) being loaded at the depot. If there are multiple amounts, the values in the LoadedQuantity_1 through LoadedQuantity_9 fields correspond to the matching Capacity_1 through Capacity_9 field values in the Routes input table.

Double

  • UnloadedQuantity_1
  • UnloadedQuantity_2
  • UnloadedQuantity_3
  • UnloadedQuantity_4
  • UnloadedQuantity_5
  • UnloadedQuantity_6
  • UnloadedQuantity_7
  • UnloadedQuantity_8
  • UnloadedQuantity_9

The amount (for example, volume, weight, or quantity) being unloaded at the depot. If there are multiple amounts, the values in the UnloadedQuantity_1 through UnloadedQuantity_9 fields correspond to the matching Capacity_1 through Capacity_9 field values in the Routes input table.

Double

Specialties

Order Specialties and Route Specialties are the two tables that list the specialties that can be required by orders and supported by routes. A route can service an order only if it supports all the specialties required for that order.

An order may require a technician with a certain skill set or a vehicle with certain capabilities. You model these skills, capabilities, and so on, by first adding them to the Order Specialties table. Next, you add the specialties that are supported by a route to Route Specialties. When the analysis is solved, orders that require certain specialties are matched with routes that can provide them.

Order Specialties: Input fields

The input fields for the Order Specialties table are described in the following table:

Input fieldDescriptionData type

ObjectID

The system-managed ID field.

Object ID

OrderName

The name of the order.

This field is a foreign key to the Name field in the Orders network analysis class.

Text

SpecialtyName

The name of the specialty.

This indicates the required specialty for the order. Only a single specialty is listed per line. If an order requires more than one specialty, create a new row.

Specialty names cannot contain spaces. For example, provide a senior technician specialty as SeniorTechnician. Specialty names are case sensitive and cannot be empty.

Text

Route Specialties: Input fields

The input fields for the Route Specialties table are described in the following table:

Input fieldDescriptionData type

ObjectID

The system-managed ID field.

Object ID

RouteName

The name of the route.

This field is a foreign key to the Name field in the Routes network analysis class

Text

SpecialtyName

The name of the specialty.

This indicates the specialty that the route supports. Only a single specialty is listed per line. If a route supports more than one specialty, create a new row.

Specialty names cannot contain spaces. For example, provide a senior technician specialty as SeniorTechnician. Specialty names are case sensitive and cannot be empty.

Text

Point, line, and polygon barriers

Barriers temporarily restrict, add impedance to, and scale impedance on parts of the network. When a new network analysis layer is created, the barrier classes are empty. They are populated only when you add objects into them—but adding barriers is not required.

Barriers are available in all network analysis layers and are described in a separate topic.

Learn more about barriers

Last mile delivery analysis layer properties

The following subsections list parameters you can set on the analysis layer. They are on the Last Mile Delivery Layer tab, which is available only if the last mile delivery layer or one of its sublayers is selected in the Contents pane.

Last Mile Delivery Layer tab

Analysis

Use the options in this section to estimate the credits and run the analysis.

Analysis section

Run

Once you load input features and set analysis properties, click the Run button to run the analysis. If the analysis uses credits, and the number of credits estimated for the solve exceeds the available credits, an error message appears that blocks the solve or a warning message that allows you to choose whether to proceed with the solve.

The run button may appear different based on the source of the network dataset.

  • Run—The network analysis layer is referencing a local network data source.
  • Run Service—The network analysis layer is referencing a network data source in ArcGIS Online.
  • Run—The network analysis layer is referencing a network data source in an ArcGIS Enterprise portal.

Estimate Credits

You can use the Estimate Credits button to estimate the number of service credits that will be consumed by running the analysis on the selected network analysis layer. When this button is enabled, it indicates that the network analysis layer will consume credits when solved.

Estimate Credits enabled

The Estimate Credits button is enabled when the following occur:

Estimate Credits disabled

The Estimate Credits button is disabled when the following occur:

When you click the Estimate Credits button, a dialog box appears with an estimate of the number of credits that are likely to be consumed solving the current analysis. The credit estimate is based on the number of input locations used in the analysis. The actual credits consumed may change based on the output generated by the Solve operation. Depending on how your organization has set up the credit budgeting and allocation settings, the available credits may not be shown. Also, credit estimation may not always be possible if the network data source is an ArcGIS Enterprise portal with routing services configured from ArcGIS Online.

Learn more about the credit usage by each analysis type

Estimated credit consumption and total credits available
Note:

Depending on the configuration of the ArcGIS Online organization account and the signed-in user, solving the analysis may be blocked or may show a warning if the estimated credits exceed the available credits.

Input Data

Use the options in the Input Data section to import the input features to participate in the analysis.

Input Data section

Import Orders

Click the Import Orders button Import Orders to load features from another data source, such as a point feature layer, into the Orders feature class.

Import Depots

Click the Import Depots button Import Depots to load features from another data source, such as a point feature layer, into the Depots feature class.

Import Routes

From the drop-down menu, you can choose to import the routes or add routes.

  • Import Routes Routes—Use this to load features from another data source, such as a line feature layer or a stand-alone table, into the Routes feature class.
  • Add Routes Add Routes—Use this to create multiple routes at once using the Add Vehicle Routing Problem Routes geoprocessing tool.

Import Barriers

Use the Import Point Barriers Import Point Barriers, Import Line Barriers Import Line Barriers, or Import Polygon Barriers buttons Import Barriers to load features from another data source, such as another feature layer, into one of the barriers feature classes (point barriers, line barriers, or polygon barriers).

Import Zones

Use the Import Zones button Input Route Zones to load features from another data source, such as a polygon feature layer, into the Zones feature class.

Import Order Specialties

Use the Import Order Specialties button Input Specialties to load features from another data source, such as a stand-alone table, into the Order Specialties table.

Import Route Specialties

Use the Import Route Specialties button Input Route Specialties to load features from another data source, such as a stand-alone table, into the Route Specialties table.

Create Features

Use the Create Features button Create Features to open the Create Features pane. Select from the available templates to create features in the current map.

Travel Settings

Use the options in the Travel Settings section to specify the travel mode.

Travel Settings section

Mode

Use the Mode drop-down list to specify a travel mode, which is a group of settings that model the movement of pedestrians, cars, trucks, or another travel mode. The choices available in the drop-down list depend on the travel modes that are configured on the network data source that the network analysis layer is referencing.

Note:
Only the travel modes that have a time-based impedance attribute are shown for a last mile delivery layer.

Time Units

These are the time units used by the temporal fields of the analysis layer's sublayers and tables. The following options are available from the drop-down list:

  • Seconds
  • Minutes
  • Hours
  • Days

Distance Units

These are the distance units used by distance fields of the analysis layer's sublayers and tables. The following options are available from the drop-down list:

  • Meters
  • Kilometers
  • Feet
  • Miles
  • Nautical Miles
  • Centimeters
  • Millimeters
  • Decimeters
  • Yards
  • Inches

Date and Time

Use the options from the Date and Time section to specify the date and time to be used in the analysis.

Date and Time section

Learn more about date and time

Default Earliest Route Start Time of Day

This is the earliest allowable starting time for the route. It is used by the solver in conjunction with the default Earliest Route Start Date value to indicate the earliest time and date the route should start. This time of day is used for all routes for which the EarliestStartTime field in the Routes class is null. When no value is provided for this option, all rows in the Routes class must specify a value in the EarliestStartTime field. When using network datasets with traffic data across multiple time zones, the time zone for EarliestStartTime is the same as the time zone of the edge or junction on which the starting depot is located.

Default Earliest Route Start Date

This is the earliest allowable starting date for the route. It is used by the solver in conjunction with the EarliestStartTime to indicate the earliest time and date the route should start. This date is used for all routes for which the EarliestStartDate field in the Routes class is null. When no value is provided for this option, all rows in the Routes class must specify a value in the EarliestStartDate field. When using network datasets with traffic data across multiple time zones, the time zone for EarliestStartTime is the same as the time zone of the edge or junction on which the starting depot is located.

Max Total Time

The maximum allowable route duration. The route duration includes travel times as well as service and wait times at orders and depots. The value is used for all routes for which the MaxTotalTime field in the Routes class is null. When this parameter is not specified, all rows in the Routes class must specify a value in the MaxTotalTime field.

Reference Time Zone

From the Reference Time Zone drop-down list Reference Time Zone button, you can choose the time zone to use in the analysis. The options are as follows:

  • Local Time at Locations
  • UTC (Universal Coordinated Time)

Output Geometry

Use the options from the drop-down menu in the Output Geometry section to specify how the output will display in the map.

Output Geometry section

Output Geometry Linear Shape Type

The analysis always solves least-cost paths along the network using the settings you specify, but in addition to displaying these true paths along the network on the map, you can also represent the routes on a map using simple straight lines between stops or no lines at all.

  • No Lines—No output linear shapes are generated.
  • Straight Lines—Output simplified geometry as straight lines.
  • Along Network—Generate true paths along the network on the map.

Drawing

Use the Symbology button Symbology to access the symbology pane for the active network analysis layer. You can configure the symbology for the sublayers of the active network analysis layer by choosing one of the following options:

  • Single Color—This option is available for all network analysis layer types. All feature sublayers in the active network analysis layer except barriers will use the same single symbol with the specified color. For example, choosing a single color of blue for a Route layer will convert all the Stops and Routes features to the same color of blue.
  • Color Linked—This option is available for Route, Last Mile Delivery, and Vehicle Routing problem layers. It applies a color scheme to the sublayers such that related features are symbolized with the same color. This symbology configuration symbolizes related features with the same color, making it easier to visually distinguish different routes and their associated features in the map. For example, for a Route layer with multiple routes, each route and the stops assigned to that route will be assigned matching colors.

Learn more about network analysis layer symbology

Filtering

You can filter the network analysis sublayers to only show features related to the selected features in the primary layer.

Add or remove filters on the primary and related sublayers.

  • Add Filters Filter by Selection—Applies filters to sublayers of the network analysis layer to only show features related to the selected feature of the primary sublayer. Definition queries are automatically created and applied on the relevant sublayers. Every time the Add Filters button is clicked, a new definition query is created with the same name replacing the previous definition query.

    When a feature is selected in the primary Routes sublayer, a definition query called Routes is created on the Routes sublayer (primary layer) and the related Orders and Depot Visits sublayers.

  • Remove Filters Remove Filter—Deletes the definition query on the primary and the related sublayers.

Advanced

Use the option in the Advanced section to specify the gap setting for the analysis.

Sequence Gap setting in the Advanced section

Sequence Gap

This setting specifies the gap in numerical values to leave in the field in the Orders sublayer between adjacent orders when the analysis is solved. The value acts as a multiplier for the actual sequence of orders on each route. For example, if the gap is 5, the first order on the route will have a Sequence field value of 5, the second order on the route will have a Sequence field value of 10, the third 15, and so on. This setting helps support inserting orders after the initial route plan has been created because the new orders can be inserted into the sequence gaps.

The first time the analysis is solved, the Sequence field values are populated with sequential values using the designated sequence gap. On subsequent solves of the same analysis, the Sequence field values of existing orders is maintained, and new orders are inserted into the gaps using available integer values for the Sequence field that are not in use by other orders. If the sequence gap is set to 1, the sequence values will always be updated to contiguous values for every solve.

Directions

Use the options in the Directions section to specify whether directions will be generated.

Directions section

Note:

The Last Mile Delivery solver uses a time-neutral Origin Destination Cost Matrix (OD) to determine the route assignment and sequencing. The values from this time-neutral OD are used to populate the time and distance costs for the Orders, Depot Visits, and Routes fields, for consistency with the optimization logic used to solve the problem. After the sequence of stops and depot visits is finalized for each route, the Route solver is used to generate directions and uses the actual starting time of the route, allowing the directions fields to be populated with more accurate arrival times based on traffic.

Output on Solve

Turn on this option to generate directions upon solve for the current network analysis layer.

Show Directions

When the Output on Solve option is checked, when you click the Show Directions button Directions, the Directions pane appears with turn-by-turn directions for each route in the solution.

Share As

Share the output of the analysis using the Route Layers button.

Share As section

Share as Route Layers

Use the Route Layers button Share As Route Layer to share the results from the analysis as route layers. This button opens the Share as Route Layers geoprocessing tool. After it runs, the results from the analysis are shared as route layer items in the portal.