Package google.research.optimization.v1.workforce

Index

Pause

Ein Zeitraum, in dem Mitarbeitende ihre Arbeit während einer Schicht unterbrechen.

Felder
start_date_time

DateTime

Der Beginn einer Pause.

duration_minutes

int32

Dauer der Pause in Minuten.

BreakRule

Eine Regel, die bestimmt, wann eine Pause innerhalb einer Schicht beginnen kann und wie lange sie dauert. Die Liste aller möglichen Pausen, die berücksichtigt werden sollen, wird in Schritten von rule_increment_minutes festgelegt. Beispiel: Eine Pauseregel modelliert eine 30-minütige Pause, die zwischen 10:00 und 11:00 Uhr beginnen kann und das Regelinkrement beträgt 20 Minuten. Die Liste der berücksichtigten Pausen lautet: [10:00, 10:30], [10:20, 10:50], [10:40, 11:1,1,1,1,1,1,1,1,1,1,1.

Felder
earliest_start_time

DateTime

Die früheste Startzeit der Pause (einschließlich). Es können nur hours und minutes festgelegt werden.

latest_start_time

DateTime

Die späteste Startzeit der Pause (einschließlich). Es können nur hours und minutes festgelegt werden.

duration_minutes

int32

Dauer der Pause in Minuten.

rule_increment_minutes

int32

[Optional] Zeitintervall in Minuten für alle Unterbrechungen, die in dieser Regel für die Werbeunterbrechung berücksichtigt werden können. Enthält standardmäßig den Wert duration_minutes, wenn nichts anderes festgelegt wird.

BudgetRequirement

Budgetanforderungen für ein bestimmtes Intervall.

Felder
total_budget

double

Gesamtbudget für das angegebene Intervall. Bei einer Priorität von PRIORITY_MANDATORY muss ein Gesamtbudget angegeben werden.

Wenn total_budget nicht festgelegt ist, werden die Gesamtkosten des Zeitplans gemäß dem angegebenen priority minimiert. Wenn priority für das Budget beispielsweise PRIORITY_MEDIUM beträgt, minimiert der Solver die Kosten, bevor er einen Einschränkungsverstoß mit der Priorität PRIORITY_LOW reduziert.

start_date_time

DateTime

Beginn, ab dem dieses Budget gilt. Wenn keine Startzeit angegeben ist, wird sie auf die früheste Startzeit aller Schichten festgelegt.

end_date_time

DateTime

Endzeit für die Anwendung dieses Budgets. Wenn keine Endzeit angegeben ist, wird sie auf die letzte Endzeit aller Schichten festgelegt.

priority

Priority

Prioritätsstufe für die Erfüllung der Budgetanforderung im angegebenen Zeitraum. Die Standardpriorität ist PRIORITY_LOW. Wenn die Priorität auf PRIORITY_MANDATORY festgelegt ist, muss total_budget festgelegt werden.

Wenn diese Priorität höher als andere Einschränkungsprioritäten ist und total_budget eng ist, könnte der resultierende Zeitplan erheblich gegen die Beschränkungen der Mitarbeiter oder die Abdeckungsanforderungen verstoßen.

CoverageRequirement

Eine Deckungsanforderung gibt die Anzahl der Mitarbeitenden an, die für eine Reihe von Rollen und/oder Fähigkeiten während eines bestimmten Zeitfensters und an einem bestimmten Standort benötigt werden. DateTime-Intervalle an einem bestimmten Ort dürfen sich nicht überschneiden. Alternativ kann eine Liste mit Schicht-IDs anstelle eines Zeitfensters und eines Standorts bereitgestellt werden. Nur Mitarbeitende, die einer bestimmten Rolle zugewiesen werden können (oder die die spezifische Fähigkeit besitzen), können diese Anforderung erfüllen.

Für eine bestimmte Rolle und/oder Kompetenz ist die Deckungsanforderung erfüllt, wenn zu jedem Zeitpunkt des Zeitfensters oder für jede Schicht in shift_ids mindestens target_employee_count Mitarbeiter arbeiten. Im Gegensatz dazu wird die Deckungsanforderung nicht erfüllt, wenn im Zeitfenster (oder in einer der Schichten in shift_ids) weniger als target_employee_count Mitarbeiter arbeiten. Mehr aktive Mitarbeiter als der target_employee_count erfüllen die Anforderung zwar weiterhin, aber übermäßige Personalbelegung wurde durch den Matherechner minimiert.

Felder
start_date_time

DateTime

Die Startzeit für die Abdeckungsanforderung (einschließlich). Wenn festgelegt, muss shift_ids leer sein.

end_date_time

DateTime

Das Ende für die Abdeckungsanforderung (ausschließlich). Wenn festgelegt, muss shift_ids leer sein.

location_id

string

Standort, an dem die Mitarbeiter gebraucht werden. shift_ids ist nicht leer, dieses Feld muss leer sein.

shift_ids[]

string

Wenn festgelegt, werden die Rollen- und Qualifikationsanforderungen einzeln auf jede Schicht-ID in dieser Liste angewendet. Wenn „Shift_ids“ nicht leer ist, müssen start_date_time, end_date_time und location_id leer sein.

role_requirements[]

RoleRequirement

Erforderliche Anzahl von Mitarbeitern, die den angegebenen Rollen während des Zeitfensters zugewiesen werden müssen. Für jede Rollen-ID muss höchstens ein role_requirement angegeben werden. Die standardmäßige Prioritätsstufe für jede der Anforderungen ist PRIORITY_MANDATORY. Diese Einschränkungen werden nicht eingehalten, wenn den angegebenen Rollen während des Zeitfensters weniger als target_employee_count Mitarbeiter zugewiesen sind.

skill_requirements[]

SkillRequirement

Erforderliche Anzahl der Mitarbeitenden mit den angegebenen Fähigkeiten, die während des Zeitfensters Schichten zugewiesen sind. Für jede Skill-ID muss höchstens ein skill_requirement angegeben werden. Die standardmäßige Prioritätsstufe für jede der Anforderungen ist PRIORITY_LOW. Diese Einschränkungen werden nicht eingehalten, wenn im Zeitfenster weniger als target_employee_count Mitarbeiter über die entsprechenden Fähigkeiten verfügen.

RoleRequirement

Erforderliche Anzahl von Mitarbeitern, die der angegebenen Rolle während des Zeitfensters zugewiesen werden müssen.

Felder
role_id

string

Rollen-ID für die Anforderung.

target_employee_count

int32

Gewünschte Anzahl von Mitarbeitern, die der Rolle während des Zeitfensters zugewiesen wurden.

priority

Priority

Prioritätsstufe für diese Anforderungseinschränkung. Die Standardpriorität für alle Ressourceneinschränkungen ist PRIORITY_MANDATORY.

SkillRequirement

Erforderliche Anzahl von Mitarbeitenden, die während des Zeitfensters arbeiten und die angegebenen Fähigkeiten besitzen.

Felder
skill_id

string

Skill-ID für die Anforderung.

target_employee_count

int32

Gewünschte Anzahl von Mitarbeitenden mit der jeweiligen Fähigkeit, die während des Zeitfensters arbeiten.

priority

Priority

Prioritätsstufe für diese Anforderungseinschränkung. Die Standardpriorität für alle Ressourceneinschränkungen ist PRIORITY_LOW.

DemandCoverageViolation

Gibt den Verstoß zur Nachfrageabdeckung für das angegebene Intervall an. Der Bedarf an Mitarbeitenden ist während des gesamten angegebenen Intervalls gleich.

Felder
start_date_time

DateTime

Startdatum und -zeit des Nachfrageintervalls (einschließlich). Dieser Wert wird minutengenau angegeben.

end_date_time

DateTime

Enddatum und -zeit des Nachfrageintervalls (ausschließlich). Dieser Wert wird minutengenau angegeben.

coverage_violation

int32

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.

Mitarbeiter

Ein Mitarbeiter aus der Belegschaft, für den ein Termin vereinbart wird.

Felder
id

string

Eindeutige ID, die diesem Mitarbeiter zugewiesen ist.

role_ids[]

string

Rollen-IDs, die dieser Mitarbeiter ausführen kann. Es muss mindestens eine Rolle angegeben sein. Wenn ein Mitarbeiter einer Schicht zugewiesen wird, erhält er auch eine einzelne Rolle aus dieser Liste. Der Mitarbeiter kann während des Planungszeitraums verschiedenen Rollen zugewiesen werden.

skill_ids[]

string

Fähigkeits-IDs, die dieser Mitarbeiter besitzt. Diese Liste kann leer sein. Wenn Mitarbeitende einer Schicht zugewiesen werden, verwendet sie eine beliebige Teilmenge der hier aufgeführten Fähigkeiten, um die Kompetenzanforderungen während der gesamten Schicht abzudecken.

shift_preferences[]

ShiftPreference

Die Einstellungen dieses Mitarbeiters ändern. Die hier angegebenen Schichten stellen die Schichten dar, denen die Mitarbeitenden während des Planungszeitfensters zugewiesen werden würden. Die in shift_preferences angegebenen Schicht-IDs müssen eindeutig sein. Der Matherechner versucht, die Summe der ShiftPreference.preference-Werte aus allen shift_preferences-Werten zu maximieren, die erfüllt sind.

scheduling_constraints[]

SchedulingConstraint

Liste der Zeitplanbeschränkungen für diesen Mitarbeiter. Die Standardprioritätsstufe für jede dieser Einschränkungen ist PRIORITY_MEDIUM. Weitere Informationen finden Sie in der Priority-Enum.

resource_constraints[]

ResourceConstraint

Zusätzliche Planungseinschränkungen, die nicht in scheduling_constraints angegeben sind, können hier zu resource_constraints hinzugefügt werden. Eine ResourceConstraint ist eine abstrakte Darstellung zur Begrenzung der Ressourcen für einen Mitarbeiter. Die Standardprioritätsstufe für jede dieser Einschränkungen ist PRIORITY_MEDIUM. Weitere Informationen finden Sie in der Priority-Enum.

shift_requests[]

ShiftRequest

Liste der Schichtanfragen des Mitarbeiters. Es kann sein, dass ein Mitarbeiter bestimmten Schichten zugewiesen wird oder nicht. Alle feste Terminzuweisungen für den Mitarbeiter können mit einem ShiftRequest mit der Priorität PRIORITY_MANDATORY dargestellt werden. Eine Schicht-ID darf in maximal einer Terminplanungsanfrage für diesen Mitarbeiter enthalten sein. Die Standardprioritätsstufe für jede dieser Anfragen ist PRIORITY_LOW. Weitere Informationen finden Sie in der Priority-Enum.

hourly_contract

HourlyContract

Vertrag, der regelmäßige Stundensätze und Stundensätze für Überstunden für den Mitarbeiter vorgibt.

EmployeeDemand

Gibt die Anzahl der Mitarbeiter an, die erforderlich sind, um den Bedarf im angegebenen DateTime-Intervall zu decken.

Felder
start_date_time

DateTime

Beginn des Zeitintervalls für die angegebene Nachfrage (einschließlich). Diese Werte werden minutengenau abgelesen. Sekunden und alle kleineren Einheiten werden ignoriert.

end_date_time

DateTime

Ende des Zeitintervalls für die jeweilige Nachfrage (exklusiv). Diese Werte werden minutengenau abgelesen. Sekunden und alle kleineren Einheiten werden ignoriert.

employee_count

int32

Anzahl der Mitarbeiter, die benötigt werden, um den Bedarf für dieses Intervall abzudecken.

EmployeeSchedule

Eine sortierte Liste von Schichten, die einer einzelnen ShiftTemplate entsprechen, die einer Anzahl von Mitarbeitern zugewiesen werden soll.

Felder
shift_template_id

string

ID der Vorlage, die zum Generieren dieser Schichten verwendet wurde.

shifts[]

ShiftWithEvents

Liste der Schichten, denen employee_count Mitarbeiter zugewiesen sind. Die für den Zeitplan ausgewählten Schichten und Ereignisse wurden aus einer einzigen Vorlage generiert. Schichten sind chronologisch sortiert und überschneiden sich nicht. Wenn SolverConfig.multi_day_schedule wahr ist, wird ein freier Tag implizit durch das Fehlen einer Schicht, die an diesem Tag beginnt, dargestellt.

employee_count

int32

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.

Felder
start_date_time

DateTime

Startdatum und -zeit der Schicht. Dieser Wert wird minutengenau angegeben; Sekunden und kleinere Einheiten werden nicht angegeben.

end_date_time

DateTime

Enddatum und -zeit der Schicht. Dieser Wert wird minutengenau angegeben; Sekunden und kleinere Einheiten werden nicht angegeben.

events[]

Event

Liste der Ereignisse, die in dieser Schicht enthalten sind. Diese sind genau den ShiftTemplate.Events und in derselben Reihenfolge zugeordnet. Wenn SolverConfig.shift_events_can_change „true“ ist, können Start- und Endzeiten der Ereignisse im gesamten ShiftWithEvents dieses Zeitplans variieren.

Veranstaltung

Gibt die Start- und Endzeit (Datum/Uhrzeit) eines bestimmten Ereignisses in einer vom Solverb erzeugten Verschiebung an.

Felder
event_template_id

string

ID der Vorlage, die zum Generieren dieses Ereignisses verwendet wurde.

start_date_time

DateTime

Startdatum und -zeit des Ereignisses. Dieser Wert wird minutengenau angegeben; Sekunden und kleinere Einheiten werden nicht angegeben.

end_date_time

DateTime

Enddatum und -zeit des Ereignisses. Dieser Wert wird minutengenau angegeben; Sekunden und kleinere Einheiten werden nicht angegeben.

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.

Felder
id

string

Eindeutige ID dieser Vorlage.

minimum_minutes_after_shift_start

int32

Mindestanzahl von Minuten nach Beginn einer Schicht, die dieses Ereignis beginnen kann.

maximum_minutes_after_shift_start

int32

Maximale Anzahl von Minuten nach Beginn einer Schicht, die dieses Ereignis beginnen kann.

duration_minutes

int32

Feste Dauer dieses Termins in Minuten.

start_time_increment_minutes

int32

Das Zeitinkrement (in Minuten), das zum Generieren der Gruppe möglicher Ereignisstartzeiten zwischen minimum_minutes_after_shift_start und maximum_minutes_after_shift_start verwendet wird. Beispiel: Wenn die Mindestanzahl der Minuten nach Schichtbeginn 30, die maximale Anzahl der Minuten nach Schichtbeginn 45 und die Startzeit 5 Minuten beträgt, kann das Ereignis 30, 35, 40 oder 45 Minuten nach Schichtbeginn stattfinden.

HourlyContract

Gibt einen Basisstundensatz, Preisdifferenzen und Überstundenmultiplikatoren an, um die Vergütung für einen Mitarbeiter zu bestimmen. Beachte, dass an verschiedenen Orten gesetzliche Vorschriften eine andere Berechnung der Überstundenvergütung erfordern. Der Solver kann die Überstundenvergütung annähern, um entweder einen Teil der Gesamtkosten zu minimieren oder ein Budget einzuhalten (siehe BudgetRequirement). Er ist nicht als Tool zur Berechnung der Gehaltsabrechnung gedacht.

Felder
base_hourly_rate

double

Die Vergütung für die Arbeit ohne Überstunden. Wenn für einen Mitarbeiter mehrere Tarife gelten, werden Preisdifferenzen relativ zum Basisstundensatz angewendet. Wenn es mehrere Preise gibt, sollte der Basisstundensatz das Minimum dieser Preise sein.

hourly_rate_shift_differentials

map<string, double>

Der Stundensatz, der zusätzlich zu base_hourly_rate bezahlt wird. Wenn der Basisstundensatz beispielsweise 30 $/Std. beträgt, „shift_1“ zu einem Preis von 40 $/Std. und „Shift_2“ zu einem Preis von 45 $/Std. bezahlt wird, lautet die Proto-Darstellung: base_hourly_rate: 30 hourly_rate_shift_differentials {key: "shift_1" value: 10} hourly_rate_shift_differentials {key: "shift_2" value: 15}.

overtime_periods[]

OvertimePeriod

Eine Liste aller Perioden, für die Überstunden berechnet werden müssen. Diese Zeiträume dürfen sich nicht überschneiden.

OvertimePeriod

Ein fester und regelmäßig wiederkehrender Zeitraum (in der Regel 168 Stunden oder sieben aufeinanderfolgende 24-Stunden-Zeiträume), der zur Bestimmung der Höhe der Überstundenvergütung verwendet wird. Für jeden Zeitraum gibt es einen Multiplikator (z.B. 1,5) relativ zum base_hourly_rate und einer Beschränkung für die Anzahl der Stunden, die als normale Arbeit (keine Überstunden) gelten. Jede Schicht, die sich mit den Zeitfenstern start_date_time (einschließlich) und end_date_time (exklusiv) überschneidet, wird auf die Gesamtzahl der Stunden angerechnet, die im Zeitraum gearbeitet wurden. Wenn es sich um eine teilweise Überschneidung handelt, werden nur die sich überschneidenden Stunden gezählt.

Felder
overtime_multiplier

double

Multiplikator für die Berechnung des Stundensatzes für Überstunden (muss größer oder gleich 1,0 sein). Der Stundensatz für Überstunden wird in der Regel mit base_hourly_rate * overtime_multiplier berechnet. Wenn über hourly_rate_shift_differentials mehrere Tarife angegeben sind, schätzt der Matherechner den Stundensatz für Überstunden anhand eines einfachen Durchschnitts der Tarife, die während der Überstunden anfallen. Hinweis: Vorschriften an verschiedenen Orten erfordern möglicherweise eine andere Berechnung der Überstundenvergütung. Der Solver schätzt die Überstundenvergütung, um entweder einen Teil der Gesamtkosten zu minimieren oder ein Budget einzuhalten. Er ist jedoch nicht als Tool zur Berechnung der Gehaltsabrechnung gedacht.

start_date_time

DateTime

Startzeit für die Verlängerung. Wenn sich eine Schicht in diesem Zeitraum überschneidet, werden die Stunden einer solchen Schicht ab start_date_time gezählt.

end_date_time

DateTime

Endzeit für die Verlängerung. Wenn sich eine Schicht in diesem Zeitraum überschneidet, werden die Stunden einer solchen Schicht bis zum end_date_time gezählt.

maximum_regular_hours

double

Maximale Anzahl an Arbeitsstunden, die zum regulären Stundensatz (ohne Überstunden) bezahlt werden. Diese Menge muss positiv sein.

Priorität

Die Prioritätsstufe für eine Einschränkung des Zeitplans eines Mitarbeiters oder die Abdeckungsanforderungen. Dazu gehören SchedulingConstraint, ResourceConstraint, ShiftRequest und CoverageRequirement. Da es möglicherweise widersprüchliche Einschränkungen geben kann, ist es nicht immer möglich, jede Einschränkung zu erfüllen. Daher hat jede Art von Einschränkung eine Priorität (vom Nutzer festgelegt oder eine Standardeinstellung), die den Matherechner über die relative Bedeutung aller Einschränkungen informiert, die einem vollständigen Zeitplan zugewiesen sind.

Enums
PRIORITY_UNSPECIFIED Unbekannte Prioritätsstufe.
PRIORITY_LOW Die niedrigste Prioritätsstufe. Einschränkungen mit dieser Priorität sind weniger wichtig als die anderen Einschränkungen. Sie werden als Erste in Betracht gezogen, wenn keine praktikable Lösung gefunden wird.
PRIORITY_MEDIUM Prioritätsebene mittel. Einschränkungen mit dieser Priorität sind wichtiger als Einschränkungen mit der Priorität PRIORITY_LOW, aber weniger wichtig als Einschränkungen mit der Priorität PRIORITY_HIGH. Wenn nach dem Lockern aller Einschränkungen mit der Priorität PRIORITY_LOW keine praktikable Lösung gefunden werden kann, werden als Nächstes Einschränkungen mit der Priorität PRIORITY_MEDIUM aufgrund eines Verstoßes in Betracht gezogen.
PRIORITY_HIGH Die höchste Prioritätsstufe. Einschränkungen mit dieser Prioritätsstufe sind am wichtigsten. Sie sind die letzten, die für einen Verstoß in Betracht gezogen werden, wenn nach dem Lockern der Einschränkungen der niedrigeren Prioritätsstufen keine praktikable Lösung gefunden werden kann.
PRIORITY_MANDATORY Prioritätsstufe, die für etwas steht, das vom Matherechner nicht verletzt werden darf. Wenn der Matherechner SolutionStatus.INFEASIBLE zurückgibt, kann das an zu vielen PRIORITY_MANDATORY-Einschränkungen liegen.

ResourceConstraint

Eine allgemeine Einschränkung, die die von einem Mitarbeiter verwendete Menge einer bestimmten „Ressource“ begrenzt. Dies ist eine abstrakte Version der spezifischeren SchedulingConstraint, die für den Nutzer flexibler ist. Viele Planungseinschränkungen, die nicht in SchedulingConstraint.type angegeben werden können, können stattdessen mit dieser Nachricht angegeben werden.

Felder
priority

Priority

Prioritätsstufe dieser Ressourceneinschränkung. Die Standardpriorität für alle Ressourceneinschränkungen ist PRIORITY_MEDIUM.

resource_usages

map<string, double>

Menge der von den Schichten genutzten Ressourcen. Wenn diese Einschränkung beispielsweise für die minimale und maximale Arbeitsstunden eines Mitarbeiters in einer bestimmten Woche gilt, enthält diese Karte die Schichten in dieser Woche und die Länge jeder Schicht in Stunden.

minimum_resource_usage

double

Minimale Ressourcennutzung, die durch eine Ressourceneinschränkung erreicht wird.

maximum_resource_usage

double

Maximale Ressourcennutzung, die durch eine Ressourceneinschränkung erreicht werden soll.

SchedulingConstraint

Spezifische Terminbeschränkung für einen bestimmten Mitarbeiter. Die angegebene Einschränkung wird nur während des angegebenen Intervalls [start_date_time, end_date_time) angewendet.

Felder
priority

Priority

Prioritätsstufe für diese Planungseinschränkung. Die Standardpriorität für alle Planungseinschränkungen ist PRIORITY_MEDIUM.

start_date_time

DateTime

Die Startzeit, ab der diese Planungsbeschränkung gilt (einschließlich).

end_date_time

DateTime

Die Endzeit für die Anwendung dieser Planungsbeschränkung (ausgenommen).

Union-Feld type. Der Typ der angegebenen Einschränkung. Jede Einschränkung wird nur innerhalb des oben angegebenen Zeitfensters angewendet. Für type ist nur einer der folgenden Werte zulässig:
minimum_minutes

int32

Mindestanzahl der Minuten, die der Mitarbeiter arbeiten kann. Wenn der Mitarbeiter einer Schicht zugewiesen ist, die das Zeitfenster (vollständig oder teilweise) überschneidet, wird die Anzahl der Minuten, in denen die Schicht das Zeitfenster überschneidet, in dieser Anzahl berücksichtigt.

maximum_minutes

int32

Maximale Anzahl der Minuten, die der Mitarbeiter im Zeitfenster arbeiten kann. Wenn der Mitarbeiter einer Schicht zugewiesen ist, die das Zeitfenster (vollständig oder teilweise) überschneidet, wird die Anzahl der Minuten, in denen die Schicht das Zeitfenster überschneidet, in dieser Anzahl berücksichtigt.

minimum_consecutive_work_days

int32

Mindestanzahl an aufeinanderfolgenden Tagen, an denen der Mitarbeiter arbeiten kann. Eine mitarbeitende Person arbeitet an einem bestimmten Tag, wenn sie einer Schicht zugewiesen ist, die an diesem Tag beginnt. Alle Schichten, die dem Mitarbeiter zugewiesen wurden und die im Zeitfenster beginnen, werden hier berücksichtigt.

maximum_consecutive_work_days

int32

Maximale Anzahl aufeinanderfolgender Tage, an denen der Mitarbeiter arbeiten kann. Eine mitarbeitende Person arbeitet an einem bestimmten Tag, wenn sie einer Schicht zugewiesen ist, die an diesem Tag beginnt. Alle Schichten, die dem Mitarbeiter zugewiesen wurden und die im Zeitfenster beginnen, werden hier berücksichtigt.

minimum_shift_count

int32

Mindestanzahl der Schichten, die der Mitarbeiter ausüben kann. In dieser Anzahl ist jede Schicht berücksichtigt, die der Mitarbeitenden zugewiesen wurde und die sich vollständig mit dem Zeitfenster überschneidet.

maximum_shift_count

int32

Maximale Anzahl der Schichten, die der Mitarbeiter ausführen kann. In dieser Anzahl ist jede Schicht berücksichtigt, die der Mitarbeitenden zugewiesen wurde und die sich vollständig mit dem Zeitfenster überschneidet.

minimum_rest_minutes

int32

Mindestanzahl der Minuten, die die Mitarbeitenden nach Ende einer Schicht ausruhen müssen, bevor sie einer anderen Schicht zugewiesen werden können. Diese Einschränkung gilt für jedes Schichtpaar, das vollständig in [start_date_time, end_date_time] enthalten ist.

Shift

Eine Schicht gibt ein festes Zeitfenster an, in dem Mitarbeitende arbeiten können.

Felder
id

string

Eindeutige ID, die dieser Schicht zugewiesen ist.

location_id

string

Standort-ID, an der diese Schicht stattfindet. Dieses Feld kann leer sein.

start_date_time

DateTime

Der Beginn der Schicht (einschließlich).

end_date_time

DateTime

Die Endzeit der Schicht (ausschließlich). Derzeit unterstützt der Solver nur Schichten, die weniger als 24 Stunden dauern.

break_rules[]

BreakRule

Eine Liste der Regeln für den Umbruch, die während der Schicht gelten. Mitarbeitern, die in dieser Schicht arbeiten, wird pro break_rule eine Pause zugewiesen, in der sie die Nachfrage nach der Rolle, die sie erfüllen, nicht decken. Jedes BreakRule-Zeitfenster muss vollständig in das Zeitfenster dieser Schicht einbezogen werden.

ShiftAssignment

Ein Mitarbeiter, der eine andere Rolle zuweisen soll.

Felder
employee_id

string

Die Mitarbeiter-ID, die zugewiesen wird.

shift_id

string

Schicht-ID, die dem Mitarbeiter zugewiesen ist.

role_id

string

Die Rollen-ID, der der Mitarbeiter für die Schicht zugewiesen ist.

breaks[]

Break

Liste der Pausen für diese Schichtzuweisung.

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.

ShiftPreference

Eine numerische Präferenz für eine bestimmte Schicht-ID.

Felder
shift_id

string

Shift-ID, für die die Einstellung angegeben wird.

preference

int32

Höhere Präferenzwerte kennzeichnen eine erwünschte Abweichung.

ShiftRequest

Die Anfrage eines Mitarbeiters, bestimmten Schichten zugewiesen oder nicht zugewiesen zu werden.

Felder
priority

Priority

Prioritätsstufe dieser Planungsanfrage. Die Standardpriorität für alle Planungsanfragen ist PRIORITY_LOW.

shift_ids[]

string

Die Schicht-IDs der Planungsanfrage.

type

WorkStatus

Anfragetyp, z.B. ob die Anfrage dem Schichtsatz zugewiesen ist oder nicht.

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.

Felder
id

string

Eindeutige ID dieser Vorlage.

earliest_start_time

TimeOfDay

Frühester Zeitpunkt am Tag, zu dem eine Schicht beginnen kann. Dieser Wert wird mit Stunden und Minuten angegeben. Sekunden und Nanos werden ignoriert.

latest_start_time

TimeOfDay

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 earliest_start_time ist, kann eine von dieser Vorlage generierte Verschiebung vor oder nach Mitternacht beginnen.

duration_minutes

int32

Feste Dauer einer von dieser Vorlage generierten Verschiebung.

start_time_increment_minutes

int32

Das Zeitinkrement (in Minuten), das zum Generieren der möglichen Startzeiten zwischen earliest_start_time und latest_start_time verwendet wird. Beispiel: Wenn die früheste Startzeit 8:00 Uhr ist, die späteste Startzeit 8:30 ist und die Startzeit 10 Minuten beträgt, dann lauten alle möglichen Startzeiten für diese Schichtvorlage wie folgt: 8:00, 8:10, 8:20 und 8:30.

days_off_count_per_week

int32

Feste Anzahl von 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.

event_templates[]

EventTemplate

Regeln zum Generieren von Ereignissen für jede Schicht. In jeder Schicht für jedes angegebene Ereignis wird genau ein Ereignis enthalten.

minimum_interevent_gap_minutes

int32

Mindestanzahl von Minuten zwischen dem Ende eines Ereignisses und dem Beginn des nächsten.

maximum_employee_count

int32

Maximale Anzahl von Mitarbeitern, die allen Schichten zugewiesen werden kann, die durch diese Vorlage generiert werden.

SolutionStatus

Lösungsstatus (d.h. ein Zeitplan), der in der Antwort eines Solverers angegeben wird.

Enums
SOLUTION_STATUS_UNSPECIFIED Unbekannter Status für die Antwort.
FEASIBLE Der zurückgegebene Zeitplan ist machbar, aber möglicherweise nicht optimal.
OPTIMAL Der zurückgegebene Zeitplan ist optimal.
INFEASIBLE Für die angegebenen Einschränkungen ist kein praktikabler Zeitplan vorhanden. Der Matherechner kann diesen Wert zurückgeben, wenn eine Teilmenge der Einschränkungen mit der Prioritätsstufe PRIORITY_MANDATORY nicht erfüllt werden kann.
NOT_SOLVED Es wurde kein Zeitplan gefunden.
NOT_SOLVED_DEADLINE_EXCEEDED Es wurde kein Zeitplan innerhalb des angegebenen Zeitlimits gefunden.

SolveParameters

Parameter, die eine einzelne Lösung des Schichtplanungsproblems steuern.

Felder
time_limit

Duration

Maximale Zeit, die der Rechner mit der Aufgabe verbringen sollte. Wenn nichts festgelegt ist, wird standardmäßig 1 Minute verwendet.

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.

SolverConfig

Gibt zusätzliche Parameter zur Lösung des Problems der Umschalttaste-Generierung an.

Felder
time_limit

Duration

Maximale Zeit, die der Rechner mit der Aufgabe verbringen sollte. Wenn nichts festgelegt ist, wird standardmäßig 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 ShiftTemplates mit jeweils etwa 20 möglichen Startzeiten lösen und 2 Ereignisse mit ungefähr 30 möglichen Startzeiten und zwei freien Tagen pro Woche lösen, werden folgende Werte empfohlen: < 10 s für schnelle Lösungen (und wahrscheinlich suboptimal), (10 s, 300 s) für gute Lösungen und > 300 s für eine umfassende Suche. Größere Instanzen erfordern möglicherweise längere Zeitlimits.

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.

multi_day_schedule

bool

Bei Einstellung auf „true“ generiert der Solver EmployeeSchedules mit mehreren Schichten (z.B. zum Erstellen eines einwöchigen Fahrplans). Andernfalls enthält jede EmployeeSchedule genau eine Schicht. Bei mehrtägigen Zeitplänen wird davon ausgegangen, dass der Beginn der Schicht über mehrere Tage hinweg gleich ist. Die Anzahl der freien Tage in einem solchen Zeitplan wird durch die Schichtvorlagen bestimmt. Der Standardwert ist "false".

shift_events_can_change

bool

Falls wahr, können mehrtägige EmployeeSchedule Schichten enthalten, bei denen die Start- und Endzeit ihrer Termine über jeden Tag variiert. Andernfalls müssen alle Verschiebungen einer bestimmten EmployeeSchedule die Start- und Endzeit des Ereignisses haben. In beiden Fällen haben alle Schichten eines mehrtägigen Fahrplans dieselbe Start- und Endzeit. Daher wird dieser Parameter ignoriert, wenn multi_day_schedule „false“ ist. Wird dieser Parameter auf „true“ gesetzt, dauert die Bearbeitungszeit möglicherweise länger. Der Standardwert ist "false".

WorkStatus

Gibt an, ob ein Mitarbeiter arbeitsfähig ist oder nicht.

Enums
WORK_STATUS_UNSPECIFIED Unbekannter Arbeitsstatus.
STATUS_WORK Status, der einen arbeitenden Mitarbeiter repräsentiert.
STATUS_NOT_WORK Status, der einen nicht erwerbstätigen Mitarbeiter repräsentiert.