Resumable Jobs
resumable lets a long job be interrupted by a period in which the resource is unavailable, and
resumed once that period ends. Without it, a job can never straddle an unavailability: the solver
pushes the whole job until after the unavailability ends.
Overview
Settingresumable: true on a job enables:
- The job to be paused by an overlapping
UNAVAILABILITYbreak and resumed afterward - Long jobs to fit into shifts that contain a fixed unavailability
- Any travel to and from the unavailability’s own location to be accounted for
Basic Configuration
Mark the job resumable, and express the interruption as anUNAVAILABILITY break:
Default Behavior: jobs are non-resumable (
resumable: false). Only mark a job resumable when
pausing the work halfway is operationally acceptable.An
UNAVAILABILITY break has no duration field — it is a fixed interval, and its length is
simply to minus from. This is the trade-off versus a WINDOWED break: you gain the ability to
interrupt a job, and you give up the solver’s freedom to choose when within a window the break is
taken.How Resumable Jobs Work
Break interruption
1
Job starts
The resource arrives and begins the resumable job.
2
Unavailability begins
The unavailability’s fixed
from time arrives and the job is paused.3
Break is taken
If the break defines
start/end locations, travel from the job to start and back from end to
the job is added to the job’s duration. With no locations, the pause costs only the interval itself.4
Job resumes and completes
The remaining work is carried out after
to, and the job’s departure time is pushed by the length
of the interruption.Example timeline
A 4-hour resumable job started at 08:00, with an unavailability from 12:00 to 13:00:resumable: false cannot straddle 12:00–13:00 at all: the solver either starts
it early enough to finish before 12:00, or pushes its start to 13:00.
Interaction with break types
Unavailability break
The interruption mechanism. Optionally give itstart/end locations when the resource has to be
somewhere specific (end requires start, and defaults to it):
Windowed break
Flexible in when it is taken, but it never interrupts a job:WINDOWED break is attached to the first job whose ready time falls after from, so
with a single break per shift the to bound has little effect, and if no job follows within the
shift the break is not placed at all. Use UNAVAILABILITY when the break must be honoured.
Drive break
Triggered by accumulated driving time, between jobs:Use Cases
Long service appointments
A 6-hour job in a shift that contains a fixed midday unavailability:resumable: true this instance is infeasible: 6 hours of work cannot fit into any gap
between the unavailabilities.
Mixed job types
Constraints and Behavior
Solver behavior: unavailability intervals are fixed input, not decisions — the solver does not
choose when they occur. What it optimises is which jobs sit around them, and whether a resumable
job is worth starting before one.
Troubleshooting
`resumable: true` appears to do nothing
`resumable: true` appears to do nothing
Cause: the resource’s breaks are
WINDOWED, DRIVE or DUTY. Those are placed between jobs
and never interrupt one, so the flag is never consulted.Solution: model the interruption as an UNAVAILABILITY break with an explicit from/to.Job not scheduled despite being resumable
Job not scheduled despite being resumable
Causes:
- The time window is too tight for the job plus the interruption
- The break’s
start/endlocations add too much detour travel - Other constraints (hard tags, shift end, overtime limit) prevent assignment
- Widen the job’s time windows, or extend the shift / allow overtime
- Omit
start/endon the unavailability so the pause adds no travel - Enable
options.explanationto see which constraint is binding
Break placement looks inefficient
Break placement looks inefficient
Cause:
UNAVAILABILITY is a fixed interval by design — the solver cannot move it.Solution: if the timing is genuinely flexible and no job needs interrupting, use a WINDOWED
break instead and let the solver choose the moment.Performance Impact
Related Features
Break Management
Configure the four break types and their rules
Time Windows
Coordinate job timing with breaks
Job Complexity
Balance workload across resources
Advanced Constraints
Additional scheduling constraints