Documentation Index
Fetch the complete documentation index at: https://docs.solvice.io/llms.txt
Use this file to discover all available pages before exploring further.
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
- 5 Minutes
- 15 Minutes
- 30 Minutes
- 1 Hour
Impact on Routes
Job Padding
Add buffer time before and after jobs:Padding Use Cases
Setup/Teardown Time
Setup/Teardown Time
Customer Preparation
Customer Preparation
Safety Buffer
Safety Buffer
Padding vs snapUnit Interaction
Advanced Overtime Management
Configure flexible overtime with graduated penalties:Overtime Strategies
- Simple Overtime
- Graduated Penalties
- Hard Cutoff
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
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
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
- Small snapUnit values (
< 300s) - Multiple time-dependent matrices
- Complex overtime structures
- 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
Troubleshooting
Excessive Wait Times
Excessive Wait Times
Symptom: Drivers waiting long periodsCauses:
- snapUnit too large
- Poor alignment with job windows
- Suboptimal route sequencing
- Reduce snapUnit value
- Adjust time windows
- Increase waitTimeWeight
Jobs Not Fitting in Windows
Jobs Not Fitting in Windows
Symptom: Jobs unassigned due to timeCauses:
- Padding makes job too long
- snapUnit pushes beyond window
- Travel time underestimated
- Reduce padding
- Widen time windows
- Verify travel time accuracy
Unexpected Overtime
Unexpected Overtime
Symptom: Routes extending past regular hoursCauses:
- snapUnit delaying arrivals
- Padding accumulating
- Poor ASAP prioritization
- Increase overtimeWeight
- Review time feature combinations
- Adjust shift definitions
Related Features
Time Windows
Core time scheduling features
Cost Optimization
Overtime cost configuration
Break Management
How breaks interact with timing
Multi-Day Planning
Extended planning horizons