Solver as a Service
Sign Up Now →Sign Up Now

Rostering (rostering)

Employee Shift Scheduling (Rostering) problem domain. Supports industry-standard constraints and INRC-II competition features.

Previewproblem type Rosteringmanifest 2.0

Objectives#

What the solver optimizes. Enabled objectives are weighed together.

ObjectiveWhat it meansDirectionOn by defaultWeight
Maximize Coverage
maximize_coverage
Staff as many required shift slots as possible. Executable as the count of assignments; the per-shift REQUIREMENT is enforced separately as a hard constraint, so this objective ranks how much of the demand a legal roster actually serves.maximizeYes1.0
Minimize Cost
minimize_cost
Minimize total labor cost including overtimeminimizeYes1.0
Protect Employee Hard Constraints
minimize_employee_hard_violations
Treat employee blackouts, location eligibility, and skill eligibility as higher-priority hard constraints than employer coverage relaxationYes1000.0
Maximize Employee Preference Match
maximize_employee_preference_match
Prefer shifts, locations, and work patterns that employees have marked as preferredminimizeYes1.0
Balance Target Hours
balance_target_hours
Steer assignments toward employee target hours while respecting min/max hour contractsminimizeYes1.0

Problem inputs#

The setup values you send with a problem. The console renders them as form fields.

Problem Size#

InputNameTypeRequiredDefaultDescription
n_employeesNumber of EmployeesnumberYes10Workers available for shift assignments
n_shiftsNumber of ShiftsnumberYes21Total shifts to be covered in the planning period
planning_horizon_daysPlanning HorizonnumberNo7Number of days in the planning period

Shift Configuration#

InputNameTypeRequiredDefaultDescription
shifts_per_dayShifts per DaynumberNo3Number of shifts in each day
shift_duration_hoursShift DurationnumberNo8Default length of each shift
shift_typeShift PatternselectNostandard_threeType of shift configuration

Employee Constraints#

InputNameTypeRequiredDefaultDescription
max_hours_per_weekMax Hours per WeeknumberNo40Maximum working hours per employee per week
min_rest_between_shiftsMinimum Rest Between ShiftsnumberNo11Required rest period between consecutive shifts
fairness_weightFairness WeightnumberNo1.0Weight applied to workload balance soft constraints
preference_weightPreference WeightnumberNo1.0Weight applied to employee shift/location preference soft constraints

Constraints#

A hard constraint must hold or the problem is infeasible; a soft one adds a penalty when broken.

