{
  "occupancy": 0.78,  // 78% utilized
  "totalWorkTimeInSeconds": 28080,
  "totalAvailableTimeInSeconds": 36000,
  "breakdown": {
    "travelTime": 14400,  // 40%
    "serviceTime": 12600,  // 35%
    "waitTime": 1080       // 3%
  }
}

Solution Quality Metrics

Understanding solution quality goes beyond simple feasibility. This guide explains the key metrics for evaluating VRP solutions, how to interpret them, and strategies for improvement.

What Makes a Good Solution?

A high-quality VRP solution balances multiple objectives:

┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│  FEASIBLE   │ │  EFFICIENT  │ │   BALANCED  │ │  CUSTOMER   │ │   COST      │
│             │ │             │ │             │ │  FOCUSED    │ │ EFFECTIVE   │
├─────────────┤ ├─────────────┤ ├─────────────┤ ├─────────────┤ ├─────────────┤
│ • All jobs  │ │ • Min travel│ │ • Fair work │ │ • On time   │ │ • Min fleet │
│ • Capacity  │ │ • Min wait  │ │ • Occupancy │ │ • Preferences│ │ • Min hours │
│ • Time OK   │ │ • Short routes│ │ • Utilization│ │ • Priorities│ │ • Min overtime│
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘

The five pillars of solution quality

Core Quality Metrics

1. Feasibility Rate

The percentage of jobs successfully assigned:

Feasibility Rate = (Assigned Jobs / Total Jobs) × 100%
{
  "totalJobs": 50,
  "assignedJobs": 50,
  "unassigned": [],
  "feasibilityRate": 100
}

Ideal scenario - all jobs scheduled.

2. Occupancy

How full the schedule is in terms of work time versus available time:

Occupancy = (Total Work Time / Total Available Time) × 100%

Work Time includes:

  • Travel time
  • Service time
  • Wait time (if any)

Available Time:

  • Shift duration minus breaks
{
  "occupancy": 0.78,  // 78% utilized
  "totalWorkTimeInSeconds": 28080,
  "totalAvailableTimeInSeconds": 36000,
  "breakdown": {
    "travelTime": 14400,  // 40%
    "serviceTime": 12600,  // 35%
    "waitTime": 1080       // 3%
  }
}

Interpreting Occupancy:

  • < 60%: Underutilized - consider reducing fleet
  • 60-85%: Optimal range - good efficiency with buffer
  • > 85%: High utilization - limited flexibility
  • > 95%: Over-stretched - risk of delays

3. Workload Fairness

Measures how evenly work is distributed across resources:

Fairness = 1 - (Standard Deviation / Mean Work Time)
Unfair Distribution (0.45)          Fair Distribution (0.92)
Resource 1: ████████████████ 8h      Resource 1: ████████ 4h
Resource 2: ██ 1h                    Resource 2: ███████ 3.5h
Resource 3: ████ 2h                  Resource 3: ████████ 4h
Resource 4: ████████████████ 8h      Resource 4: ███████ 3.5h

Workload distribution visualization

{
  "workloadFairness": 0.85,
  "resourceWorkloads": [
    {"resource": "driver-1", "workTime": 420, "deviation": 15},
    {"resource": "driver-2", "workTime": 390, "deviation": -15},
    {"resource": "driver-3", "workTime": 405, "deviation": 0}
  ],
  "averageWorkTime": 405,
  "standardDeviation": 15
}

4. Travel Efficiency

Multiple metrics evaluate routing efficiency:

Total Distance & Time

{
  "totalTravelDistanceInMeters": 245000,
  "totalTravelTimeInSeconds": 28800,
  "averageSpeed": 30.6  // km/h
}

Distance per Job

Efficiency = Total Distance / Number of Jobs

Lower values indicate better clustering and routing.

Circuity Factor

Circuity = Actual Distance / Direct Distance

Values close to 1.0 indicate direct routes.

5. Time-Based Metrics

