Stellen Sie sich ein Contact Center vor, für das Sie Schichten so generieren möchten, die Nachfrage nach Mitarbeitenden gedeckt ist. Das Callcenter ist rund um die Uhr in Betrieb und die Anzahl der benötigten Mitarbeitenden im Laufe der Zeit variiert. Das Contact Center stellt sowohl Vollzeit- als auch Teilzeitbeschäftigte.
Vollzeitbeschäftigte arbeiten 9-Stunden-Schichten mit einer einstündigen Pause von 4 oder 5 Stunden. nach Schichtbeginn und kann jederzeit zwischen 5:00 und 5:00 Uhr 12:00 Uhr. Teilzeitbeschäftigte arbeiten in 4-Stunden-Schichten mit einer 15-minütigen Pause am Arbeitszeit beendet und die Schicht jederzeit beginnen kann. In beiden -Fälle werden mögliche Schichtstartzeiten in 15-Minuten-Schritten berücksichtigt.
Das Contact Center ist an der Planung des Personalbedarfs für die zwei Tage in Betrieb nehmen, da maximal 20 Vollzeitkräfte und 40 Teilzeitbeschäftigte.
Schichtvorlagen für Vollzeit- und Teilzeitmitarbeiter
Die Regeln, die gültige Schichten bestimmen, können durch eine Verschiebung Vorlage. Innerhalb einer Schichtvorlage kann das Konzept einer Pause mit einer Ereignisvorlage. Zum Beispiel die Schichtvorlage für eine Vollzeit- Schicht für Mitarbeitende wird dargestellt als:
{
"id": "full-time",
"earliestStartTime": {
"hours": 5
},
"latestStartTime": {
"hours": 12
},
"durationMinutes": 540,
"startTimeIncrementMinutes": 15,
"eventTemplates": [
{
"id": "full-time-break",
"minimumMinutesAfterShiftStart": 240,
"maximumMinutesAfterShiftStart": 300,
"durationMinutes": 60,
"startTimeIncrementMinutes": 60
}
],
"maximumEmployeeCount": 20
}
In ähnlicher Weise wird die Schichtvorlage für eine Teilzeit-Mitarbeiterschicht so dargestellt:
{
"id": "part-time",
"earliestStartTime": {},
"latestStartTime": {
"hours": 23,
"minutes": 59
},
"durationMinutes": 240,
"startTimeIncrementMinutes": 15,
"eventTemplates": [
{
"id": "part-time-break",
"minimumMinutesAfterShiftStart": 120,
"maximumMinutesAfterShiftStart": 120,
"durationMinutes": 15,
"startTimeIncrementMinutes": 0
}
],
"maximumEmployeeCount": 40
}
Mitarbeiternachfrage im Zeitverlauf
Die Nachfrage nach Mitarbeitenden wird mit einer Liste von EmployeeDemand
dargestellt.
wobei jedes dieser Elemente durch ein Zeitintervall und
Anzahl. In diesem Beispiel schwankt die Nachfrage zwischen 4 und 13 Mitarbeitenden im
von zwei Tagen und wird folgendermaßen dargestellt:
{
...
"employeeDemands": [
{
"startDateTime": {
"year": 2024,
"month": 5,
"day": 20
},
"endDateTime": {
"year": 2024,
"month": 5,
"day": 20,
"hours": 12
},
"employeeCount": 8
},
{
"startDateTime": {
"year": 2024,
"month": 5,
"day": 20,
"hours": 12
},
"endDateTime": {
"year": 2024,
"month": 5,
"day": 20,
"hours": 20
},
"employeeCount": 12
},
{
"startDateTime": {
"year": 2024,
"month": 5,
"day": 20,
"hours": 20
},
"endDateTime": {
"year": 2024,
"month": 5,
"day": 21,
"hours": 6
},
"employeeCount": 4
},
{
"startDateTime": {
"year": 2024,
"month": 5,
"day": 21,
"hours": 6
},
"endDateTime": {
"year": 2024,
"month": 5,
"day": 22,
"hours": 0
},
"employeeCount": 13
}
]
}
Beispiel für eine vollständige Anfrage
{
"solverConfig": {
"timeLimit": "30s"
},
"shiftTemplates": [
{
"id": "full-time",
"earliestStartTime": {
"hours": 5
},
"latestStartTime": {
"hours": 12
},
"durationMinutes": 540,
"startTimeIncrementMinutes": 15,
"eventTemplates": [
{
"id": "full-time-break",
"minimumMinutesAfterShiftStart": 240,
"maximumMinutesAfterShiftStart": 300,
"durationMinutes": 60,
"startTimeIncrementMinutes": 60
}
],
"maximumEmployeeCount": 20
},
{
"id": "part-time",
"earliestStartTime": {},
"latestStartTime": {
"hours": 23,
"minutes": 59
},
"durationMinutes": 240,
"startTimeIncrementMinutes": 15,
"eventTemplates": [
{
"id": "part-time-break",
"minimumMinutesAfterShiftStart": 120,
"maximumMinutesAfterShiftStart": 120,
"durationMinutes": 15,
"startTimeIncrementMinutes": 0
}
],
"maximumEmployeeCount": 40
}
],
"employeeDemands": [
{
"startDateTime": {
"year": 2024,
"month": 5,
"day": 20
},
"endDateTime": {
"year": 2024,
"month": 5,
"day": 20,
"hours": 12
},
"employeeCount": 8
},
{
"startDateTime": {
"year": 2024,
"month": 5,
"day": 20,
"hours": 12
},
"endDateTime": {
"year": 2024,
"month": 5,
"day": 20,
"hours": 20
},
"employeeCount": 12
},
{
"startDateTime": {
"year": 2024,
"month": 5,
"day": 20,
"hours": 20
},
"endDateTime": {
"year": 2024,
"month": 5,
"day": 21,
"hours": 6
},
"employeeCount": 4
},
{
"startDateTime": {
"year": 2024,
"month": 5,
"day": 21,
"hours": 6
},
"endDateTime": {
"year": 2024,
"month": 5,
"day": 22,
"hours": 0
},
"employeeCount": 13
}
]
}
Antwortbeispiel
Die Antwort des Matherechners enthält eine Liste der Zeitpläne der Mitarbeitenden mit ihren der erforderlichen Anzahl von Mitarbeitenden. Wenn die exakte Deckung der Nachfrage nicht möglich ist, werden die Verstöße auch jedes Mal Intervall.
Das folgende Beispiel zeigt einen der generierten Mitarbeiterzeitpläne für eine Vollzeitbeschäftigte:
{
"solutionStatus": "SHIFT_GENERATION_SOLVED",
"employeeSchedules": [
{
"shiftTemplateId": "full-time",
"shifts": [
{
"startDateTime": {
"year": 2024,
"month": 5,
"day": 21,
"hours": 7,
"minutes": 30
},
"endDateTime": {
"year": 2024,
"month": 5,
"day": 21,
"hours": 16,
"minutes": 30
},
"events": [
{
"startDateTime": {
"year": 2024,
"month": 5,
"day": 21,
"hours": 12,
"minutes": 30
},
"endDateTime": {
"year": 2024,
"month": 5,
"day": 21,
"hours": 13,
"minutes": 30
},
"eventTemplateId": "full-time-break"
}
]
}
],
"employeeCount": 1
},
...
]
...
}