یک مشکل زمانبندی شیفت ثابت از SolveShiftSchedulingRequest
داده شده را با انتساب کارکنان به شیفتها حل میکند، به گونهای که اولویتهای زمانبندی کارمندان به حداکثر برسد و نقض محدودیتهای زمانبندی به حداقل برسد.
درخواست HTTP
POST https://optimization.googleapis.com/v1/scheduling:solveShiftScheduling
URL از دستور GRPC Transcoding استفاده می کند.
درخواست بدن
بدنه درخواست حاوی داده هایی با ساختار زیر است:
نمایندگی JSON |
---|
{ "requestId": string, "solveParameters": { object ( |
فیلدها | |
---|---|
requestId | مشکل یا شناسه درخواست. |
solveParameters | پارامترهایی برای کنترل یک حل مشکل. |
employees[] | همه کارمندان موجود باید برنامه ریزی شوند. |
shifts[] | همه شیفت ها برای تشکیل برنامه. |
coverageRequirements[] | الزامات پوشش برای کل افق برنامه ریزی. اینها تعداد کارمندانی را که باید هر نقش یا مهارتی را در طول یک پنجره زمانی یا فهرستی از شناسههای شیفت انجام دهند، مشخص میکند. همه الزامات پوشش باید با پنجره های زمانی یا لیستی از شناسه های شیفت (اما نه هر دو) مشخص شوند. پنجره های زمانی (در صورت داده شدن) برای الزامات پوشش نمی توانند برای هر مکان معین همپوشانی داشته باشند. سطح اولویت پیشفرض برای هر یک از این محدودیتها |
roleIds[] | فهرست تمام نقش های ممکن در سراسر نیروی کار. هر کارمند باید حداقل یک نقش را داشته باشد که بتوان آن را برای یک شیفت به او اختصاص داد. نقش به یک تکلیف شغلی خاص در طول یک شیفت (به عنوان مثال پرستار ثبت نام شده، سرآشپز اجرایی، پیشخدمت و غیره) اشاره دارد. هنگامی که یک کارمند به یک شیفت منصوب می شود، به یک نقش خاص نیز منصوب می شود. |
skillIds[] | فهرستی از تمام مهارت های ممکن در سراسر نیروی کار. یک مهارت به هر نوع صلاحیت اضافی که یک کارمند ممکن است داشته باشد اشاره دارد که به شغل قابل واگذاری خاصی مربوط نمی شود (مثلاً گواهینامه ها، زبان های صحبت شده و غیره). این لیست می تواند خالی باشد. هنگامی که یک کارمند به یک شیفت منصوب می شود، باید تمام مهارت های مورد نیاز برای آن شیفت را برآورده کند. |
locationIds[] | فهرست تمام مکانهای ممکن برای مجموعه شیفتها در برنامه. این لیست می تواند خالی باشد. تعیین مکانهای مختلف زمانی میتواند مفید باشد، برای مثال، یک مدیر پرستار میخواهد پرستاران زیادی را در واحدهای مختلف در یک بیمارستان برنامهریزی کند یا برای مثال، یک مدیر هتل میخواهد کارمندان را در چندین هتل برنامهریزی کند. |
budgetRequirements[] | مشخصات بودجه برای مشکل زمان بندی. سطح اولویت پیشفرض برای هر یک از این الزامات |
assignmentsHint[] | تکالیف را برای استفاده به عنوان یک راه حل آزمایشی (معروف به راه حل اشاره) به مسئله زمان بندی تغییر دهید. اگر تخصیص با یک جابجایی غیرقابل تخصیص یا یک درخواست زمانبندی مغایرت داشته باشد، نکات تخصیص نادیده گرفته میشوند. |
بدن پاسخگو
پاسخ به API برنامه ریزی نیروی کار. برای هر پاسخ، shiftAssignments
خالی خواهد بود اگر solutionStatus
بازگشتی NOT_SOLVED_DEADLINE_EXCEEDED
یا INFEASIBLE
باشد. اگر solutionStatus
که برگردانده شده OPTIMAL
یا FEASIBLE
، یک تخصیص شیفت معتبر در shiftAssignments
برگردانده می شود. برای یک انتساب شیفت معتبر، ویژگی های زیر برقرار است:
- شناسه هر کارمند در مجموعه کارمندانی که در درخواست ارائه شده است موجود است.
- هر شناسه نقشی که به کارمند اختصاص داده میشود، در مجموعه شناسههای نقش برای کارمند مشخص میشود.
- شناسه هر شیفت در مجموعه شیفت های ارائه شده در درخواست موجود است.
- هر شناسه شیفت یکی از شناسه های شیفت غیرقابل تخصیص برای کارمند معین نیست.
- یک کارمند هرگز به دو شیفت همپوشانی منصوب نمی شود.
- برای زمان بندی داده شده، هیچ یک از محدودیت ها یا درخواست های دارای اولویت
PRIORITY_MANDATORY
نقض نمی شود.
در صورت موفقیت آمیز بودن، بدنه پاسخ حاوی داده هایی با ساختار زیر است:
نمایندگی JSON |
---|
{ "requestId": string, "solutionStatus": enum ( |
فیلدها | |
---|---|
requestId | شناسه درخواستی که این پاسخ با آن مرتبط است. |
solutionStatus | وضعیت راه حل برگشتی اگر راه حل امکان پذیر یا بهینه نباشد، سایر فیلدهای این پروتو ممکن است خالی باشند. اگر وضعیت NOT_SOLVED_DEADLINE_EXCEEDED باشد، محدودیت زمانی بدون یافتن راهحل امکانپذیر یا تعیین وجود راهحل امکانپذیر به پایان رسیده است. اگر محدودیتهای سطح اولویت اجباری نتوانند همه برآورده شوند، ممکن است درخواستها غیرممکن باشد. |
shiftAssignments[] | لیست تمام تکالیف هر |
statusMessage | اگر |
SolveParameters
پارامترهایی که یک حل مشکل زمانبندی شیفت را کنترل میکنند.
نمایندگی JSON |
---|
{ "timeLimit": string } |
فیلدها | |
---|---|
timeLimit | حداکثر زمانی که حل کننده باید برای مشکل صرف کند. اگر تنظیم نشده باشد، به طور پیش فرض روی 1 دقیقه تنظیم می شود. این مقدار یک محدودیت سخت نیست و برای سربار ارتباط حساب نمی کند. تاخیر مورد انتظار برای حل مشکل ممکن است کمی بیشتر از این مقدار باشد. مدت زمان در ثانیه با حداکثر نه رقم کسری که با ' |
کارمند
یک کارمند از نیروی کار برنامه ریزی شود.
نمایندگی JSON |
---|
{ "id": string, "roleIds": [ string ], "skillIds": [ string ], "shiftPreferences": [ { object ( |
فیلدها | |
---|---|
id | شناسه منحصر به فرد به این کارمند اختصاص داده شده است. |
roleIds[] | شناسه های نقشی که این کارمند می تواند انجام دهد. باید حداقل یک نقش مشخص باشد. هنگامی که یک کارمند به یک شیفت منصوب می شود، به یک نقش واحد از این لیست نیز اختصاص داده می شود. کارمند ممکن است در طول پنجره برنامه ریزی به نقش های مختلفی اختصاص یابد. |
skillIds[] | شناسه های مهارتی که این کارمند دارد. این لیست می تواند خالی باشد. هنگامی که یک کارمند به یک شیفت منصوب می شود، از هر زیرمجموعه ای از مهارت های ذکر شده در اینجا برای پوشش مهارت های مورد نیاز در طول مدت شیفت تعیین شده استفاده می کند. |
shiftPreferences[] | ترجیحات شیفت این کارمند. شیفت های مشخص شده در اینجا نشان دهنده شیفت هایی است که کارمند ترجیح می دهد در طول پنجره برنامه ریزی به آنها اختصاص داده شود. شناسههای shift مشخصشده در |
schedulingConstraints[] | لیست محدودیت های زمان بندی برای این کارمند. سطح اولویت پیشفرض برای هر یک از این محدودیتها |
resourceConstraints[] | هر گونه محدودیت زمان بندی اضافی که در |
shiftRequests[] | لیست درخواست های شیفت برای کارمند. درخواست می تواند برای کارمندی باشد که در شیفت های خاص منصوب شود یا نه. هر تکالیف زمانبندی ثابت برای کارمند را میتوان با |
hourlyContract | قراردادی که نرخ های منظم و اضافه کاری ساعتی را برای کارمند مشخص می کند. |
ShiftPreference
یک اولویت عددی برای یک شناسه شیفت خاص.
نمایندگی JSON |
---|
{ "shiftId": string, "preference": integer } |
فیلدها | |
---|---|
shiftId | شناسه Shift که اولویت برای آن مشخص شده است. |
preference | مقادیر بزرگتر اولویت نشان دهنده تغییر مطلوب تر است. |
محدودیت زمانبندی
محدودیت برنامه ریزی خاص برای یک کارمند خاص. محدودیت مشخص شده فقط در بازه زمانی داده شده [startDateTime, endDateTime)
اعمال می شود.
نمایندگی JSON |
---|
{ "priority": enum ( |
فیلدها | |
---|---|
priority | سطح اولویت برای این محدودیت زمانبندی. اولویت پیشفرض برای همه محدودیتهای زمانبندی |
startDateTime | زمان شروع برای زمانی که این محدودیت زمان بندی اعمال می شود (شامل). |
endDateTime | زمان پایان برای زمانی که این محدودیت زمانبندی اعمال میشود (انحصاری). |
type فیلد اتحادیه نوع محدودیت مشخص شده هر محدودیت فقط در پنجره زمانی مشخص شده در بالا اعمال می شود. type می تواند تنها یکی از موارد زیر باشد: | |
minimumMinutes | حداقل دقایقی که کارمند می تواند کار کند. اگر کارمند به شیفتی منصوب شود که (به طور کامل یا جزئی) با پنجره زمانی همپوشانی داشته باشد، تعداد دقیقه هایی که شیفت با پنجره زمانی همپوشانی دارد در این شمارش لحاظ می شود. |
maximumMinutes | حداکثر دقیقه ای که کارمند می تواند در پنجره زمانی کار کند. اگر کارمند به شیفتی منصوب شود که (به طور کامل یا جزئی) با پنجره زمانی همپوشانی داشته باشد، تعداد دقیقه هایی که شیفت با پنجره زمانی همپوشانی دارد در این شمارش لحاظ می شود. |
minimumConsecutiveWorkDays | حداقل تعداد روزهای متوالی که کارمند می تواند کار کند. اگر کارمندی به شیفتی که در آن روز شروع میشود، منصوب شود، در یک روز مشخص کار میکند. هر شیفتی که کارمند به آن منصوب می شود و در پنجره زمانی شروع می شود، در این شمارش لحاظ می شود. |
maximumConsecutiveWorkDays | حداکثر تعداد روزهای متوالی که کارمند می تواند کار کند. اگر کارمندی به شیفتی که در آن روز شروع میشود، منصوب شود، در یک روز مشخص کار میکند. هر شیفتی که کارمند به آن منصوب می شود و در پنجره زمانی شروع می شود، در این شمارش لحاظ می شود. |
minimumShiftCount | حداقل تعداد شیفت هایی که کارمند می تواند کار کند. هر شیفتی که کارمند به آن منصوب می شود و کاملاً با پنجره زمانی همپوشانی دارد در این شمارش گنجانده می شود. |
maximumShiftCount | حداکثر تعداد شیفت هایی که کارمند می تواند کار کند. هر شیفتی که کارمند به آن منصوب می شود و کاملاً با پنجره زمانی همپوشانی دارد در این شمارش گنجانده می شود. |
minimumRestMinutes | حداقل دقایقی که کارمند باید پس از پایان یک شیفت قبل از انتساب به شیفت دیگر استراحت کند. این محدودیت برای هر جفت شیفتی که به طور کامل در [ |
اولویت
سطح اولویت برای هر گونه محدودیت در برنامه کارمند یا الزامات پوشش. اینها عبارتند از SchedulingConstraint
، ResourceConstraint
، ShiftRequest
و CoverageRequirement
. از آنجایی که ممکن است محدودیت های متناقضی وجود داشته باشد، همیشه نمی توان هر محدودیتی را برآورده کرد. به این ترتیب، هر نوع محدودیت دارای یک اولویت (داده شده توسط کاربر یا یک پیش فرض) است که به حل کننده در مورد اهمیت نسبی تمام محدودیت های داده شده به یک برنامه زمان بندی کامل اطلاع می دهد.
Enums | |
---|---|
PRIORITY_UNSPECIFIED | سطح اولویت نامشخص |
PRIORITY_LOW | پایین ترین سطح اولویت محدودیت های با این اولویت نسبت به سایر محدودیت ها اهمیت کمتری دارند. آنها اولین کسانی هستند که در صورت عدم یافتن راه حل عملی، برای نقض در نظر گرفته می شوند. |
PRIORITY_MEDIUM | سطح اولویت متوسط. محدودیتهای با این اولویت مهمتر از محدودیتهای با اولویت PRIORITY_LOW هستند، اما اهمیت کمتری نسبت به محدودیتهای با اولویت PRIORITY_HIGH دارند. اگر پس از رفع همه محدودیتها با اولویت PRIORITY_LOW ، راهحلی امکانپذیر یافت نشد، محدودیتهای اولویت PRIORITY_MEDIUM در مرحله بعدی برای نقض در نظر گرفته میشوند. |
PRIORITY_HIGH | بالاترین سطح اولویت. محدودیت ها با این سطح اولویت مهم ترین هستند. اگر پس از کاهش محدودیتهای سطوح اولویت پایینتر، راهحلی امکانپذیر یافت نشد، آنها آخرین مواردی هستند که برای نقض در نظر گرفته میشوند. |
PRIORITY_MANDATORY | سطح اولویت که نشان دهنده چیزی است که توسط حل کننده قابل نقض نیست. اگر حلکننده SolutionStatus.INFEASIBLE برمیگرداند، ممکن است به دلیل محدودیتهای بیش از حد PRIORITY_MANDATORY باشد. |
محدودیت منابع
یک محدودیت کلی که میزان استفاده از یک "منبع" خاص توسط یک کارمند را محدود می کند. این یک نسخه انتزاعی از SchedulingConstraint
خاص تر است که برای کاربر انعطاف پذیرتر است. بسیاری از محدودیتهای زمانبندی که نمیتوانند در SchedulingConstraint.type
مشخص شوند، میتوانند با استفاده از این پیام به جای آن مشخص شوند.
نمایندگی JSON |
---|
{
"priority": enum ( |
فیلدها | |
---|---|
priority | سطح اولویت این محدودیت منبع. اولویت پیشفرض برای همه محدودیتهای منبع |
resourceUsages | مقدار منابع استفاده شده توسط شیفت. به عنوان مثال، اگر این محدودیت برای حداقل و حداکثر ساعات کار یک کارمند در یک هفته خاص اعمال شود، این نقشه شامل شیفت هایی است که در آن هفته رخ می دهد و طول هر شیفت بر حسب ساعت. یک شی حاوی لیستی از |
minimumResourceUsage | حداقل استفاده از منابع برای ارضای یک محدودیت منبع. |
maximumResourceUsage | حداکثر استفاده از منابع برای یک محدودیت منبع برآورده شود. |
ShiftRequest
درخواست یک کارمند برای تعیین تکلیف یا عدم تعیین تکلیف در شیفت های خاص.
نمایندگی JSON |
---|
{ "priority": enum ( |
فیلدها | |
---|---|
priority | سطح اولویت این درخواست زمانبندی. اولویت پیشفرض برای همه درخواستهای زمانبندی |
shiftIds[] | شناسههای شیفت درخواست زمانبندی. |
type | نوع درخواست، به عنوان مثال، اینکه آیا درخواست به مجموعه شیفت ها اختصاص داده شده است یا نه. |
وضعیت کاری
این که آیا یک کارمند کار می کند یا نه.
Enums | |
---|---|
WORK_STATUS_UNSPECIFIED | وضعیت کار نامشخص |
STATUS_WORK | وضعیت نشان دهنده یک کارمند شاغل |
STATUS_NOT_WORK | وضعیت نشان دهنده یک کارمند غیر شاغل. |
قرارداد ساعتی
نرخ پایه ساعتی، تفاوت نرخ و ضریب اضافه کاری را برای تعیین غرامت برای یک کارمند مشخص می کند. توجه داشته باشید که مقررات در مکان های مختلف ممکن است نیاز به محاسبه متفاوتی برای جبران اضافه کاری داشته باشند. حل کننده غرامت اضافه کاری را تقریب می زند تا یک پروکسی از کل هزینه را به حداقل برساند یا یک بودجه را برآورده کند (به BudgetRequirement
مراجعه کنید). به عنوان ابزاری برای محاسبه حقوق و دستمزد در نظر گرفته نشده است.
نمایندگی JSON |
---|
{
"baseHourlyRate": number,
"hourlyRateShiftDifferentials": {
string: number,
...
},
"overtimePeriods": [
{
object ( |
فیلدها | |
---|---|
baseHourlyRate | غرامت یک ساعت کار غیر اضافه کاری. اگر چند نرخ برای کارمند اعمال شود، تفاوت نرخ نسبت به این نرخ پایه ساعتی اعمال می شود. علاوه بر این، اگر چند نرخ وجود دارد، نرخ پایه ساعتی باید حداقل این نرخ ها باشد. |
hourlyRateShiftDifferentials | تفاوت نرخ ساعتی، در بالای یک شی حاوی لیستی از |
overtimePeriods[] | فهرستی از تمام دوره هایی که اضافه کاری برای آنها باید محاسبه شود. این دوره ها نباید با هم تداخل داشته باشند. |
دوره اضافه کاری
یک دوره ثابت و به طور منظم تکرار شونده (معمولا 168 ساعت یا هفت دوره 24 ساعته متوالی) که برای تعیین میزان جبران اضافه کاری استفاده می شود. هر دوره دارای یک ضریب اضافه کاری (مثلاً 1.5) نسبت به baseHourlyRate
و محدودیتی در تعداد ساعاتی است که کار معمولی (غیر اضافه کاری) در نظر گرفته می شود. هر تغییری که با پنجره زمانی startDateTime
(شامل) و endDateTime
(انحصاری) همپوشانی داشته باشد به تعداد کل ساعات کار در دوره حساب می شود. اگر همپوشانی جزئی باشد، فقط ساعات همپوشانی شمارش میشود.
نمایندگی JSON |
---|
{ "overtimeMultiplier": number, "startDateTime": { object ( |
فیلدها | |
---|---|
overtimeMultiplier | ضریب برای محاسبه نرخ ساعتی اضافه کاری (باید بزرگتر یا مساوی 1.0 باشد). نرخ ساعتی اضافه کاری معمولاً به صورت |
startDateTime | زمان شروع برای دوره اضافه کاری. اگر یک شیفت در این زمان همپوشانی داشته باشد، ساعتهای چنین تغییری از |
endDateTime | زمان پایان برای دوره اضافه کاری. اگر یک جابجایی در این زمان همپوشانی داشته باشد، ساعتهای چنین تغییری تا |
maximumRegularHours | حداکثر تعداد ساعات کاری که با نرخ عادی (غیر اضافه کاری) پرداخت می شود. این مقدار باید مثبت باشد. |
شیفت
یک شیفت یک پنجره زمانی ثابت را مشخص می کند که کارکنان می توانند در آن کار کنند.
نمایندگی JSON |
---|
{ "id": string, "locationId": string, "startDateTime": { object ( |
فیلدها | |
---|---|
id | شناسه منحصر به فرد به این شیفت اختصاص داده شده است. |
locationId | شناسه مکان که این شیفت در آن کار می کند. این می تواند خالی باشد. |
startDateTime | زمان شروع شیفت (شامل). |
endDateTime | زمان پایان نوبت (اختصاصی). در حال حاضر، حل کننده فقط برای جابجایی هایی که کمتر از 24 ساعت طول دارند اجازه می دهد. |
breakRules[] | فهرستی از قوانین شکست که در طول شیفت رخ می دهد. به کارمندانی که این شیفت را انجام می دهند، به ازای هر |
BreakRule
قاعده ای که تعیین می کند یک وقفه می تواند در یک شیفت شروع شود و مدت زمان آن. فهرست تمام وقفههای احتمالی که در نظر گرفته میشوند با افزایش ruleIncrementMinutes
تعیین میشوند. به عنوان مثال، اگر یک قانون استراحت مدل سازی یک استراحت 30 دقیقه ای است که می تواند بین ساعت 10:00 تا 11:00 شروع شود، و افزایش قانون 20 دقیقه است، لیست وقفه هایی که در نظر گرفته می شوند عبارتند از: [10:00, 10 :30]، [10:20، 10:50]، [10:40، 11:10]، [11:00، 11:30].
نمایندگی JSON |
---|
{ "earliestStartTime": { object ( |
فیلدها | |
---|---|
earliestStartTime | زودترین زمان شروع استراحت (شامل). فقط |
latestStartTime | آخرین زمان شروع استراحت (شامل). فقط |
durationMinutes | مدت زمان استراحت بر حسب دقیقه |
ruleIncrementMinutes | [اختیاری] افزایش زمان بر حسب دقیقه برای همه وقفه هایی که می توان در این قانون استراحت در نظر گرفت. اگر تنظیم نشده باشد، به طور پیشفرض روی |
نیاز پوشش
یک الزام پوشش، تعداد کارکنان مورد نیاز برای مجموعه ای از نقش ها و/یا مهارت ها را در یک پنجره زمانی خاص و در یک مکان مشخص مشخص می کند. فواصل DateTime در یک مکان خاص نمی توانند همپوشانی داشته باشند. از طرف دیگر، به جای پنجره زمانی و مکان، میتوان فهرستی از شناسههای شیفت ارائه کرد. فقط کارمندانی که می توانند به نقش خاصی اختصاص داده شوند (یا دارای مهارت خاصی هستند) می توانند این نیاز را برآورده کنند.
برای یک نقش و/یا مهارت معین، الزامات پوشش زمانی برآورده میشود که حداقل تعداد کارمندان targetEmployeeCount
در هر لحظه در پنجره زمانی کار میکنند (یا برای هر تغییر در shiftIds
). در مقابل، اگر در هر نقطه از پنجره زمانی (یا برای هر یک از تغییرات در shiftIds
)، تعداد کارکنان کمتر از targetEmployeeCount
در طول پنجره زمانی کار کنند، الزامات پوشش نقض می شود. تعداد کارکنان شاغل بیشتر از targetEmployeeCount
هنوز هم نیاز را برآورده میکنند، اما پرسنل بیش از حد توسط حلکننده به حداقل میرسد.
نمایندگی JSON |
---|
{ "startDateTime": { object ( |
فیلدها | |
---|---|
startDateTime | زمان شروع برای پوشش مورد نیاز (شامل). در صورت تنظیم، |
endDateTime | زمان پایان برای پوشش مورد نیاز (انحصاری). در صورت تنظیم، |
locationId | مکانی که در آن کارمندان مورد نیاز هستند. |
shiftIds[] | در صورت تنظیم، نقش و الزامات مهارت به صورت جداگانه برای هر شناسه شیفت در این لیست اعمال می شود. اگر shiftIds خالی نیستند، |
roleRequirements[] | تعداد کارکنان مورد نیاز برای تخصیص به نقش های مشخص شده در پنجره زمانی. حداکثر یک |
skillRequirements[] | تعداد مورد نیاز کارمندان با مهارت های مشخص شده که در طول پنجره زمانی به شیفت ها اختصاص داده می شوند. برای هر شناسه مهارت حداکثر باید یک |
RoleRequirement
تعداد کارمندان مورد نیاز که در طول پنجره زمانی به نقش مشخص شده اختصاص داده شوند.
نمایندگی JSON |
---|
{
"roleId": string,
"targetEmployeeCount": integer,
"priority": enum ( |
فیلدها | |
---|---|
roleId | شناسه نقش برای مورد نیاز. |
targetEmployeeCount | تعداد مورد نظر کارکنانی که در طول پنجره زمانی به این نقش اختصاص داده شده اند. |
priority | سطح اولویت برای این محدودیت نیاز. اولویت پیشفرض برای همه محدودیتهای منبع |
نیاز به مهارت
تعداد مورد نیاز کارمندانی که در بازه زمانی مشغول به کار بوده و دارای مهارت مشخص شده باشند.
نمایندگی JSON |
---|
{
"skillId": string,
"targetEmployeeCount": integer,
"priority": enum ( |
فیلدها | |
---|---|
skillId | شناسه مهارت برای شرایط مورد نیاز |
targetEmployeeCount | تعداد مورد نظر کارمندان با مهارت داده شده که در طول پنجره زمانی کار می کنند. |
priority | سطح اولویت برای این محدودیت نیاز. اولویت پیشفرض برای همه محدودیتهای منبع |
بودجه مورد نیاز
الزامات بودجه برای یک بازه زمانی مشخص
نمایندگی JSON |
---|
{ "totalBudget": number, "startDateTime": { object ( |
فیلدها | |
---|---|
totalBudget | بودجه کل برای بازه زمانی داده شده اگر اولویت اگر |
startDateTime | زمان شروع برای زمانی که این بودجه اعمال می شود. اگر زمان شروع مشخص نشده باشد، آن را به عنوان اولین زمان شروع از همه شیفت های داده شده تنظیم می کنیم. |
endDateTime | زمان پایان برای زمانی که این بودجه اعمال می شود. اگر زمان پایان مشخص نشده باشد، تنظیم می شود که آخرین زمان پایان تمام شیفت های داده شده باشد. |
priority | سطح اولویت برای برآوردن نیاز بودجه در پنجره زمانی مشخص شده. اولویت پیشفرض توجه داشته باشید که اگر این اولویت بالاتر از سایر اولویتهای محدودیت باشد و اگر |
ShiftAssignment
یک کارمند برای تغییر نقش.
نمایندگی JSON |
---|
{
"employeeId": string,
"shiftId": string,
"roleId": string,
"breaks": [
{
object ( |
فیلدها | |
---|---|
employeeId | شناسه کارمند در حال تخصیص |
shiftId | شناسه شیفت به کارمند اختصاص داده شده است. |
roleId | شناسه نقشی که کارمند برای شیفت به آن اختصاص داده شده است. |
breaks[] | فهرست وقفهها برای این تکلیف شیفت. |
شکستن
دوره زمانی که در آن یک کارمند کار خود را در یک شیفت قطع می کند.
نمایندگی JSON |
---|
{
"startDateTime": {
object ( |
فیلدها | |
---|---|
startDateTime | زمان شروع استراحت |
durationMinutes | مدت زمان استراحت بر حسب دقیقه |
وضعیت راه حل
وضعیت راه حل (یعنی یک برنامه زمانی) در پاسخ یک حل کننده ارائه شده است.
Enums | |
---|---|
SOLUTION_STATUS_UNSPECIFIED | وضعیت نامشخص برای پاسخ. |
FEASIBLE | برنامه برگشتی امکان پذیر است، اما ممکن است بهینه نباشد. |
OPTIMAL | برنامه برگشتی بهینه است. |
INFEASIBLE | هیچ برنامه زمانی قابل اجرا برای محدودیت های داده شده وجود ندارد. اگر زیر مجموعه ای از محدودیت ها با سطح اولویت PRIORITY_MANDATORY برآورده نشود، حل کننده ممکن است این مقدار را برگرداند. |
NOT_SOLVED | هیچ برنامه زمانی پیدا نشد |
NOT_SOLVED_DEADLINE_EXCEEDED | هیچ برنامه زمانی در محدوده زمانی داده شده یافت نشد. |