On-Time Performance

{
  "onTimeDeliveries": 47,
  "lateDeliveries": 3,
  "onTimeRate": 0.94,
  "averageDelay": 780  // seconds
}

Wait Time Analysis

{
  "totalWaitTimeInSeconds": 3600,
  "jobsWithWaitTime": 8,
  "averageWaitPerJob": 450,
  "waitTimePercentage": 0.05  // 5% of total time
}

High wait times indicate:

  • Poor time window alignment
  • Suboptimal route sequencing
  • Need for dynamic scheduling

Advanced Quality Indicators

Service Level Metrics

{
  "priorityLevels": {
    "high": {"total": 10, "assigned": 10, "rate": 1.0},
    "medium": {"total": 25, "assigned": 23, "rate": 0.92},
    "low": {"total": 15, "assigned": 12, "rate": 0.8}
  },
  "weightedFulfillment": 0.93
}

Cost Effectiveness

{
  "totalResources": 10,
  "activeResources": 7,
  "utilizationRate": 0.7,
  "costPerJob": 45.20,
  "costPerKm": 2.10
}

Comparing Solutions

When evaluating alternative solutions:

Multi-Criteria Comparison

Metric              Solution A    Solution B    Solution C
---------------------------------------------------------
Feasibility         100%          95%           100%
Travel Time         4.2h          3.8h          4.5h
Fleet Size          5             4             6
Workload Fairness   0.85          0.92          0.78
Cost                $1,250        $1,180        $1,320
Overall Score       8.2/10        8.7/10        7.5/10

Solution comparison matrix

Pareto Optimization

Often no single “best” solution exists. Consider Pareto-optimal solutions:

A solution is Pareto-optimal if improving one metric necessarily worsens another. Keep multiple Pareto-optimal solutions for different scenarios.

Weighted Scoring

Create a composite score based on business priorities:

const weights = {
  feasibility: 0.3,
  efficiency: 0.25,
  cost: 0.25,
  service: 0.2
};

const compositeScore = 
  (feasibilityRate * weights.feasibility) +
  (efficiencyScore * weights.efficiency) +
  (costScore * weights.cost) +
  (serviceScore * weights.service);

Improvement Strategies

For Low Feasibility

1

Enable Partial Planning

{"options": {"partialPlanning": true}}
2

Relax Constraints

Convert hard constraints to soft where possible

3

Add Resources

Increase fleet size or extend shifts

4

Review Requirements

Check if all constraints are necessary

For Poor Efficiency

{
  "weights": {
    "travelTimeWeight": 5,
    "regionMinimisationWeight": 10
  }
}

For Imbalanced Workload

{
  "options": {
    "fairWorkloadPerResource": true,
    "workloadSensitivity": 0.1,  // 10% tolerance
    "weights": {
      "workloadSpreadWeight": 100
    }
  }
}

Monitoring Quality Over Time

Track metrics to identify trends:

{
  "date": "2024-03-15",
  "metrics": {
    "feasibilityRate": 0.96,
    "occupancy": 0.78,
    "onTimeRate": 0.94,
    "costPerJob": 42.50
  }
}

Quality Benchmarks

Industry standards for different sectors:

SectorFeasibilityOccupancyOn-TimeFairness
Parcel Delivery98%+75-85%95%+0.80+
Field Service95%+65-75%90%+0.85+
Food Delivery99%+70-80%98%+0.75+
Medical Transport100%60-70%99%+0.90+

Benchmarks vary by region, business model, and service level agreements. Use these as starting points and adjust based on your specific requirements.

Best Practices

Quality Management Guidelines:

  1. Define Success Metrics: Establish clear KPIs before optimization
  2. Regular Monitoring: Track metrics daily/weekly
  3. Iterative Improvement: Make small, measured changes
  4. Balance Trade-offs: No solution is perfect in all dimensions
  5. Document Decisions: Record why certain trade-offs were made
  6. Benchmark Regularly: Compare against historical performance