Löst ein Schichterstellungsproblem aus dem gegebenen SolveShiftGenerationRequest
, indem Schichten aus vorgegebenen Schichtvorlagen generiert werden, um den Mitarbeiterbedarf zu decken.
HTTP-Anfrage
POST https://optimization.googleapis.com/v1/scheduling:solveShiftGeneration
Die URL verwendet die Syntax der gRPC-Transcodierung.
Anfragetext
Der Anfragetext enthält Daten mit folgender Struktur:
JSON-Darstellung |
---|
{ "solverConfig": { object ( |
Felder | |
---|---|
solverConfig |
Optional. Parameter für den Solver. |
shiftTemplates[] |
Erforderlich. Satz von Schichtvorlagen mit Regeln zum Generieren von Schichten. |
employeeDemands[] |
Erforderlich. Gesamte Mitarbeiteranforderung, die die von |
Antworttext
Antwort auf das Problem bei der Generierung von Schichten. Wenn der zurückgegebene solutionStatus
SOLVED
ist, wird eine Reihe gültiger Verschiebungen, die vom Solver erstellt wurden, in employeeSchedules
zurückgegeben. Für einen gültigen Schichtplan gelten die folgenden Eigenschaften:
- Jede in
employeeSchedules
generierte Verschiebung entspricht den Regeln, die in der entsprechendenShiftTemplate
angegeben sind. - Jedes in jeder Schicht ausgewählte Ereignis entspricht den Regeln, die in der zugehörigen
ShiftTemplate.Event
festgelegt sind. - Die Gesamtzahl der Mitarbeiter, die den Schichten zugewiesen sind, die von derselben Schichtvorlage generiert wurden, überschreitet nicht
maximumEmployeeCount
dieser Vorlage. - Die Gruppe der zugewiesenen Mitarbeitenden deckt den Bedarf in jedem festgelegten Intervall.
Wenn der Vorgang erfolgreich ist, enthält der Antworttext Daten mit folgender Struktur:
JSON-Darstellung |
---|
{ "solutionStatus": enum ( |
Felder | |
---|---|
solutionStatus |
Status der zurückgegebenen Lösung. Wenn |
employeeSchedules[] |
Vom Solver generierter Schichtsatz und die Anzahl der Mitarbeitenden, die den einzelnen Zeitplänen zugewiesen sind. |
SolverConfig
Gibt zusätzliche Parameter zum Lösen des Problems beim Generieren der Schicht an.
JSON-Darstellung |
---|
{ "timeLimit": string, "multiDaySchedule": boolean, "shiftEventsCanChange": boolean } |
Felder | |
---|---|
timeLimit |
Die maximale Zeit, die der Matherechner für das Problem aufwenden sollte. Wenn nichts festgelegt ist, wird standardmäßig 1 Minute verwendet. Die Wahl eines Zeitlimits sollte vom Umfang des Problems abhängen. Wenn Sie beispielsweise eine 7-tägige Instanz mit 2 Dieser Wert ist kein festes Limit und berücksichtigt nicht den Kommunikationsaufwand. Die erwartete Latenz zur Lösung des Problems kann diesen Wert leicht überschreiten. Die Dauer in Sekunden mit bis zu neun Nachkommastellen und am Ende mit " |
multiDaySchedule |
Wenn dieser Wert auf „true“ gesetzt ist, generiert der Solver |
shiftEventsCanChange |
Bei „true“ können mehrtägige |
ShiftTemplate
Vorlage mit Regeln zum Generieren von Schichten. Eine Schicht ist eine Arbeitseinheit, die eine Startzeit und ein Ende festlegt und Ereignisse umfassen kann (z. B. Mittagessen, Pausen usw.). Einem bestimmten Datum in der Antwort wird eine Schicht zugewiesen.
JSON-Darstellung |
---|
{ "id": string, "earliestStartTime": { object ( |
Felder | |
---|---|
id |
Eindeutige ID dieser Vorlage. |
earliestStartTime |
Frühester Zeitpunkt am Tag, an dem eine Schicht beginnen kann. Für diesen Wert werden Stunden und Minuten angegeben. Sekunden und Nanos werden ignoriert. |
latestStartTime |
Letzter Zeitpunkt am Tag, zu dem eine Schicht beginnen kann. Für diesen Wert werden Stunden und Minuten angegeben. Sekunden und Nanos werden ignoriert. Wenn dieser Wert kleiner als |
durationMinutes |
Feste Dauer einer von dieser Vorlage generierten Schicht. |
startTimeIncrementMinutes |
Das Zeitabschnitt (in Minuten), das verwendet wird, um den Satz möglicher Startzeiten zwischen |
daysOffCountPerWeek |
Feste Anzahl freier Tage pro Woche. Ein Mitarbeiter hat einen bestimmten freien Tag, wenn er keiner Schicht zugewiesen ist, die an diesem Tag beginnt. Eine Woche umfasst sieben Tage und beginnt am Sonntag. |
eventTemplates[] |
Regeln zum Generieren von Ereignissen für jede Schicht. Für jedes angegebene Ereignis wird in jeder Schicht genau ein Ereignis berücksichtigt. |
minimumIntereventGapMinutes |
Mindestminuten zwischen dem Ende eines Ereignisses und dem Beginn des nächsten. |
maximumEmployeeCount |
Maximale Anzahl von Mitarbeitenden, die allen mit dieser Vorlage generierten Schichten zugewiesen werden kann. |
TimeOfDay
Stellt eine Tageszeit dar. Das Datum und die Zeitzone sind entweder nicht relevant oder werden an anderer Stelle angegeben. Eine API kann Schaltsekunden zulassen. Vergleichbare Typen sind google.type.Date
und google.protobuf.Timestamp
.
JSON-Darstellung |
---|
{ "hours": integer, "minutes": integer, "seconds": integer, "nanos": integer } |
Felder | |
---|---|
hours |
Stunden im 24-Stunden-Format. Sollte zwischen 0 und 23 liegen. Eine API kann den Wert "24:00:00" für Szenarien wie Geschäftsschlusszeit zulassen. |
minutes |
Minuten der Zeitangabe. Muss zwischen 0 und 59 liegen. |
seconds |
Sekunden der Zeitangabe. Muss normalerweise zwischen 0 und 59 liegen. Eine API kann den Wert 60 zulassen, wenn sie Schaltsekunden zulässt. |
nanos |
Sekundenbruchteile in Nanosekunden. Muss zwischen 0 und 999.999.999 liegen. |
EventTemplate
Vorlage mit Regeln zum Generieren eines einzelnen Ereignisses, das während einer Schicht auftritt. Ein Ereignis kann eine Besprechung, eine Pause, ein Mittagessen usw. darstellen.
JSON-Darstellung |
---|
{ "id": string, "minimumMinutesAfterShiftStart": integer, "maximumMinutesAfterShiftStart": integer, "durationMinutes": integer, "startTimeIncrementMinutes": integer } |
Felder | |
---|---|
id |
Eindeutige ID dieser Vorlage. |
minimumMinutesAfterShiftStart |
Mindestanzahl der Minuten nach Beginn einer Schicht, in der dieses Ereignis beginnen kann. |
maximumMinutesAfterShiftStart |
Maximale Anzahl von Minuten nach Beginn einer Schicht, in der dieses Ereignis beginnen kann. |
durationMinutes |
Feste Dauer in Minuten für dieses Ereignis. |
startTimeIncrementMinutes |
Das Zeitabschnitt (in Minuten), das verwendet wird, um den Satz möglicher Ereignisstartzeiten zwischen |
EmployeeDemand
Gibt die Anzahl der Mitarbeiter an, die im angegebenen DateTime-Intervall erforderlich sind, um den Bedarf zu decken.
JSON-Darstellung |
---|
{ "startDateTime": { object ( |
Felder | |
---|---|
startDateTime |
Beginn des Zeitintervalls für die gegebene Nachfrage (einschließlich). Diese Werte werden minutengenau ausgelesen. Sekunden und alle kleineren Einheiten werden ignoriert. |
endDateTime |
Ende des Zeitintervalls für die angegebene Nachfrage (ausschließlich). Diese Werte werden minutengenau ausgelesen. Sekunden und alle kleineren Einheiten werden ignoriert. |
employeeCount |
Anzahl der Mitarbeiter, die erforderlich sind, um den Bedarf für dieses Intervall zu decken. |
ShiftGenerationSolutionStatus
Lösungsstatus, der als Antwort eines Solver angegeben wird.
Enums | |
---|---|
SHIFT_GENERATION_SOLUTION_STATUS_UNSPECIFIED |
Nicht angegebener Status für die Antwort. |
SHIFT_GENERATION_SOLVED |
Der Matherechner hat innerhalb des vorgegebenen Zeitlimits eine Lösung gefunden. |
SHIFT_GENERATION_NOT_SOLVED |
Ein Problem hat verhindert, dass der Solver Verschiebungen generiert. |
SHIFT_GENERATION_NOT_SOLVED_DEADLINE_EXCEEDED |
Es konnten keine Schichten generiert werden, um die Nachfrage innerhalb des vorgegebenen Zeitlimits zu decken. |
EmployeeSchedule
Eine sortierte Liste von Schichten, die einer einzelnen ShiftTemplate
entsprechen, die einer Anzahl von Mitarbeitern zugewiesen werden soll.
JSON-Darstellung |
---|
{
"shiftTemplateId": string,
"shifts": [
{
object ( |
Felder | |
---|---|
shiftTemplateId |
ID der Vorlage, die zum Generieren dieser Schichten verwendet wurde. |
shifts[] |
Liste der Schichten, denen |
employeeCount |
Anzahl der Mitarbeitenden, die diesen Schichten zugewiesen werden sollten, um den Bedarf zu decken. |
ShiftWithEvents
Gibt das Start- und Enddatum zusammen mit einer Liste fester Ereignisse einer vom Rechner generierten Schicht an.
JSON-Darstellung |
---|
{ "startDateTime": { object ( |
Felder | |
---|---|
startDateTime |
Startdatum und -zeit der Schicht. Dieser Wert wird minutengenau angegeben. Sekunden und kleinere Einheiten werden nicht angegeben. |
endDateTime |
Enddatum und -zeit der Schicht. Dieser Wert wird minutengenau angegeben. Sekunden und kleinere Einheiten werden nicht angegeben. |
events[] |
Liste der Ereignisse, die in dieser Schicht enthalten sind und den |
Veranstaltung
Gibt das Start- und Enddatum eines bestimmten Ereignisses in einer vom Rechner generierten Schicht an.
JSON-Darstellung |
---|
{ "eventTemplateId": string, "startDateTime": { object ( |
Felder | |
---|---|
eventTemplateId |
ID der Vorlage, die zum Generieren dieses Ereignisses verwendet wurde. |
startDateTime |
Startdatum und -zeit des Ereignisses. Dieser Wert wird minutengenau angegeben. Sekunden und kleinere Einheiten werden nicht angegeben. |
endDateTime |
Enddatum und -zeit des Ereignisses. Dieser Wert wird minutengenau angegeben. Sekunden und kleinere Einheiten werden nicht angegeben. |