Docs
  • Solver
  • Models
    • Field Service Routing
    • Employee Shift Scheduling
  • Platform
Try models
  • Field Service Routing
  • User guide
  • Configuration overrides

Field Service Routing

    • Introduction
    • Planning AI concepts
    • Metrics and optimization goals
    • Getting started with field service routing
    • Understanding the API
    • User guide
      • User guide
      • Terms
      • Constraints
      • Planning window
      • Model configuration
      • Configuration overrides
      • Time zones and daylight-saving time (DST)
      • Routing with Timefold’s maps service
      • Validation
      • Model response
      • Key performance indicators (KPIs)
    • Vehicle resource constraints
      • Vehicle resource constraints
      • Shift hours and overtime
      • Lunch breaks and personal appointments
      • Fairness
      • Route optimization
      • Technician coverage area
      • Technician costs
      • Technician ratings
    • Visit service constraints
      • Visit service constraints
      • Time windows and opening hours
      • Skills
      • Visit dependencies
      • Visit requirements
      • Multi-vehicle visits
      • Movable visits and multi-day schedules
      • Priority visits and optional visits
      • Visit service level agreement (SLA)
    • Recommendations
      • Recommendations
      • Visit time window recommendations
      • Visit group time window recommendations
    • Real-time planning
      • Real-time planning
      • Real-time planning: extended visit
      • Real-time planning: reassignment
      • Real-time planning: emergency visit
      • Real-time planning: no show
      • Real-time planning: technician ill
      • Real-time planning: pinning visits
    • Scenarios
      • Long-running visits
    • Changelog
    • Upgrade to the latest version
    • Feature requests

Configuration overrides

Contains weights of soft constraint and additional constraint parameters, influencing whether these constraints trigger and how much they impact the solution’s score.

Id Format Description Example

balanceTimeUtilizationWeight

number

A weight of the Balance technicians' workloads constraint.

1

defaultTechnicianRating

double

A default technician rating that should be used for the Maximize technician rating (soft) constraint. If no default is given and no technician rating is provided, the default value of 0.0 is used.

3.2

maximizeTechnicianRatingWeight

number

A weight of the Maximize technician rating (soft) constraint. It is set to 0 by default.

1

maxSoftLastVisitDepartureTimeWeight

number

A weight of the Max last visit departure time (soft) constraint.

1

maxSoftShiftEndTimeWeight

number

A weight of the Max shift end time (soft) constraint.

1

minimizeShiftCostsWeight

number

A weight of the Minimize vehicle shift cost constraint.

1

minimizeTravelDistanceWeight

number

A weight of the Minimize travel distance constraint.

0

minimizeTravelTimeWeight

number

A weight of the Minimize travel time constraint.

1

maxSoftShiftTravelTimeWeight

number

A weight of the Max shift travel time (soft) constraint.

1

minimizeUnnecessarySkillsWeight

number

A weight of the Minimize scheduling vehicles with unnecessary skill levels constraint.

1

minimizeVisitCompletionRiskWeight

number

A weight of the Minimize the visit completion risk constraint.

1

preferSchedulingOptionalVisitsWeight

number

A weight of the Prefer scheduling optional visits constraint.

1

preferVisitsScheduledToEarliestDayWeight

number

A weight of the Prefer visits scheduled to the earliest day constraint.

1

preferVisitVehicleMatchPreferredVehiclesWeight

number

A weight of the Prefer scheduled vehicle matches preferred vehicle constraint.

1

priorityWeights

array of PriorityConfiguration objects

An override for the priority weights. This allows for custom priorities to be set. When using this feature, no default exists, so every Visit must define a priority.

[ { priority: "NORMAL_1", weight: 30 }, { priority: "NORMAL_2", weight: 35 }, { priority: "HIGH_1", weight: 60 } ]

travelTimeAdjustment

object

An optional Travel Time Adjustment to compensate for longer travel times due to high traffic (multiplier) or difficult parking (extra constant time).

{"multiplier": 1.5, "extraTime": "PT10M" }

visitCompletionRiskMinimalPriority

string

A minimal priority of a visit to consider it for the risk evaluation.

"10"

visitCompletionRiskMinimalTimeToShiftEnd

string (ISO 8601 duration)

A length of the time window between the visit departure time and the vehicle shift end. If a visit ends in this time window, its completion is considered risky.

"PT1H"

1. Travel Time Adjustment

Travel time adjustment can be defined to implement a "buffer" allowing for unexpected traffic delays or long parking time when travelling.

The travel time adjustment is configured as a function for every route between any two locations as follows:

adjustedTravelTime = multiplier * mapTravelTime + extraTime,

where:

  • mapTravelTime is the travel time obtained from a map service,

  • multiplier and extraTime are the travel time adjustment attributes described below.

Id Required Format Description Example

extraTime

false

string (ISO 8601 duration)

The additional time to add to the original travel time obtained from a map service. Must be positive or zero duration.

The default value is "PT0S" (zero duration).

"PT5M" - to add extra 5 minutes to every route travel time

multiplier

false

float

The coefficient to multiply the original travel time obtained from a map service with. Must be greater than zero (typically will be greater than 1 to make the travel time longer).

The default value is 1.0.

1.1 to achieve 10 % longer travel times

2. PriorityConfiguration

The priorityConfiguration objects require a "priority" (format: string) and a "weight" (format: int) to be set. The "priority" field will serve as the name for the priority override and the "weight" field indicates the magnitude of impact it will have. A priorityConfiguration with "weight": 50 will have an impact 5 times the size than that of a priority with "weight": 10. This means that the solver deems 1 unassigned visit with the higher priority weight equal to 5 unassigned visits with the lower priority weight.

[
{
  "priority": "E",
  "weight": 1
},
{
  "priority": "D",
  "weight": 10
},
{
  "priority": "C",
  "weight": 15
},
{
  "priority": "B",
  "weight": 50
},
{
  "priority": "A",
  "weight": 1000
}
]
  • © 2025 Timefold BV
  • Timefold.ai
  • Documentation
  • Changelog
  • Send feedback
  • Privacy
  • Legal
    • Light mode
    • Dark mode
    • System default