Route optimization is the computation of what order to visit stops in — and, in the harder version of the problem, who should visit which stops — so that travel time or distance is minimised while respecting working hours, service durations, capacity and commitments already made.
Why route optimization matters
Field time divides into two categories: time in front of a customer, and time getting there. Only one of them earns anything. On a typical field-sales day, travel can consume a third of working hours, so a 15% improvement in routing is not a rounding error — it is several extra calls a week per person, without hiring anyone or extending the day.
The gains compound in field service, where jobs have promised time windows. There, poor sequencing does not just waste fuel; it breaks commitments.
How route optimization works
Two distinct problems hide under the same phrase, and conflating them is a common source of disappointment.
- Sequencing one route — given a set of stops and one person, find the best order. This is the travelling-salesman problem: easy to state, expensive to solve exactly, and well handled in practice by heuristics that get within a few percent of optimal in a fraction of a second.
- Splitting stops across people — given many stops and several field staff, decide who takes what and in what order. This is the vehicle-routing problem, and it is substantially harder, because assignment and sequencing interact.
Both need a distance model. Straight-line distance is free and immediately wrong in any real city, where rivers, one-ways and motorways decide the true cost. Road-network distances are accurate but come from a routing service, so each optimization run has a cost — which is why serious implementations treat optimization as an action someone triggers rather than something that quietly runs in a loop.
Real deployments also carry constraints that pure distance ignores: shift start and end, service duration per stop, vehicle or workload capacity, and how evenly work should be balanced between people.
An example
A rep has 22 outlets to cover. Sequenced by hand — in practice, by the order they were entered — the day involves 61 km of driving. Re-sequenced over the road network, the same 22 stops take 43 km. The 18 km saved is roughly 45 minutes in city traffic: two additional calls, or an earlier finish, every day.
Common variations
- Static sequencing. Optimize the beat once; reuse the order every cycle. Cheap and predictable, and usually enough for stable retail territories.
- Daily re-optimization. Recompute each morning against today's actual job list. Higher value in service, where the work list changes daily.
- Dynamic re-optimization. Re-plan intra-day as jobs are added or run late. Powerful, and the most operationally demanding to adopt, because the plan a technician saw at 9am is no longer the plan at 11am.
- Learned sequence. Derive the order from what field staff actually did, on the theory that repeated deviation from the plan is information rather than indiscipline.
Limitations worth stating
An optimizer only optimizes what it is told to value. Minimise distance alone and it will happily schedule the difficult account at 5pm on a Friday, or send a rep past a store that expects them at the same time every week. Customer expectation, relationship continuity and driver familiarity are real constraints that rarely appear in the objective function — which is why the output of an optimizer should be a proposal a planner can accept, not an instruction.
How xMatix supports route optimization
xMatix Field Sales treats a route's sequence as a versioned object rather than a single computed answer. A visit route can hold three of them at once: the planned sequence a human set, an optimized sequence computed over real road distances through the configured routing provider, and a most-followed sequence derived from the order reps actually drove on previous visits. Each is stored with its distance and estimated duration, so they can be compared before one is made current and applied to future visit plans.
A free nearest-neighbour sequencing option is available for cases where a road-network call is not warranted, and optimization runs are user-triggered by design — each one consumes a paid routing request, so they are never fired automatically in the background.
For the assignment problem, territory planning splits outlets across field staff using a capacitated solver, with tenant-level settings for default service minutes per stop, shift start and end times, balance tolerance between people, and whether capacity is enforced.
In xMatix Field Service, the same thinking is applied to the day's job list through a dispatch console with map, timeline and board views, including an action that fills the day's unassigned backlog into free slots.
Continuous intra-day re-optimization is not part of the current product.
Related: beat planning · territory planning · field service dispatch
