Advanced Time Features
Fine-tune scheduling with time rounding, padding, and dynamic routing features
Advanced Time Features
Beyond basic time windows and scheduling, the VRP solver offers advanced time features for precise control over arrival times, service scheduling, and multi-day optimization. This guide covers snapUnit, job padding, overtime management, and time-dependent routing.
Time Snapping (snapUnit)
Round arrival times to specific intervals for cleaner schedules:
How snapUnit Works
Snap Behavior: Arrival times are rounded UP to the nearest snapUnit interval.
- Actual arrival: 9:03 → Snapped to: 9:15
- Actual arrival: 9:15 → Stays at: 9:15
- Actual arrival: 9:16 → Snapped to: 9:30
Common snapUnit Values
For businesses with flexible scheduling
For businesses with flexible scheduling
Most common for service industries
For longer appointments or deliveries
Simple scheduling for low-precision needs
Impact on Routes
Calculate Natural Arrival
Solver determines optimal arrival time
Apply Snap Rounding
Round up to next snapUnit interval
Add Wait Time
Driver waits if arrived before snapped time
Start Service
Begin job at snapped arrival time
Job Padding
Add buffer time before and after jobs:
Padding Use Cases
Setup/Teardown Time
Setup/Teardown Time
Total time blocked: 50 minutes
Customer Preparation
Customer Preparation
Ensures customer readiness
Safety Buffer
Safety Buffer
Prevents appointment overruns
Padding vs snapUnit Interaction
Important: Padding is applied AFTER snap calculations.
Example with snapUnit=900 (15 min) and padding=300 (5 min):
- Natural arrival: 9:03
- Snapped arrival: 9:15
- Actual service start: 9:20 (after padding)
- Service end: 10:20
- Ready for next job: 10:25 (after padding)
Advanced Overtime Management
Configure flexible overtime with graduated penalties:
Overtime Strategies
Time-Dependent Routing
Account for traffic patterns and rush hours:
Traffic Pattern Modeling
Define Time Periods
Identify distinct traffic patterns:
- Morning rush: 6-9 AM
- Midday: 9 AM-4 PM
- Evening rush: 4-7 PM
- Night: 7 PM-6 AM
Create Period Matrices
Generate distance matrices for each period with realistic travel times
Configure Transitions
Solver automatically interpolates between periods
Validate Results
Check routes avoid heavy traffic when possible
Multi-Day ASAP Optimization
Schedule jobs as early as possible across multiple days:
DayIndex Logic
dayIndex represents the earliest day a job can be scheduled:
dayIndex: 0
→ Can be scheduled on day 1dayIndex: 1
→ Cannot be scheduled before day 2dayIndex: 2
→ Cannot be scheduled before day 3
Combined with asapWeight
, this creates pressure to schedule jobs on their earliest available day.
Complex Time Scenario
Combining all advanced time features:
Expected Behavior
-
Morning appointment:
- Natural arrival: 8:12
- Snapped to: 8:15
- Service: 8:20-9:05 (with padding)
- Depart: 9:10
-
Afternoon installation:
- Natural arrival: 13:08
- Snapped to: 13:15
- Service: 13:25-15:25 (with padding)
- Depart: 15:35
Performance Optimization
Time Feature Impact
Performance Considerations
Performance Considerations
Low Impact:
- snapUnit with reasonable intervals (≥300s)
- Simple padding values
- Basic overtime configuration
Medium Impact:
- Small snapUnit values (
< 300s
) - Multiple time-dependent matrices
- Complex overtime structures
High Impact:
- Very small snapUnit (60s)
- Many time period transitions
- Complex padding patterns
Best Practices
Choose Appropriate Precision
- Use 15-minute slots unless finer control needed
- Avoid snapUnit < 300 for large problems
Balance Features
- Don’t combine all features unless necessary
- Test impact of each feature separately
Monitor Wait Time
- Track wait time statistics
- Adjust snapUnit if excessive waiting
Validate Time Logic
- Ensure padding + duration fits in windows
- Check overtime doesn’t conflict with shifts
Troubleshooting
Excessive Wait Times
Excessive Wait Times
Symptom: Drivers waiting long periods
Causes:
- snapUnit too large
- Poor alignment with job windows
- Suboptimal route sequencing
Solutions:
- Reduce snapUnit value
- Adjust time windows
- Increase waitTimeWeight
Jobs Not Fitting in Windows
Jobs Not Fitting in Windows
Symptom: Jobs unassigned due to time
Causes:
- Padding makes job too long
- snapUnit pushes beyond window
- Travel time underestimated
Solutions:
- Reduce padding
- Widen time windows
- Verify travel time accuracy
Unexpected Overtime
Unexpected Overtime
Symptom: Routes extending past regular hours
Causes:
- snapUnit delaying arrivals
- Padding accumulating
- Poor ASAP prioritization
Solutions:
- Increase overtimeWeight
- Review time feature combinations
- Adjust shift definitions