Symptom
A planTours request is submitted with a driver operatingIntervals start time (e.g. 07:30). One or both of the following behaviors is observed:
Scenario A – Late tour start
The planned tour departs significantly later than the driver's earliest available time. The first stop arrival is well after the configured start, even though nearby stops have early opening windows. No error or violation is returned.
Example: driver available from 07:30, first stop 5 km away with a window opening at 09:00, tour departs at ~10:23 and first arrival is calculated at 10:28.
Scenario B – Early forced departure with on-site waiting
vehicle.tourStartInterval is set to force departure at 07:30. The vehicle departs at 07:30, arrives at the first stop at ~07:35, then waits on site until the stop's opening window at 09:00. Other stops with opening windows at 08:00 and located within 2–3 km of the depot are not visited during this wait period.
"tourStartInterval": {
"start": "2026-06-30T07:30:00+02:00",
"end": "2026-06-30T07:30:00+02:00"
}
In both scenarios, tweaksToObjective is null (default objective). calculationMode is 1.
Cause
Both behaviors are expected by design and result from the planTours default optimization objective, confirmed by the PTV development team.
planTours optimizes using two criteria, applied in this order:
- Primary — Minimize a linear combination of travel time and distance across the full tour.
- Secondary — Start the tour as late as possible (to reduce waiting time globally).
Consequences:
- Scenario A: With no tourStartInterval constraint, the engine freely delays departure to avoid on-site waiting. The departure time is computed globally across all stops, not just the first one.
- Scenario B: When departure is forced via tourStartInterval, the engine applies its standard optimization logic from that fixed start point. Whether it fills wait time by visiting nearby open stops depends on whether the distance cost of the detour exceeds the cost of waiting. This trade-off is fixed and internal to the engine — it is not configurable. Note: tweaksToObjective does not control this specific trade-off between distance and waiting time.
Resolution
Option A – Allow planTours to optimize departure freely (recommended default)
Remove or do not set tourStartInterval. Leave driver.operatingIntervals with the full working window. planTours will delay the start to minimize waiting time across the full tour. This is the intended default behavior.
Option B – Force a fixed departure time
Set vehicle.tourStartInterval with identical start and end values:
"tourStartInterval": {
"start": "2026-06-30T07:30:00+02:00",
"end": "2026-06-30T07:30:00+02:00"
}
The vehicle will depart at exactly 07:30. The engine will apply its standard optimization logic from that fixed start point. Depending on the stop profile and time windows, some waiting time may occur at early stops.
Option C – Use a custom optimization configuration focused on reducing waiting time
If the primary objective is to reduce waiting time caused by customer time windows, PTV provides a custom optimization configuration that places a stronger focus on this aspect. This configuration is provided by PTV support upon request and must be used together with calculationMode set to CUSTOM.
Step 1 – Request the encoded custom configuration blob from PTV support (file: Blob-reduce-waiting-time).
Step 2 – Insert the blob content as the customCalculationModeConfiguration field in PlanToursOptions, and set calculationMode to CUSTOM:
"planToursOptions": {
"calculationMode": "CUSTOM",
"customCalculationModeConfiguration": "<blob content here>"
}
Important note: even with this configuration, situations that appear to involve unnecessary waiting may not result in a better overall tour if redirecting the vehicle increases total travel time. To validate a specific alternative sequence, submit the desired stop order as an input plan and use calculationMode EVALUATE to check timings, feasibility, and any violations.
The behavior is resolved when the tour start time and stop sequencing match the operator's expectations given the chosen option above.