About Travel Time Estimation

A correct estimation of the average travel time is important to prevent over-booking and under-booking the activities. The travel time is estimated based on the actual activity records (started activities). This topic describes how travel time is estimated with examples.

There are several cases when Capacity/Quota Management uses the travel time estimation for:
  • The booking of a new activity (get_capacity function)

  • The calculation of “Used” value

  • The Calculation of “Other activities” value

The application implements one approach to estimate time for the ordered activities in the mobile workers' routes and another approach for an unknown location where it's necessary to estimate an average travel time value for different kind of activities such as:
  • Activities that needs to be booked (get_capacity function)

  • Activities in buckets

  • Not-scheduled activities

  • Not-ordered activities

Travel Time Estimation Algorithm:

Let's say you've a bucket for which no 'from' location is available and only the 'to' location is available. Travel estimation for the activities that are assigned to this bucket is based on the reported durations of mobile workers belonging to this bucket alone, if enough reported data exists. This method of travel estimation is independent of the configured Travel areas and depends only on these:
  • Travel key (based on configured Activity travel stats fields)
  • Bucket to which the activity is assigned
This improves the travel estimations when multiple buckets operate in the same area and reduces the dependency on the configured Travel areas. This reduction of dependency is beneficial when the Travel areas cover a large area with high variation in reported travel durations within it.

The logic to estimating travel when there's no 'from' location, typically when activities are assigned to a bucket, is as follows:

  • If enough data is present, travel estimation is based on the bucket and travel key combination. Only data reported for the activities in that particular bucket and with the same travel key is used to estimate travel. This estimate is arrived at, only if there are at least seven such valid reported travel durations.
  • If not enough data is present for that bucket and travel key, reported durations for activities with that travel key within the parent bucket of the assigned bucket is used. If there are at least seven reported durations at the parent bucket level for the travel key, the travel is estimated based on those reported travels. If not, then this process continues by going further up in the bucket hierarchy, till the level where enough data exists. Only parent buckets are considered in such cases and not organization units.
  • If still not enough data is present at the parent bucket levels for activities with the same travel key, the travel estimation is based on all the reported travel durations for the activities under the original bucket, irrespective of the travel keys of those activities. Here too, if there isn't enough data within a particular bucket, the reported durations of its parent bucket are used, if it has enough reported durations.
  • If enough data isn't present even then, the default travel duration configured is used.
  • For all the above cases, only the durations reported by mobile workers for whom Use data reported to enhance company-wide estimations is selected at the Resource Type level, is used as input data. Only valid reported data that look realistic based on the distance and speed is considered. Data from external data sources, or those based on location services aren't used. This is done so that only real travels completed are used for estimations at the bucket level.
  • The same logic is followed for estimating travel for not-ordered activities in the mobile worker's queue. Here, the same data calculated for the bucket to which the field resource belongs, is used.

Examples: Let's say an activity with a Travel key value '12345' is assigned to Bucket A. Assume that the parent of Bucket 'A' is Bucket 'B' and the parent of bucket 'B' is an Org Unit (which doesn't have a parent).

Case 1: Enough data is present within the bucket for the activities with the same travel key.
Element Value
Travel key 12345
Bucket A
No. of valid reported durations within:
  • Bucket 'A' for Travel key '12345'
10
Learned Estimation:
  • Bucket 'A' for Travel key '12345'
18 minutes
Estimated travel for the activity in Bucket 'A' 18 minutes

Use Learned estimation of Bucket 'A' for Travel key '12345'.

Case 2: Not enough data is present within the bucket for the activities with the same travel key.
Element Value
Travel key 12345
Bucket A
No. of valid reported durations within:
  • Bucket 'A' for Travel key '12345'
  • Bucket 'B' (parent of 'A') for Travel key '12345'
  • 3
  • 15
Learned Estimation:
  • Bucket 'A' for Travel key '12345'
  • Bucket 'B' for Travel key '12345'
  • 18 minutes
  • 16 minutes
Estimated travel for the activity in Bucket 'A' 16 minutes

Use Learned estimation of Bucket 'B' for Travel key '12345'.

Case 3: Not enough data is present for the activities with the same travel key even at higher bucket levels.
Element Value
Travel key 12345
Bucket A
No. of valid reported durations within:
  • Bucket 'A' for Travel key '12345'
  • Bucket 'B' (parent of 'A') for Travel key '12345'
  • Org Unit (parent of 'B') for Travel key '12345'
  • Bucket 'A' without considering value of Travel key
  • 1
  • 2
  • 10
  • 23
Learned Estimation:
  • Bucket 'A' for Travel key '12345'
  • Bucket 'B' for Travel key '12345'
  • Bucket 'A' without considering value of Travel key
  • 18 minutes
  • 16 minutes
  • 23 minutes
Estimated travel for the activity in Bucket 'A' 22 minutes

Use Learned estimation of Bucket 'A' without considering the value of Travel key.

Case 4: Not enough data is present for activities with the same travel key even at higher bucket levels and not enough data at bucket level.
Element Value
Travel key 12345
Bucket A
No. of valid reported durations within:
  • Bucket 'A' for Travel key '12345'
  • Bucket 'B' (parent of 'A') for Travel key '12345'
  • Org Unit (parent of 'B') for Travel key '12345'
  • Bucket 'A' without considering value of Travel key
  • Bucket 'B' without considering value of Travel key
  • 1
  • 2
  • 10
  • 4
  • 32
Learned Estimation:
  • Bucket 'A' for Travel key '12345'
  • Bucket 'B' for Travel key '12345'
  • Bucket 'A' without considering value of Travel key
  • Bucket 'B' without considering value of Travel key
  • 18 minutes
  • 16 minutes
  • 22 minutes
  • 24 minutes
Estimated travel for the activity in Bucket 'A' 24 minutes

Use Learned estimation Bucket 'B' without considering value of Travel key.

Case 5: Not enough data is present at any level (typically a new Org or a new customer).
Element Value
Travel key 12345
Bucket A
No. of valid reported durations within:
  • Bucket 'A' for Travel key '12345'
  • Bucket 'B' (parent of 'A') for Travel key '12345'
  • Org Unit (parent of 'B') for Travel key '12345'
  • Bucket 'A' without considering value of Travel key
  • Bucket 'B' without considering value of Travel key
  • 1
  • 2
  • 10
  • 3
  • 5
Learned Estimation:
  • Bucket 'A' for Travel key '12345'
  • Bucket 'B' for Travel key '12345'
  • Bucket 'A' without considering value of Travel key
  • Bucket 'B' without considering value of Travel key
  • 18 minutes
  • 16 minutes
  • 22 minutes
  • 24 minutes

Configured default travel duration

28 minutes
Estimated travel for the activity in Bucket 'A' 28 minutes

Use the configured default travel duration.