פותר בעיה של יצירת משמרות מ-SolveShiftGenerationRequest
הנתון על ידי יצירת משמרות מתבניות משמרות נתונות כדי לכסות את הביקוש של העובדים.
בקשת HTTP
POST https://optimization.googleapis.com/v1/scheduling:solveShiftGeneration
בכתובת ה-URL נעשה שימוש בתחביר המרת קידוד של gRPC.
גוף הבקשה
גוף הבקשה מכיל נתונים במבנה הבא:
ייצוג JSON |
---|
{ "solverConfig": { object ( |
שדות | |
---|---|
solverConfig |
זה שינוי אופציונלי. פרמטרים לפותר. |
shiftTemplates[] |
חובה. קבוצת תבניות של משמרות שמציינות כללים ליצירת משמרות. |
employeeDemands[] |
חובה. ביקוש העובדים הכולל שצריך לכסות את המשמרות שנוצרו על ידי |
גוף התשובה
תגובה לגבי הבעיה 'יצירת Shift'. אם ה-solutionStatus
המוחזר הוא SOLVED
, אז קבוצה של התאמות חוקיות שנוצרו על ידי הפותר מוחזרת ב-employeeSchedules
. עבור לוח זמנים תקין למשמרות, המאפיינים הבאים מחזיקים:
- כל שינוי שנוצר ב-
employeeSchedules
תואם לכללים שצוינו ב-ShiftTemplate
התואם. - כל אירוע שנבחר בכל משמרת פועל בהתאם לכללים שצוינו ב-
ShiftTemplate.Event
התואם. - המספר הכולל של העובדים שהוקצו לקבוצת השינויים שנוצרה מאותה תבנית Shift לא עולה על
maximumEmployeeCount
מהתבנית הזו. - קבוצת העובדים שהוקצו להם מכסה את הביקוש בכל פרק זמן נתון.
אם הפעולה בוצעה ללא שגיאות, גוף התשובה מכיל נתונים במבנה הבא:
ייצוג JSON |
---|
{ "solutionStatus": enum ( |
שדות | |
---|---|
solutionStatus |
הסטטוס של הפתרון שהוחזר. אם |
employeeSchedules[] |
קבוצת המשמרות שנוצרו על ידי הפותר, יחד עם מספר העובדים שהוקצו לכל לוח זמנים. |
SolverConfig
מציין פרמטרים נוספים לפתרון הבעיה של 'יצירת Shift'.
ייצוג JSON |
---|
{ "timeLimit": string, "multiDaySchedule": boolean, "shiftEventsCanChange": boolean } |
שדות | |
---|---|
timeLimit |
משך הזמן המקסימלי שהפותר צריך להקדיש לבעיה. אם המדיניות לא מוגדרת, ברירת המחדל היא דקה אחת. יש לבחור מגבלת זמן בהתאם לגודל הבעיה. דוגמה: בפתרון של 7 ימים עם 2 הערך הזה הוא לא מגבלה קשיחה, והוא לא כולל את תקורת התקשורת. זמן האחזור הצפוי לפתרון הבעיה עשוי לחרוג מעט מהערך הזה. משך זמן בשניות עם עד תשע ספרות עשרוניות, המסתיים ב-' |
multiDaySchedule |
אם הערך הוא true, הפותר יוצר |
shiftEventsCanChange |
אם הערך הוא true, ייתכן שמשך הזמן של |
ShiftTemplate
תבנית שמציינת כללים ליצירת משמרות. משמרת היא יחידת עבודה שמציינת שעת התחלה ושעת סיום, והיא עשויה להכיל אירועים (כגון ארוחת צהריים, הפסקות וכו'). המענה יוקצה לתאריך ספציפי.
ייצוג JSON |
---|
{ "id": string, "earliestStartTime": { object ( |
שדות | |
---|---|
id |
המזהה הייחודי של התבנית הזו. |
earliestStartTime |
השעה המוקדמת ביותר ביום שבה יכולה להתחיל משמרת. הערך הזה מצוין באמצעות שעות ודקות. המערכת מתעלמת משניות ומננו. |
latestStartTime |
השעה המאוחרת ביותר ביום שבה יכולה להתחיל משמרת. הערך הזה מצוין באמצעות שעות ודקות. המערכת מתעלמת משניות ומננו. אם הערך הזה קטן מהערך |
durationMinutes |
משך הזמן הקבוע של שינוי שנוצר על ידי התבנית הזו. |
startTimeIncrementMinutes |
מרווח הזמן (בדקות) ששימש ליצירת קבוצת זמני ההתחלה האפשריים בין |
daysOffCountPerWeek |
מספר קבוע של ימי חופש בשבוע. לעובד יש יום חופש מסוים אם לא מוקצה לו משמרת שמתחילה באותו יום. שבוע הוא 7 ימים ומתחיל ביום ראשון. |
eventTemplates[] |
כללים ליצירת אירועים עבור כל משמרת. רק אירוע אחד ייכלל בכל שינוי עבור כל אירוע שצוין. |
minimumIntereventGapMinutes |
מספר דקות מינימלי בין סיום של אירוע אחד לתחילתו של האירוע הבא. |
maximumEmployeeCount |
המספר המקסימלי של עובדים שאפשר להקצות לכל המשמרות שנוצרו באמצעות התבנית הזו. |
TimeOfDay
מייצג שעה ביום. התאריך ואזור הזמן אינם משמעותיים או מצוינים במקום אחר. API עשוי לבחור לאפשר שניות מעבר. הסוגים הקשורים הם google.type.Date
ו-google.protobuf.Timestamp
.
ייצוג JSON |
---|
{ "hours": integer, "minutes": integer, "seconds": integer, "nanos": integer } |
שדות | |
---|---|
hours |
שעות ביום בפורמט 24 שעות. צריך להיות מספר בין 0 ל-23. ממשק API עשוי לאפשר את הערך '24:00:00' בתרחישים כמו שעת הסגירה של העסק. |
minutes |
דקות בשעה. חייב להיות בין 0 ל-59. |
seconds |
שניות של זמן. הערך בדרך כלל צריך להיות בין 0 ל-59. ממשק API עשוי לאפשר את הערך 60 אם הוא מאפשר שניות שעברו. |
nanos |
שברים של שניות בננו-שניות. חייב להיות בין 0 ל-999,999,999. |
EventTemplate
תבנית שמציינת כללים ליצירת אירוע יחיד שמתרחש במהלך משמרת. אירוע יכול לייצג פגישה, הפסקה, ארוחת צהריים וכו'.
ייצוג JSON |
---|
{ "id": string, "minimumMinutesAfterShiftStart": integer, "maximumMinutesAfterShiftStart": integer, "durationMinutes": integer, "startTimeIncrementMinutes": integer } |
שדות | |
---|---|
id |
המזהה הייחודי של התבנית הזו. |
minimumMinutesAfterShiftStart |
מספר הדקות המינימלי שהאירוע הזה יכול להתחיל אחרי תחילת המשמרת. |
maximumMinutesAfterShiftStart |
מספר הדקות המקסימלי לאחר תחילת המשמרת שהאירוע הזה יכול להתחיל. |
durationMinutes |
משך הזמן קבוע בדקות של האירוע הזה. |
startTimeIncrementMinutes |
מרווח הזמן (בדקות) ששימש ליצירת קבוצת זמני ההתחלה האפשריים של אירועים בין |
EmployeeDemand
מציין את מספר העובדים שנדרשים לכיסוי הביקוש במרווח הזמן הנתון (DateTime).
ייצוג JSON |
---|
{ "startDateTime": { object ( |
שדות | |
---|---|
startDateTime |
תחילת מרווח הזמן של הביקוש הנתון (כולל). הערכים האלה מוקראים עד הדקה. המערכת מתעלמת מהשניות ומכל היחידות הקטנות יותר. |
endDateTime |
סיום פרק הזמן של הביקוש הנתון (לא כולל). הערכים האלה מוקראים עד הדקה. המערכת מתעלמת מהשניות ומכל היחידות הקטנות יותר. |
employeeCount |
מספר העובדים הנדרשים כדי לכסות את הביקוש למרווח הזמן הזה. |
ShiftGenerationSolutionStatus
סטטוס הפתרון שסופק בתגובה של הפותר.
טיפוסים בני מנייה (enums) | |
---|---|
SHIFT_GENERATION_SOLUTION_STATUS_UNSPECIFIED |
לא צוין סטטוס לתגובה. |
SHIFT_GENERATION_SOLVED |
הפותר מצא פתרון במסגרת מגבלת הזמן שצוינה. |
SHIFT_GENERATION_NOT_SOLVED |
בעיה מנעה מהפותר ליצור שינויים. |
SHIFT_GENERATION_NOT_SOLVED_DEADLINE_EXCEEDED |
אי אפשר ליצור התאמות כדי לכסות את הביקוש במסגרת הזמן שצוינה. |
EmployeeSchedule
רשימה ממוינת של משמרות שתואמות ל-ShiftTemplate
אחד, שיוקצה למספר עובדים.
ייצוג JSON |
---|
{
"shiftTemplateId": string,
"shifts": [
{
object ( |
שדות | |
---|---|
shiftTemplateId |
המזהה של התבנית ששימשה ליצירת קבוצת השינויים הזו. |
shifts[] |
רשימת המשמרות שאליהן מוקצים מספר עובדים אחד ( |
employeeCount |
מספר העובדים שצריך להקצות לקבוצת המשמרות הזו כדי לכסות את הביקוש. |
ShiftWithEvents
מציין את תאריכי ההתחלה והסיום יחד עם רשימת אירועים קבועים של שינוי שנוצר על ידי הפותר.
ייצוג JSON |
---|
{ "startDateTime": { object ( |
שדות | |
---|---|
startDateTime |
התאריך ושעת ההתחלה של המשמרת. הערך הזה מצוין עד הדקה. שניות ויחידות קטנות יותר לא ניתנות. |
endDateTime |
התאריך ושעת הסיום של המשמרת. הערך הזה מצוין עד הדקה. שניות ויחידות קטנות יותר לא ניתנות. |
events[] |
רשימת אירועים שכלולים בשינוי הזה, ממופים בדיוק אל אירועי |
אירוע
מציין את תאריכי ההתחלה והסיום של אירוע ספציפי במשמרת שנוצרה על ידי הפותר.
ייצוג JSON |
---|
{ "eventTemplateId": string, "startDateTime": { object ( |
שדות | |
---|---|
eventTemplateId |
המזהה של התבנית שבה נעשה שימוש כדי ליצור את האירוע הזה. |
startDateTime |
התאריך ושעת ההתחלה של האירוע. הערך הזה מצוין עד הדקה. שניות ויחידות קטנות יותר לא ניתנות. |
endDateTime |
התאריך ושעת הסיום של האירוע. הערך הזה מצוין עד הדקה. שניות ויחידות קטנות יותר לא ניתנות. |