Löst ein Problem bei der Schichtgenerierung aus den angegebenen SolveShiftGenerationRequest
, indem Schichten aus vorgegebenen Schichtvorlagen generiert werden, um die Nachfrage der Mitarbeitenden 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, die Regeln zum Generieren von Schichten festlegen. |
employeeDemands[] |
Erforderlich. Die Gesamtnachfrage der Mitarbeitenden, die durch die von „ |
Antworttext
Antwort auf das Problem der Schichtgenerierung. Wenn die zurückgegebene solutionStatus
SOLVED
lautet, wird eine Reihe gültiger Änderungen, die vom Solverr generiert wurden, in employeeSchedules
zurückgegeben. Für einen gültigen Schichtplan gelten die folgenden Properties:
- Jede in
employeeSchedules
generierte Verschiebung unterliegt den Regeln, die in der entsprechendenShiftTemplate
angegeben sind. - Jedes in den einzelnen Schichten ausgewählte Ereignis unterliegt den Regeln, die in der entsprechenden
ShiftTemplate.Event
festgelegt sind. - Die Gesamtzahl der Mitarbeiter, die den Schichten zugewiesen sind, die aus derselben Schichtvorlage generiert wurden, überschreitet
maximumEmployeeCount
dieser Vorlage nicht. - Die zugewiesenen Mitarbeitenden decken den Bedarf in jedem gegebenen Intervall ab.
Bei Erfolg enthält der Antworttext Daten mit der folgenden Struktur:
JSON-Darstellung |
---|
{ "solutionStatus": enum ( |
Felder | |
---|---|
solutionStatus |
Status der zurückgegebenen Lösung. Wenn |
employeeSchedules[] |
Satz der vom Matherechner generierten Schichten und die Anzahl der Mitarbeitenden, die den einzelnen Zeitplänen zugewiesen sind. |
demandCoverageViolations[] |
Verstöße gegen die Nachfrageabdeckung basierend auf dem zugewiesenen |
SolverConfig
Gibt zusätzliche Parameter zur Lösung des Problems der Generierung der Umschalttaste an.
JSON-Darstellung |
---|
{ "timeLimit": string, "multiDaySchedule": boolean, "shiftEventsCanChange": boolean } |
Felder | |
---|---|
timeLimit |
Maximale Zeit, die der Rechner mit der Aufgabe verbringen sollte. Wenn nichts festgelegt ist, wird der Standardwert 1 Minute verwendet. Die Wahl eines Zeitlimits sollte von der Größe des Problems abhängen. Wenn Sie beispielsweise eine 7-tägige Instanz mit 2 Dieser Wert ist kein fester Grenzwert und berücksichtigt nicht den Kommunikationsaufwand. Die erwartete Latenz zur Behebung des Problems kann diesen Wert geringfügig überschreiten. Die Dauer in Sekunden mit bis zu neun Nachkommastellen und am Ende mit " |
multiDaySchedule |
Bei Einstellung auf „true“ generiert der Solver |
shiftEventsCanChange |
Falls wahr, können mehrtägige |
ShiftTemplate
Vorlage, die Regeln zum Generieren von Schichten angibt. Eine Schicht ist eine Arbeitseinheit, die eine Startzeit und ein Ende angibt und Ereignisse umfassen kann (z. B. Mittagessen, Pausen usw.). Eine Schicht wird einem bestimmten Datum in der Antwort zugewiesen.
JSON-Darstellung |
---|
{ "id": string, "earliestStartTime": { object ( |
Felder | |
---|---|
id |
Eindeutige ID dieser Vorlage. |
earliestStartTime |
Frühester Zeitpunkt am Tag, zu dem eine Schicht beginnen kann. Dieser Wert wird mit Stunden und Minuten angegeben. Sekunden und Nanos werden ignoriert. |
latestStartTime |
Spätester Zeitpunkt des Tages, an dem eine Schicht beginnen kann. Dieser Wert wird mit Stunden und Minuten angegeben. Sekunden und Nanos werden ignoriert. Wenn dieser Wert kleiner als |
durationMinutes |
Feste Dauer einer von dieser Vorlage generierten Verschiebung. |
startTimeIncrementMinutes |
Das Zeitinkrement (in Minuten), das zum Generieren der möglichen Startzeiten zwischen |
daysOffCountPerWeek |
Feste Anzahl an freien Tagen pro Woche. Ein Mitarbeiter hat einen freien Tag, wenn er keiner Schicht zugewiesen ist, die an diesem Tag beginnt. Eine Woche umfasst 7 Tage und beginnt am Sonntag. |
eventTemplates[] |
Regeln zum Generieren von Ereignissen für jede Schicht. In jeder Schicht für jedes angegebene Ereignis wird genau ein Ereignis enthalten. |
minimumIntereventGapMinutes |
Mindestanzahl von Minuten zwischen dem Ende eines Ereignisses und dem Beginn des nächsten. |
maximumEmployeeCount |
Maximale Anzahl von Mitarbeitern, die allen Schichten zugewiesen werden kann, die durch diese Vorlage generiert werden. |
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 beispielsweise eine Besprechung, eine Pause oder ein Mittagessen sein.
JSON-Darstellung |
---|
{ "id": string, "minimumMinutesAfterShiftStart": integer, "maximumMinutesAfterShiftStart": integer, "durationMinutes": integer, "startTimeIncrementMinutes": integer } |
Felder | |
---|---|
id |
Eindeutige ID dieser Vorlage. |
minimumMinutesAfterShiftStart |
Mindestanzahl von Minuten nach Beginn einer Schicht, die dieses Ereignis beginnen kann. |
maximumMinutesAfterShiftStart |
Maximale Anzahl von Minuten nach Beginn einer Schicht, die dieses Ereignis beginnen kann. |
durationMinutes |
Feste Dauer dieses Termins in Minuten. |
startTimeIncrementMinutes |
Das Zeitinkrement (in Minuten), das zum Generieren der Gruppe möglicher Ereignisstartzeiten zwischen |
EmployeeDemand
Gibt die Anzahl der Mitarbeiter an, die erforderlich sind, um den Bedarf im angegebenen DateTime-Intervall zu decken.
JSON-Darstellung |
---|
{ "startDateTime": { object ( |
Felder | |
---|---|
startDateTime |
Beginn des Zeitintervalls für die angegebene Nachfrage (einschließlich). Diese Werte werden minutengenau abgelesen. Sekunden und alle kleineren Einheiten werden ignoriert. |
endDateTime |
Ende des Zeitintervalls für die jeweilige Nachfrage (exklusiv). Diese Werte werden minutengenau abgelesen. Sekunden und alle kleineren Einheiten werden ignoriert. |
employeeCount |
Anzahl der Mitarbeiter, die benötigt werden, um den Bedarf für dieses Intervall abzudecken. |
ShiftGenerationSolutionStatus
Lösungsstatus, der in der Antwort eines Matherechners angegeben wurde.
Enums | |
---|---|
SHIFT_GENERATION_SOLUTION_STATUS_UNSPECIFIED |
Unbekannter Status für die Antwort. |
SHIFT_GENERATION_SOLVED |
Der Matherechner hat innerhalb des angegebenen Zeitlimits eine Lösung gefunden. |
SHIFT_GENERATION_NOT_SOLVED |
Ein Problem hat verhindert, dass der Rechner keine Schichten erzeugt. |
SHIFT_GENERATION_NOT_SOLVED_DEADLINE_EXCEEDED |
Es konnten keine Schichten generiert werden, um die Nachfrage innerhalb des festgelegten 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 sowie eine Liste fester Ereignisse eines Wechsels an, die vom Matherechner generiert wurden.
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. Diese sind genau den |
Ereignis
Gibt den Start- und Endzeitpunkt (DateTime) eines bestimmten Ereignisses in einer vom Saldo generierten Verschiebung 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. |
DemandCoverageViolation
Gibt den Verstoß zur Nachfrageabdeckung für das angegebene Intervall an. Der Bedarf an Mitarbeitenden ist während des gesamten angegebenen Intervalls gleich.
JSON-Darstellung |
---|
{ "startDateTime": { object ( |
Felder | |
---|---|
startDateTime |
Startdatum und -zeit des Nachfrageintervalls (einschließlich). Dieser Wert wird minutengenau angegeben. |
endDateTime |
Enddatum und -zeit des Nachfrageintervalls (ausschließlich). Dieser Wert wird minutengenau angegeben. |
coverageViolation |
Verletzung der Abdeckung während des angegebenen Intervalls. Ein positiver Wert bedeutet, dass die Nachfrage überdeckt ist, ein negativer Wert, dass die Nachfrage zu wenig abgedeckt ist. |