Çalışan talebini karşılamak için verilen vardiya şablonlarında değişiklikler oluşturarak, belirtilen SolveShiftGenerationRequest ile ilişkili bir vardiya oluşturma problemini çözer.
HTTP isteği
POST https://optimization.googleapis.com/v1/scheduling:solveShiftGeneration
URL, gRPC Kod Dönüştürme söz dizimini kullanır.
İstek içeriği
İstek gövdesi, aşağıdaki yapıya sahip verileri içerir:
| JSON gösterimi |
|---|
{ "solverConfig": { object ( |
| Alanlar | |
|---|---|
solverConfig |
İsteğe bağlı. Çözücü parametreleri. |
shiftTemplates[] |
Zorunlu. Kaydırma oluşturma kurallarını belirten vardiya şablonları kümesi. |
employeeDemands[] |
Zorunlu. |
Yanıt gövdesi
Üst Karakter Oluşturma sorunu için yanıt. Döndürülen solutionStatus değeri SOLVED ise çözücü tarafından oluşturulan geçerli kaymalar grubu employeeSchedules içinde döndürülür. Geçerli bir vardiya programı için aşağıdaki mülklerde bulunur:
employeeSchedulesuygulamasında oluşturulan her bir değişiklik, ilgiliShiftTemplatepolitikasında belirtilen kurallara uyar.- Her vardiyada seçilen her etkinlik, ilgili
ShiftTemplate.Eventiçinde belirtilen kurallara uyar. - Aynı ShiftTemplate'ten oluşturulan vardiya kümelerine atanan toplam çalışan sayısı söz konusu şablonun
maximumEmployeeCountkadarını aşmaz. - Atanan çalışan grubu, belirtilen her aralıktaki talebi karşılar.
Başarılı olursa yanıt metni aşağıdaki yapıyla birlikte verileri içerir:
| JSON gösterimi |
|---|
{ "solutionStatus": enum ( |
| Alanlar | |
|---|---|
solutionStatus |
Döndürülen çözümün durumu. |
employeeSchedules[] |
Çözücü tarafından oluşturulan vardiyalar ve her bir zaman çizelgesine atanan çalışan sayısı. |
demandCoverageViolations[] |
Belirtilen |
SolverConfig
Üst Karakter Oluşturma sorununu çözmek için ek parametreleri belirtir.
| JSON gösterimi |
|---|
{ "timeLimit": string, "multiDaySchedule": boolean, "shiftEventsCanChange": boolean } |
| Alanlar | |
|---|---|
timeLimit |
Çözme aracının problem üzerinde harcaması gereken maksimum süre. Ayarlanmazsa varsayılan olarak 1 dakika olur. Zaman sınırı seçimi, sorunun boyutuna bağlı olmalıdır. Örneğin, 2 Bu değer sabit bir sınır değildir ve iletişim ek yükünü hesaba katmaz. Sorunu çözmek için beklenen gecikme, bu değeri biraz aşabilir. En fazla dokuz kesir basamağı olan ve " |
multiDaySchedule |
Doğru ise çözücü, birkaç vardiya içeren (ör. haftalık bir program oluşturmak için) |
shiftEventsCanChange |
Doğru değerine ayarlanırsa birden çok gün içeren |
ShiftTemplate
Vardiya oluşturma kurallarını belirten şablon. Vardiya, başlangıç ve bitiş zamanının belirtildiği ve etkinliklerin (ör.öğle yemeği, mola vb.) yer alabileceği bir çalışma birimidir. Yanıtta belirli bir tarihe bir kaydırma atanacak.
| JSON gösterimi |
|---|
{ "id": string, "earliestStartTime": { object ( |
| Alanlar | |
|---|---|
id |
Bu şablonun benzersiz kimliği. |
earliestStartTime |
Vardiyanın gün içinde başlayabileceği en erken saat. Bu değer, saat ve dakika ile belirtilir; saniye ve nanolar göz ardı edilir. |
latestStartTime |
Vardiyanın gün içinde başlayabileceği en geç saat. Bu değer, saat ve dakika ile belirtilir; saniye ve nanolar göz ardı edilir. Bu değer |
durationMinutes |
Bu şablon tarafından oluşturulan bir kaymanın süresi sabitlendi. |
startTimeIncrementMinutes |
|
daysOffCountPerWeek |
Haftalık olarak belirlenen sabit gün sayısı. Bir çalışan, o gün başlayan bir vardiyaya atanmamışsa belirli bir izin günü vardır. Bir hafta 7 gündür ve Pazar günü başlar. |
eventTemplates[] |
Her vardiya için etkinlik oluşturma kuralları. Belirtilen her Etkinlik için her bir vardiyaya tam olarak bir etkinlik dahil edilecek. |
minimumIntereventGapMinutes |
Bir etkinliğin sonu ile bir sonraki etkinliğin başlangıcı arasındaki minimum dakika sayısı. |
maximumEmployeeCount |
Bu şablon tarafından oluşturulan tüm vardiyalara atanabilecek maksimum çalışan sayısı. |
TimeOfDay
Günün saatini temsil eder. Tarih ve saat dilimi önemli değil veya başka bir yerde belirtilmiş. Bir API, artık saniyeye izin vermeyi seçebilir. İlgili türler: google.type.Date ve google.protobuf.Timestamp.
| JSON gösterimi |
|---|
{ "hours": integer, "minutes": integer, "seconds": integer, "nanos": integer } |
| Alanlar | |
|---|---|
hours |
24 saat biçiminde günün saatleri. 0 ile 23 arasında olmalıdır. Bir API, "24:00:00" değerine izin vermeyi seçebilir. gibi senaryolar için oldukça yararlı olabilir. |
minutes |
Günün saatindeki dakikalar. 0 ile 59 arasında olmalıdır. |
seconds |
Saniye cinsinden dakika. Normalde 0 ile 59 arasında olmalıdır. Bir API, artık saniyeye izin veriyorsa 60 değerine izin verebilir. |
nanos |
Nanosaniye cinsinden saniyenin kesirleri. 0 ile 999.999.999 arasında olmalıdır. |
EventTemplate
Kaydırma sırasında gerçekleşen tek bir etkinlik oluşturma kurallarını belirten şablon. Etkinlik bir toplantıyı, molayı, öğle yemeğini vb. temsil edebilir.
| JSON gösterimi |
|---|
{ "id": string, "minimumMinutesAfterShiftStart": integer, "maximumMinutesAfterShiftStart": integer, "durationMinutes": integer, "startTimeIncrementMinutes": integer } |
| Alanlar | |
|---|---|
id |
Bu şablonun benzersiz kimliği. |
minimumMinutesAfterShiftStart |
Bir vardiya başlangıcından sonra bu etkinliğin başlayabileceği minimum dakika sayısı. |
maximumMinutesAfterShiftStart |
Bir vardiya başlangıcından sonra bu etkinliğin başlayabileceği maksimum dakika sayısı. |
durationMinutes |
Bu etkinliğin dakika cinsinden süresi sabitlendi. |
startTimeIncrementMinutes |
|
EmployeeDemand
Belirtilen DateTime aralığında talebi karşılamak için gereken çalışan sayısını belirtir.
| JSON gösterimi |
|---|
{ "startDateTime": { object ( |
| Alanlar | |
|---|---|
startDateTime |
Belirli bir talep için zaman aralığının başlangıcı (dahil). Bu değerler dakikaya kadar okunur. saniye ve tüm küçük birimler yoksayılır. |
endDateTime |
Belirli bir talep için zaman aralığının sonu (hariç). Bu değerler dakikaya kadar okunur. saniye ve tüm küçük birimler yoksayılır. |
employeeCount |
Bu aralıkla ilgili talebi karşılamak için gereken çalışan sayısı. |
ShiftGenerationSolutionStatus
Bir çözücünün yanıtında sağlanan çözüm durumu.
| Sıralamalar | |
|---|---|
SHIFT_GENERATION_SOLUTION_STATUS_UNSPECIFIED |
Yanıt için belirtilmemiş durum. |
SHIFT_GENERATION_SOLVED |
Çözme aracı, belirtilen süre sınırında bir çözüm buldu. |
SHIFT_GENERATION_NOT_SOLVED |
Bir sorun, çözücünün değişim oluşturmasını engelledi. |
SHIFT_GENERATION_NOT_SOLVED_DEADLINE_EXCEEDED |
Belirtilen zaman sınırı dahilinde talebi karşılamak için değişiklikler oluşturulamadı. |
EmployeeSchedule
Birkaç çalışana atanacak tek bir ShiftTemplate'ye karşılık gelen sıralı vardiya listesi.
| JSON gösterimi |
|---|
{
"shiftTemplateId": string,
"shifts": [
{
object ( |
| Alanlar | |
|---|---|
shiftTemplateId |
Bu vardiya grubunu oluşturmak için kullanılan şablonun kimliği. |
shifts[] |
|
employeeCount |
Talebi karşılamak için bu vardiya grubuna atanması gereken çalışan sayısı. |
ShiftWithEvents
Çözücü tarafından oluşturulan bir kaymanın sabit etkinliklerinin bir listesiyle birlikte başlangıç ve bitiş tarihini belirtir.
| JSON gösterimi |
|---|
{ "startDateTime": { object ( |
| Alanlar | |
|---|---|
startDateTime |
Vardiyanın başlangıç tarihi ve saati. Bu değer dakikaya kadar belirtilir. saniye ve daha küçük birimler verilmez. |
endDateTime |
Vardiyanın bitiş tarihi ve saati. Bu değer dakikaya kadar belirtilir. saniye ve daha küçük birimler verilmez. |
events[] |
Bu vardiyaya dahil edilen, |
Etkinlik
Çözücü tarafından oluşturulan bir vardiyadaki belirli bir etkinliğin başlangıç ve bitiş tarihini belirtir.
| JSON gösterimi |
|---|
{ "eventTemplateId": string, "startDateTime": { object ( |
| Alanlar | |
|---|---|
eventTemplateId |
Bu etkinliği oluşturmak için kullanılan şablonun kimliği. |
startDateTime |
Etkinliğin başlangıç tarihi ve saati. Bu değer dakikaya kadar belirtilir. saniye ve daha küçük birimler verilmez. |
endDateTime |
Etkinliğin bitiş tarihi ve saati. Bu değer dakikaya kadar belirtilir. saniye ve daha küçük birimler verilmez. |
DemandCoverageViolation
Belirtilen aralıktaki talep kapsamı ihlalini belirtir. Çalışan talebi, belirtilen aralığın tamamında aynıdır.
| JSON gösterimi |
|---|
{ "startDateTime": { object ( |
| Alanlar | |
|---|---|
startDateTime |
Talep aralığının başlangıç tarihi ve saati (dahil). Bu değer dakikaya kadar belirtilir. |
endDateTime |
Talep aralığının bitiş tarihi ve saati (hariç). Bu değer dakikaya kadar belirtilir. |
coverageViolation |
Belirtilen aralıktaki kapsam ihlali. Pozitif değer talebin gereğinden fazla karşılandığını, negatif değer ise talebin karşılanmadığını gösterir. |