Job Type Capacity Constraints
Job Type Capacity Constraints enable you to limit the number of specific job types that resources can perform within daily shifts, extended periods, and granular time blocks. This feature is essential for healthcare, field service, and other industries where resource specialization and workload limits are critical for operational safety and compliance.Overview
Resources often have limitations on how many specialized tasks they can perform:- Healthcare: A nurse may only perform 3 wound care appointments per day
- Field Service: A technician may handle only 2 complex installations per shift
- Consulting: A specialist may conduct maximum 4 initial assessments in the morning
Key Features
Multi-Level Constraints
Set limits at shift-level, period-level, and sub-shift time blocks
Multiple Job Types
Jobs can have multiple job types for flexible classification
Sub-Shift Periods
Different limits within portions of a shift (e.g., morning vs afternoon)
Flexible Limits
Unlimited capacity when no limits are specified
Basic Implementation
Job Type Assignment
Assign job types to jobs using thejobTypes
field:
Jobs can have multiple job types. Each job type in the list counts toward the respective capacity limits.
Shift-Level Limits
Set daily limits for job types within individual shifts:Advanced Period-Based Constraints
Extended Period Limits
Set limits across multiple days or weeks using period rules:Sub-Shift Time Blocks
New Feature: Create different limits for specific time periods within a single shift
Use Cases by Industry
Healthcare
- Nursing
- Home Care
Field Service
- Technical Installations
- Consultancy
Constraint Behavior
Enforcement Logic
Job type constraints are enforced as hard constraints, meaning:- ✅ Solutions violating job type limits are considered infeasible
- ⚠️ Jobs exceeding limits will be assigned to other resources or remain unassigned
- 📊 Constraint violations appear in the explanation with
JOBTYPE_VIOLATION
Overlapping Periods
When multiple period rules apply to the same time:Response and Explanation
Successful Assignment
Constraint Violations
When job type limits are exceeded:Best Practices
Capacity Planning
Capacity Planning
- Start with generous limits and adjust based on real-world performance
- Consider peak demand periods when setting time-based limits
- Account for job complexity variations within job types
Job Type Design
Job Type Design
- Use descriptive, consistent job type names
- Group similar complexity tasks under the same job type
- Consider using hierarchical naming (e.g., “Care.Wound”, “Care.Initial”)
Period Configuration
Period Configuration
- Avoid excessive period overlap which can over-constrain the system
- Use sub-shift periods for different capacity needs throughout the day
- Consider break times and shift transitions when defining periods
Testing and Validation
Testing and Validation
- Test with realistic job distributions and volumes
- Validate that backup resources can handle overflow
- Monitor constraint violation patterns to optimize limits
Migration Guide
From Basic Scheduling
If you’re currently using basic job scheduling without job types:- Identify Job Categories: Group your jobs by complexity or skill requirements
- Add Job Types: Start with 2-3 main categories
- Set Conservative Limits: Begin with higher limits and adjust downward
- Test Gradually: Roll out to a subset of resources first
API Changes
All job type fields are optional and backward compatible:Performance Considerations
- Solver Impact: Minimal overhead (<2% in typical scenarios)
- Memory Usage: Efficient array-based tracking
- Scalability: Tested with 50+ job types and 100+ jobs per resource
- Best Performance: Use 5-10 job types per resource for optimal performance
Related Features
- Resource Period Rules - Base period functionality
- Capacity Management - Physical capacity constraints
- Advanced Constraints - Other business rule enforcement
- Priority - Job importance weighting
Job Type Capacity Constraints work seamlessly with other VRP features. They can be combined with capacity constraints, time windows, and priority settings for comprehensive scheduling control.