Skip to main content
Stay updated with the latest enhancements, features, and improvements to the Solvice Vehicle Routing Problem (VRP) API. Each release brings new capabilities to help you optimize your routing operations more effectively.
Cost model parity, flexible break locations, and depot warm-starts

πŸ’Ά Cost Model & Weights Parity

The costs and weights optimization models now cover the same ground, so you can express every trade-off in whichever style you prefer.
  • depotCost - cost per depot visit, controlling the trade-off between routing efficiency and depot cost
  • depotEndCost - cost for ending a route at a depot
Use Cases:
  • Mix and match cost- and weight-based tuning across different parts of your configuration
  • Fine-tune overtime, preferred-resource, and region trade-offs without switching optimization models

🚫 Flexible Unavailability Break Locations

Unavailability breaks can now use separate start and end locations instead of a single fixed location.
Use Cases:
  • Drop a vehicle at a depot for a training session and pick up a different one afterwards
  • Model shift changes or vehicle swaps that occur mid-route
The existing single location field still works for breaks that start and end in the same place, but cannot be combined with start/end.

πŸ“ Depot Warm-Starts & Visible Depot Stops

Pin a job to be followed by a specific depot visit with the new initialDepot field, and see depot stops clearly marked in the response.
Depot stops now appear explicitly in trip visits with "activity": "DEPOT", so maps and polylines can render them accurately alongside regular pickups and deliveries.Use Cases:
  • Warm-start the solver with a known depot preference for a job
  • Render depot stops distinctly on maps and timelines
initialDepot requires depots to be defined in the request.
Depot management and pooled resource rules

🏭 Depot Management Suite

A set of new capabilities for routing problems that involve loading, unloading, and disposal sites (waste collection, distribution, returns).
Force a resource to visit a depot to unload its remaining load before finishing its shift.
The unloadBeforeEndShift flag only fires when the vehicle still carries non-zero load at the end of its route, and only when depots are configured. Without it, a vehicle may end its shift while still loaded.

πŸ‘₯ Pooled Resource Period Rules

Period rules (work time, service time, drive time, complexity, and job-type limits per period) can now be shared across a pool of resources using a groupTag.
When a groupTag is set, the limit becomes a single shared bound across every resource that declares an identical rule (same period and fields) with that tag β€” instead of applying per resource.Use Cases:
  • Cap how many of a job type a team collectively handles per week
  • Share a contractor budget across multiple vehicles
  • Pool drive-time or complexity limits across a crew
Duty breaks, partial sequencing, and per-suggestion explanations

β˜• Duty Breaks

A new DUTY break type triggers a mandatory break after a cumulative amount of work time (drive + service), complementing the existing DRIVE break (which counts driving time only).
Result: After 6 hours (21600s) of combined driving and service, the driver must take a 30-minute break.

πŸ”— True Partial Planning for SEQUENCE

SEQUENCE relations now support genuine partial planning β€” when some jobs in a sequence can’t be assigned, the solver still optimizes the order of the jobs that can be, instead of penalizing the whole relation.

πŸ” Explanations Per Suggestion

The suggest endpoint can now return a full explanation for each individual suggestion, so you can see exactly why a proposed change scores the way it does β€” not just the final recommendation.

🏷️ Request Metadata

Attach arbitrary metadata to any request and have it echoed back on the response β€” handy for correlating jobs with your own systems.
Curbside-aware routing

πŸ›» Curbside Routing

Enable curbside-aware routing so vehicles approach each location from the correct side of the road.
Use Cases:
  • Waste collection on residential streets
  • Right-hand/left-hand-side pickups and drop-offs
  • Any operation where the approach side matters for safety or access
Cost-based optimization

πŸ’Ά Cost-Based Optimization

Optimize routes directly in monetary terms instead of tuning abstract weights. Provide a costs configuration and the solver derives its internal weights from your real business costs in EUR/USD.
Key Points:
  • Costs are more intuitive than manual weight tuning β€” they map to real business expenses
  • Covers driving, waiting, overtime, distance, time-window violations, preferred-resource and skill/ranking violations, workload imbalance, region adherence, and resource activation
  • If both costs and weights are provided, costs take precedence
