FILL request
Filling in pre-defined shifts with employees according to contractual agreements that enforce fair and cost efficient
rosters. The input requires you to make up:
- contract definitions
- open shifts
- available employees
Additionally you can customise the solver behaviour by also changing the weights and priority of the constraints
This FILL request
schema is used for solving a Shift Filling Problem. It consists of shifts
, employees
, options
and weights
.
Contract
A contract definition consists of a multitude of labour restricting constraints such as the maximum number of
consecutive working days, the maximum number of shifts per day, number of resting days, etc...
Property | Type | Description |
---|---|---|
name | string | Unique name identifier for a contract. |
max | string (duration iso8601) | Maximum duration of all assigned shifts per employee. |
min | string (duration iso8601) | Minimum total duration of all assigned shifts per employee. |
maxConsecutiveWorkDays | integer | Maximum number of days that one employee is allowed to work in a row. |
maxShiftsDay | integer | Maximum number of shifts during one day. |
minRestBetweenShiftsSameDay | string (duration iso8601) | Minimum duration between two shifts on the same day. |
maxWorkingDays | integer | Maximum number of days working in the planning period. |
latestShiftStart | string (time iso8601) | Latest time an employee can start his shift. |
earliestShiftStart | string (time iso8601) | Earliest time an employee can start his shift. |
{
"name": "FULL",
"max": "PT38H",
"min": "PT5H",
"maxConsecutiveWorkDays": 5,
"maxShiftsDay": 2,
"minRestBetweenShiftsSameDay": 30,
"maxWorkingDays": 6,
"latestShiftStart": "10:00:00",
"earliestShiftStart": "02:00:00"
}
Shifts
The shifts represent the demand. These shifts need to be filled in with employees.
A shift in its simplest form can be defined by a shift start time (from
) and an end time (to
).
Shifts are uniquely identified by a name
and require a specific skill
.
You can define the number of employees that need to be assigned to this shift with value
.
Property | Type | Description |
---|---|---|
name | string | Unique id of the shift |
from | string (datetime) | Starting time of the shift |
to | string (datetime) | End time of the shift |
skills | array of strings | Skill name references |
cost | number | Financial cost related to this shift. Will be minimised when partialPlanning. |
value | number | Actual number of employees that should be assigned to this shift |
priority | number | Forces a priority constraint on this shift with 1 being highest priority and 10 being the lowest. |
employees | array of strings | List of planned employees. Or can be used to pre-plan. |
Employees
Define the resources or employees with whom you want to fill up the shifts.
Property | Type | Description |
---|---|---|
name | string | Unique identifier for this employee |
contract | string | Reference to contract for this employee. |
skills | array of string | List of skill references. |
lastRestDate | string (date) | The last date on which the employee had a rest before the planning period. |
availability | array of string | Available date-time range of employee. |
preference | array of string | Preference towards certain shifts. (shift name) |
periodRules | array of PeriodRule | List of Period Rule |
Period Rule
A shift rule for an employee that applies to a period of time.
Property | Type | Description |
---|---|---|
period | PlanningPeriod | Planning period for this period rule. |
maxWorkingDays | integer | Maximum number of total days working in planning period. |
minWorkingDays | integer | Minimum number of total days working in planning period. |
minWorkingDuration | string | Minimum duration to work in the planning period. |
maxWorkingDuration | string | Maximum duration to work in the planning period. |
minRestDurationBetweenShiftsSameDay | string | Minimum duration between two shifts on the same day in this planning period. |
minRestDuration | string | Minimum duration between any two shifts in this planning period. |
Fairness
For a select group of employees
and shifts
you can require fair distribution of shifts per planning period. The
planning period can be the entire planning period or a subset of it.
{
//...
"fairnessBuckets": [
{
"employees": [
"John",
"Andrew"
],
"shifts": [
"shift1",
"shift2"
],
"period": {
"from": "2020-01-01",
"to": "2020-01-15"
}
}
]
}
Updated 5 months ago