Skip to main content

Resource Management

Resources represent the vehicles, drivers, or teams that execute your routes. This guide covers advanced resource configuration including multi-shift scheduling, workload balancing, period constraints, and geographic restrictions.

Basic Resource Configuration

Every resource requires at minimum a name and shift definition:

Essential Resource Properties

string
required
Unique identifier for the resource
array
required
Working periods when the resource is available
array[integer]
Loading capacity in multiple dimensions (e.g., [weight, volume])
array[Tag]
Skills, certifications, or capabilities
array[string]
Geographic areas where resource can operate

Multi-Shift Resources

Resources can work multiple shifts per day or across different days:
Each shift can have different start/end locations. This is useful for drivers who:
  • Start from home in the morning
  • End at a depot
  • Continue from previous day’s end location

Shift Properties

datetime
required
Shift start time (ISO 8601 format)
datetime
required
Shift end time
Location
Starting location for this shift (defaults to first job location)
Location
Ending location for this shift (defaults to last job location)
datetime
Latest possible end time with overtime penalty
array[Break]
Scheduled breaks during the shift

Period Constraints

Control resource utilization over explicit time windows using the rules array. Each rule pairs a period (an explicit from/to date-time window — there is no "DAY"/"WEEK"/"MONTH" keyword) with one or more direct limit fields:
There is no rolling DAY/WEEK/MONTH period shorthand. To cap a resource per day and per week, declare one rule per day (its period spanning that specific day) plus one rule spanning the whole week — each with an explicit from/to.

Available Rule Fields

maxWorkTime/minWorkTime: service time + drive time within the period
Full field list on a rule: period (required, {from, to}), minWorkTime/maxWorkTime, minServiceTime/maxServiceTime, minDriveTime/maxDriveTime, minJobComplexity/maxJobComplexity, jobTypeLimitations (map of job type to max count), groupTag (see Resource Period Rules for pooling). max* violations are enforced as hard constraints; min* violations are penalized as medium-tier (utilization) constraints — both scaled by options.weights.periodRuleWeight.

Workload Balancing

Distribute work fairly across resources:

Fair Workload Per Resource

Balance total work time across all resources:
How it works:
  • Calculates average workload across all resources
  • Penalizes deviations from the average
  • Higher weight = stronger preference for balance

Fair Workload Per Trip

Balance work within individual trips/routes:
Use cases:
  • Ensure lunch breaks fall at reasonable times
  • Prevent very short or very long individual routes
  • Balance morning vs afternoon workloads

Geographic Restrictions

Region-Based Assignment

Limit resources to specific geographic areas:
Jobs with regions can ONLY be assigned to resources that include that region in their regions list.

Distance-Based Restrictions

Limit how far resources travel from their base:

Skill and Tag Management

Match resource capabilities with job requirements:

Tag Matching Rules

1

Hard Tags Must Match

If a job has a hard tag, only resources with that tag can be assigned
2

Soft Tags Preferred

Soft tags create preference but aren’t required
3

Weight Controls Strength

Higher weight values make soft preferences stronger

Preferred Resources

Allow soft preferences for specific resource assignments:
Resource Assignment Priority:
  1. allowedResources - Hard constraint (if specified)
  2. preferredResources - Soft preference with penalty
  3. Tag matching - Based on hard/soft tags
  4. General pool - Any available resource

Complex Example: Field Service Team

Here’s a comprehensive example combining multiple resource features:

Performance Optimization

Resource Pool Size

Performance Impact of Resource Features:
  • More resources = more routing possibilities
  • Complex constraints = longer solve times
  • Many tags/regions = increased matching complexity
Recommendations:
  • Keep active resource pool under 100 for real-time solving
  • Use shift patterns to reduce combinations
  • Limit tag variations to necessary distinctions

Best Practices

1

Start Simple

Begin with basic resource definitions and add constraints incrementally
2

Use Appropriate Constraints

  • Hard constraints for legal/safety requirements
  • Soft constraints for preferences
  • Period rules for compliance
3

Test Resource Utilization

Monitor these metrics:
  • Average utilization per resource
  • Overtime frequency
  • Unassigned jobs due to resource constraints
4

Balance Flexibility and Control

Too many restrictions can make problems infeasible

Troubleshooting

Common Issues

Possible Causes:
  • Preferred resource doesn’t have required tags
  • Resource shift doesn’t cover job time window
  • Capacity constraints prevent assignment
  • Travel time makes assignment inefficient
Solutions:
  • Verify resource has all required capabilities
  • Check shift coverage and time windows
  • Increase preferredResourceWeight
  • Review overall constraint interactions
Possible Causes:
  • Geographic clustering of jobs
  • Skill requirements limiting options
  • Time window constraints
  • Different shift lengths
Solutions:
  • Increase fairWorkloadPerResource weight
  • Adjust shift patterns for better coverage
  • Consider redistributing regions
  • Add more flexible resources
Possible Causes:
  • Constraints too restrictive
  • Not enough resources for workload
  • Poor shift distribution
Solutions:
  • Review and adjust period rule values
  • Add additional resources or shifts
  • Enable partial planning
  • Distribute work across more days

Time Scheduling

Detailed shift configuration and time management

Cost Optimization

Resource costs and optimization strategies

Tag System

Advanced tag matching and ranking

Break Management

Configure breaks within shifts