Use Cases:
  • Report optimization results in real currency
  • Align routing trade-offs with actual P&L
  • Compare scenarios by total operating cost
AI-assisted routing with MCP integration

πŸ€– MCP Server Integration (AI-Assisted Routing)

Connect AI assistants directly to the VRP solver through the Model Context Protocol (MCP).
The MCP server exposes 8 action tools that AI assistants can use to solve routing problems:
  • vrp-solve / vrp-solve-sync - Full route optimization
  • vrp-evaluate / vrp-evaluate-sync - Score existing solutions
  • vrp-suggest / vrp-suggest-sync - Get improvement suggestions
  • vrp-change / vrp-change-sync - Apply incremental changes
Key Benefits:
  • Natural language problem description
  • Real-time streaming via SSE transport
  • AI understands constraints and trade-offs
  • Interactive route refinement
Skill-based duration adjustments

⚑ Proficiency-Based Duration Modifier

Adjust job durations based on resource skill levels.
Different resources complete the same job at different speeds. A senior technician might finish an installation in 30 minutes while a junior takes 45 minutes.Proficiency modifies the base job duration without changing the job definition.
Return-to-depot optimization

🏁 Last Location Drive Time Optimization

Improved constraint ordering for efficient return-to-depot routing.The solver now better considers travel time from the last job back to the resource’s end location when ordering constraints, ensuring routes don’t end far from the depot.How it works:
  • Automatically factors in return travel when comparing route options
  • Penalizes routes that end geographically far from the depot
  • Works with existing driveTimeWeight for consistent optimization
Benefits:
  • Prevents routes ending far from depot
  • Reduces dead-heading at end of day
  • Better overall route efficiency
  • No configuration needed - automatically applied
Clustering, distance limits, and debugging tools

πŸ“ Geographic Clustering & Job Proximity

Improve route compactness with intelligent job proximity scoring.
Benefits:
  • Reduces backtracking between distant jobs
  • Creates more geographically compact routes
  • Configurable weight to balance with other objectives
  • Better cluster assignment for multi-vehicle problems

πŸ”· H3 Grid System for Geographic Clustering

Leverage Uber’s H3 hexagonal grid system for precise geographic clustering via the clustering endpoint.
H3 Resolution Guide:

πŸ“ Maximum Drive Distance

Limit total kilometers per resource shift.
Use Cases:
  • Vehicle range limitations (EVs)
  • Company policy compliance
  • Lease mileage restrictions
  • Driver safety regulations

πŸ› Debug Endpoint

New /debug endpoint for troubleshooting solver behavior.
Returns:
  • Internal solver state
  • Constraint violation details
  • Score breakdown
  • Shadow variable values
  • Diagnostic information for support tickets
Relation weight customization

βš–οΈ Custom Relation Weights

Fine-tune the importance of individual relations with custom weight modifiers.
Use Cases:
  • Prioritize certain relations over others
  • Make critical sequences non-negotiable (high weight)
  • Allow flexibility on less important pairings (low weight)
  • Balance relation penalties with other optimization objectives
Custom maps and relation constraints

πŸ—ΊοΈ External Distance Matrices

Use pre-computed distance matrices from external services with time-of-day traffic patterns.External distance matrices allow you to provide custom travel time and distance data instead of relying on built-in routing engines. This is perfect for:
  • Faster Processing: Skip real-time distance calculations using pre-computed matrices
  • Custom Traffic: Use your own traffic data or specialized routing services
  • Time-Based Routing: Different matrices for morning rush, midday, evening periods
  • Vehicle-Specific: Separate matrices for cars, trucks, bikes with their unique constraints
  • Enterprise Integration: Seamlessly integrate with existing routing infrastructure
Upload your distance matrices to routing.solvice.io/table/upload and reference them by ID.

