یک مشکل تولید شیفت را از SolveShiftGenerationRequest
با ایجاد شیفت هایی از الگوهای شیفت داده شده به منظور پوشش تقاضای کارمندان حل می کند.
درخواست HTTP
POST https://optimization.googleapis.com/v1/scheduling:solveShiftGeneration
URL از دستور GRPC Transcoding استفاده می کند.
درخواست بدن
بدنه درخواست حاوی داده هایی با ساختار زیر است:
نمایندگی JSON |
---|
{ "solverConfig": { object ( |
فیلدها | |
---|---|
solverConfig | اختیاری. پارامترهای حل کننده |
shiftTemplates[] | مورد نیاز. مجموعه ای از الگوهای شیفت که قوانینی را برای ایجاد شیفت ها مشخص می کند. |
employeeDemands[] | مورد نیاز. کل تقاضای کارکنان که شیفت های ایجاد شده توسط |
بدن پاسخگو
پاسخ به مشکل Shift Generation. اگر solutionStatus
بازگشتی SOLVED
باشد، مجموعه ای از شیفت های معتبر ایجاد شده توسط حل کننده در employeeSchedules
برگردانده می شوند. برای یک برنامه شیفت معتبر، ویژگی های زیر باقی می مانند:
- هر شیفتی که در
employeeSchedules
ایجاد میشود به قوانین مشخصشده درShiftTemplate
مربوطه پایبند است. - هر رویداد انتخاب شده در هر شیفت به قوانین مشخص شده در
ShiftTemplate.Event
مربوطه پایبند است. - تعداد کل کارکنان اختصاص داده شده به مجموعه شیفت های ایجاد شده از همان ShiftTemplate از
maximumEmployeeCount
آن الگو تجاوز نمی کند. - مجموعه کارکنان تعیین شده در هر بازه زمانی معین تقاضا را پوشش می دهند.
در صورت موفقیت آمیز بودن، بدنه پاسخ حاوی داده هایی با ساختار زیر است:
نمایندگی JSON |
---|
{ "solutionStatus": enum ( |
فیلدها | |
---|---|
solutionStatus | وضعیت راه حل برگشتی اگر |
employeeSchedules[] | مجموعه ای از شیفت های ایجاد شده توسط حل کننده همراه با تعداد کارکنان اختصاص داده شده به هر برنامه. |
demandCoverageViolations[] | نقض پوشش تقاضا بر اساس |
SolverConfig
پارامترهای اضافی را برای حل مشکل Shift Generation مشخص می کند.
نمایندگی JSON |
---|
{ "timeLimit": string, "multiDaySchedule": boolean, "shiftEventsCanChange": boolean } |
فیلدها | |
---|---|
timeLimit | حداکثر زمانی که حل کننده باید برای مشکل صرف کند. اگر تنظیم نشده باشد، به طور پیش فرض روی 1 دقیقه تنظیم می شود. انتخاب محدودیت زمانی باید به اندازه مشکل بستگی داشته باشد. برای مثال، هنگام حل یک نمونه 7 روزه با 2 این مقدار یک محدودیت سخت نیست و برای سربار ارتباط حساب نمی کند. تاخیر مورد انتظار برای حل مشکل ممکن است کمی بیشتر از این مقدار باشد. مدت زمان در ثانیه با حداکثر نه رقم کسری که با ' |
multiDaySchedule | اگر درست باشد، حلکننده برنامههای |
shiftEventsCanChange | اگر درست باشد، برنامه های چند روزه |
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 باشد. |
قالب رویداد
الگوی مشخص کننده قوانینی برای ایجاد یک رویداد واحد که در طول یک شیفت رخ می دهد. یک رویداد ممکن است نمایانگر یک جلسه، استراحت، ناهار و غیره باشد.
نمایندگی JSON |
---|
{ "id": string, "minimumMinutesAfterShiftStart": integer, "maximumMinutesAfterShiftStart": integer, "durationMinutes": integer, "startTimeIncrementMinutes": integer } |
فیلدها | |
---|---|
id | شناسه منحصر به فرد این الگو. |
minimumMinutesAfterShiftStart | حداقل تعداد دقیقه پس از شروع یک شیفت که این رویداد می تواند شروع شود. |
maximumMinutesAfterShiftStart | حداکثر تعداد دقیقه پس از شروع یک شیفت که این رویداد می تواند شروع شود. |
durationMinutes | مدت زمان ثابت در دقیقه از این رویداد. |
startTimeIncrementMinutes | افزایش زمان (بر حسب دقیقه) مورد استفاده برای ایجاد مجموعه زمانهای شروع رویداد ممکن بین |
EmployeeDemand
تعداد کارکنان مورد نیاز برای پوشش تقاضا در بازه زمانی داده شده را مشخص می کند.
نمایندگی 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 | تاریخ و زمان پایان رویداد. این مقدار تا دقیقه مشخص می شود. ثانیه و واحدهای کوچکتر داده نمی شود. |
نقض پوشش تقاضا
نقض پوشش تقاضا را برای بازه داده شده مشخص می کند. تقاضای کارمندان در کل بازه زمانی مشخص شده یکسان است.
نمایندگی JSON |
---|
{ "startDateTime": { object ( |
فیلدها | |
---|---|
startDateTime | تاریخ شروع و زمان بازه تقاضا (شامل). این مقدار تا دقیقه مشخص می شود. |
endDateTime | تاریخ و زمان پایان بازه تقاضا (انحصاری). این مقدار تا دقیقه مشخص می شود. |
coverageViolation | نقض پوشش در بازه زمانی مشخص شده. مقدار مثبت نشان می دهد که تقاضا بیش از حد پوشش داده شده است و مقدار منفی نشان می دهد که تقاضا تحت پوشش است. |