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 field | Description | Data 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:
| 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:
| Date |
| 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 |
| 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):
| 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):
| Long |
Network location fields
|
Together, these fields describe the point on the network where the object is located. |
|
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):
| Long |
Orders: Input/output fields
The input/output fields for the Orders feature class are described in the following table:
Input/output field | Description | Data 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:
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 field | Description | Data type |
---|---|---|
| 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.
| 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 field | Description | Data 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
|
Together, these fields describe the point on the network where the object is located. |
|
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):
| Long |
Depots: Input/Output field
The input/output field for the Depots feature class is described in the following table:
Input/Output field | Description | Data 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:
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 field | Description | Data 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 |
| 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:
| Long |
Routes: Output fields
The output fields for the Routes feature class are described in the following table:
Output field | Description | Data 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 |
| 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.
| 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 field | Description | Data 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 field | Description | Data 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:
| 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 |
| 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 |
| 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 field | Description | Data 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 field | Description | Data 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.
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.
Analysis
Use the options in this section to estimate the credits and run the analysis.
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.
- —The network analysis layer is referencing a local network data source.
- —The network analysis layer is referencing a network data source in ArcGIS Online.
- —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.
The Estimate Credits button is enabled when the following occur:
- The network analysis layer's network data source is hosted in ArcGIS Online.
- Your ArcGIS Enterprise portal routing services are configured from ArcGIS Online.
The Estimate Credits button is disabled when the following occur:
- The network analysis layer's network data source is stored on a local machine.
- You're using your own services published on your ArcGIS Enterprise portal.
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
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.
Import Orders
Click the Import Orders button 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 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 —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 —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 Line Barriers , or Import Polygon Barriers buttons 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 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 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 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 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.
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.
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 , 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 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 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.
Filtering
You can filter the network analysis sublayers to only show features related to the selected features in the primary layer.
Add Filters —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 —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
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.
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 , 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 Route Layers
Use the Route Layers button 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.