βš–οΈ Hard Minimum Wait for Job Relations

Fine-tune constraint strength for job relations with the hardMinWait flag.
When hardMinWait: true (default), the minimum time interval becomes a hard constraint that cannot be violated. Set to false to make it a soft preference that can be traded off against other objectives.Use Cases:
  • Mandatory cooling/drying periods between services
  • Required waiting time for concrete curing, paint drying
  • Compliance with safety regulations
Enhanced preference systems and intelligent job handling

🎯 Resource Ranking System

Express nuanced preferences for resource-job assignments with our new flexible ranking system.
The ranking system allows you to specify preferred resources for each job on a 1-100 scale, where lower values indicate stronger preference.Key Benefits:
  • Implement customer preferences without hard constraints
  • Balance skill levels across assignments
  • Optimize for service quality alongside efficiency
  • Maintain flexibility in resource allocation
Rankings work alongside existing constraints like tags and regions. They provide soft preferences that the optimizer considers when making assignments.

πŸ“ Location Inheritance

Simplify multi-stop scenarios where jobs share locations through automatic location inheritance.
Perfect for:
  • Pickup and delivery pairs
  • Multi-service appointments at same address
  • Loading/unloading operations
  • Any co-located job sequences

πŸ” Enhanced Unassigned Job Explanations

Get detailed, actionable insights when jobs cannot be assigned to understand exactly why and how to resolve issues.Common Unassignment Reasons:
  • DATE_TIME_WINDOW_CONFLICT - No overlap between job window and shifts
  • TRIP_CAPACITY / RESOURCE_CAPACITY - Vehicle capacity insufficient
  • TAG_HARD / TYPE_REQUIREMENT - Required tags not available
  • MAX_DRIVE_DISTANCE - Location outside service area

βš–οΈ Job Complexity & Fair Distribution

Define job difficulty independent of duration to ensure fair workload distribution across your team.
Job complexity represents the mental, physical, or technical difficulty of a task, separate from how long it takes.Examples:
  • Simple delivery: Duration 30min, Complexity 20
  • Complex installation: Duration 30min, Complexity 80
  • Heavy lifting: Duration 15min, Complexity 70

🚦 Full TomTom Traffic Integration

Enhanced real-time and predictive traffic routing with complete TomTom API integration.
Key Enhancements:
  • Live Traffic: Real-time congestion avoidance
  • Predictive Routing: Historical patterns for future planning
  • Departure Optimization: Find best start times to avoid traffic
  • Vehicle-Specific Routes: Truck restrictions and clearances
  • 15% Average Time Savings: Compared to static routing

πŸ’° Resource Hourly Wage Optimization

Optimize routes considering different hourly rates to balance service quality with labor costs.
Optimization Strategies:
  • Assign simple tasks to lower-cost resources
  • Use senior staff for complex/critical jobs
  • Minimize overtime by balancing workloads
  • Consider total cost including travel time

🚫 Unavailability Breaks

Model realistic schedules with unavailability periods for meetings, training, or personal time.
Supported Break Types:
  • UNAVAILABILITY - Cannot be scheduled during this period
  • WINDOWED - Flexible timing within window
  • DRIVE - Mandatory after specified driving time
New relation types and large-scale optimizations

πŸ₯‡ First Job Relation

Force specific jobs to be scheduled first in a resource’s route by submitting a SEQUENCE relation with a single job ID. When a SEQUENCE relation contains only one job, the solver pins that job to be scheduled first, rather than requiring a separate relation type.
Common Use Cases:
  • Warehouse pickups before deliveries
  • Equipment collection at start of day
  • Mandatory briefings or check-ins
  • Load vehicles before service rounds

πŸ”€ Group Sequence Relations

Define execution order between groups of jobs using tags with the GROUP_SEQUENCE relation.
Benefits:
  • Implement service level agreements
  • Handle emergency vs routine work
  • Manage phased operations
  • Prioritize revenue-generating activities