ConstraintWhat it requiresKindOn by default
Minimum Coverage
min_coverage
Every shift staffed to ITS OWN declared requirement. This read a scalar UI default of 3 employees per shift applied uniformly, with `per_shift` defaulting to FALSE and `fallback_to_default: true` on the RequiredStaff data source - a declared fail-open on a HARD rule. On INRC-II, where per-shift demand is 0, 1 or 2, that reported a shortfall of 973 against a roster the independent certificate scored as fully covered. The limit belongs to the shift, not to the manifest.hardYes
Optimal Coverage
optimal_coverage
Reach the OPTIMAL staffing target, not merely the hard minimum. SOFT, as INRC-II scores it: falling short of optimal is a penalty, falling short of minimum is a violation.softYes
Maximum Coverage
max_employees_per_shift
Maximum employees that can be assigned to a single shiftsoftNo
Maximum Hours
max_hours_per_employee
Maximum working hours per employee (weekly/period)hardYes
Minimum Hours
min_hours_per_employee
Minimum hours each employee should work (fairness)softNo
Minimum Rest Period
min_rest_between_shifts
Minimum rest hours required between consecutive shiftshardYes
Rolling 7-Day Hours Limit
rolling_7_day_hours
Maximum hours in any 7-day rolling window (EU WTD compliance)hardNo
Overtime Threshold
overtime_threshold
Hours after which overtime rates applysoftYes
Employee Availability
employee_availability
Respect employee availability calendarseligibilityYes
Skills/Qualifications Matching
skill_matching
Match employee skills to shift requirementshardNo
Consecutive Working Days
consecutive_working_days
Limits on consecutive working days without a day off. Enforced in the feasibility certificate from the problem field `max_consecutive_work_days`; weekly-repeating plans (metadata.scheduling_policy.weekly_repeating) evaluate runs across the week boundary.hardYes
Fortnight Hours Cap (No Day Off)
fortnight_hours_without_day_off
Hard cap on total hours across two weeks for an employee with no day off in the repeating weekly pattern. Enforced in the feasibility certificate from metadata.scheduling_policy.max_fortnight_hours_without_day_off (0/absent disables).hardYes
Consecutive Days Off
consecutive_days_off
Limits on consecutive days offsoftYes
Complete Weekends
complete_weekends
An employee who works any day of a weekend works both. Scored by how many days are missing, so one day short of a weekend ranks better than a single day of a longer set. Previously disabled, and keyed off a modulo pattern over shift INDEXES — which assumes a shift ordering the data never promised. The weekend a shift belongs to is now read from the shift.softYes
Maximum Weekends Worked
max_weekends_worked
Distinct weekends worked, against each employee's OWN contract. Counting distinct weekends rather than weekend shifts is the point: two shifts in one weekend is one weekend, and counting memberships would fail an employee who simply worked a single weekend twice. Previously disabled and declared as a bare `<=` against a single shared value of 2, which is wrong in one direction or the other for every roster it is applied to.softYes
Shift Type Succession
shift_succession
Shift types that may not follow one another on consecutive days. INRC-II declares these HARD. This rule was DECLARED all along and disabled, naming a contract `forbidden_sequence` that did not exist — disabled rules escape the registration gate, so it sat inert while the manifest advertised the capability. Five of INRC-II's six bans are also incidentally caught by the 11-hour rest rule, which is what let the gap hide: Day then Early leaves 14 hours of rest, is legal by every other rule here, and is forbidden. The greedy roster on n030w4 contained 44 of them, scored by nothing.hardYes
Workload Balance
workload_balance
Balance working hours across employeessoftYes
Shift Type Balance
shift_type_balance
Balance shift types (day/night) across employeessoftNo
Employee Shift Preferences
employee_preferences
Consider employee preferences when assigning shiftssoftNo
Employee Pairing
employee_pairing
Require or forbid specific employees from working togetherhardNo
Minimum total assignments
min_total_assignments
Each employee's contracted floor on shifts worked over the horizon. SOFT in INRC-II - loading it as hard is what made all three competition instances read infeasible.softYes
Maximum total assignments
max_total_assignments
The matching ceiling. Soft, for the same reason as the floor.softYes

Feasibility checks#

Checked before a solve, so an impossible problem is refused with the reason.

CheckWhat it testsOn failure
Demand existsVerify the planning window has required shift coverage.fail
Employee capacityTotal employee max-hour capacity must cover total demanded shift hours.fail
Weekly capacityFor each week in the planning window, weekly-capped employee capacity must cover that week's demanded hours.fail
Minimum-hour pressureEmployee minimum hours are pressure unless minimum-hours is explicitly configured as hard.warning
Skill capacityFor each required skill, skill-capable employee max-hour capacity must cover skill demand.fail
Location capacityFor each location, location-eligible employee max-hour capacity must cover location demand.fail
Location skill capacityFor each location and required skill, eligible skilled capacity must cover location-skill demand.fail

Presets#

Named starting sets of constraints.

PresetUse it forConstraints
Basic Scheduling
basic
Essential constraints for simple rosteringmin_coverage, max_hours_per_employee, employee_availability
Healthcare (24/7)
healthcare
Constraints for healthcare shift schedulingmin_coverage, max_hours_per_employee, min_rest_between_shifts, skill_matching, consecutive_working_days, complete_weekends, workload_balance
EU Working Time Directive
eu_compliant
Full EU WTD compliancemin_coverage, max_hours_per_employee, min_rest_between_shifts, rolling_7_day_hours, consecutive_working_days, workload_balance