πŸš€ Large-Scale TSP Optimizations

Significant performance improvements for Traveling Salesman Problem instances with 100+ stops.
Algorithm Enhancements:
  • Advanced nearest neighbor initialization
  • Parallel 2-opt and 3-opt local search
  • Adaptive neighborhood sizing
  • Memory-efficient distance matrix handling
Performance Gains:
  • 65% faster for 500+ job instances
  • 40% memory reduction
  • Better solution quality (+8% average)
  • Stable performance up to 10,000 jobs
10,000+ job support and dynamic traffic routing

πŸ“ˆ Enterprise-Scale Problem Handling

Revolutionary improvements for handling massive routing problems with 10,000+ jobs.
1

Intelligent Chunking

Dynamic partitioning based on geographic clusters and time windows for optimal sub-problem creation.
2

Parallel Processing

Multi-threaded execution with smart work distribution across CPU cores.
3

Adaptive Algorithms

Automatic algorithm selection based on problem characteristics and size.
4

Memory Optimization

Streaming distance calculations and compressed data structures reduce memory by 60%.
Real-World Results:
  • Before: 5,000 job limit, 45-minute processing
  • After: 50,000 jobs supported, 15-minute average
  • Quality: Maintained 98%+ optimality
  • Stability: 99.9% completion rate

πŸ—ΊοΈ TomTom Traffic Integration

Time-dependent routing with real-world traffic conditions for accurate ETAs and optimal departure times.
The solver now uses a three-dimensional distance cube (origin Γ— destination Γ— time) instead of a static two-dimensional matrix:
  1. Morning Rush (6-9 AM): Increased travel times on highways
  2. Midday (9 AM-4 PM): Normal traffic conditions
  3. Evening Rush (4-7 PM): City center congestion
  4. Night (7 PM-6 AM): Reduced traffic, faster routes
The optimizer automatically:
  • Adjusts departure times to avoid traffic
  • Reroutes around predicted congestion
  • Updates ETAs based on time of day
  • Balances traffic avoidance with service windows
Configuration Example:
Extended planning horizons and synchronous processing

πŸ“… Multi-Day Job Support

Execute long-duration jobs across multiple shifts and days with intelligent work continuation.

⚑ Synchronous API Endpoints

New /sync/* endpoints for immediate responses perfect for interactive applications.
Available Endpoints:
  • /sync/solve - Instant route optimization
  • /sync/evaluate - Real-time solution scoring
  • /sync/suggest - Live optimization hints
Key Features:
  • Sub-2 second response times
  • No webhook configuration
  • Automatic timeout handling
  • Perfect for UI integration
Synchronous endpoints have strict limits:
  • Maximum 50 jobs per request
  • 2-second timeout (configurable up to 5s)
  • Automatic fallback to async for larger problems
Complete architectural overhaul

πŸŽ‰ VRP API v2 Release

After 2 years of development, v2 brings a complete architectural redesign focused on scalability, reliability, and performance.

Architecture Evolution

From Kubernetes to Serverless:
  • Google Cloud Run for auto-scaling
  • Cloud Pub/Sub for async processing
  • Cloud Storage for results
  • 90% reduction in operational overhead
  • 99.99% uptime SLA

Migration Guide

1

Update Base URL

Change from api.solvice.io/v1 to api.solvice.io/v2
2

Review Breaking Changes

  • vehicle renamed to resource
  • timeWindow now supports arrays
  • New required fields in response
3

Test Thoroughly

Use our migration validator endpoint to check your requests
4

Gradual Rollout

Run v1 and v2 in parallel during transition
Success Story: Major logistics provider migrated 50,000 daily optimizations to v2 with zero downtime and 35% cost reduction.

Stay Updated

API Reference

Detailed documentation for all endpoints

Migration Guide

Step-by-step v1 to v2 migration

Feature Guides

In-depth guides for each feature

Release Notes

Detailed technical release notes
Subscribe to our RSS feed or follow @solvice_io for real-time updates about new features and improvements.