Menyelesaikan masalah pembuatan shift dari SolveShiftGenerationRequest
yang ditentukan dengan menghasilkan pergeseran dari template shift tertentu untuk memenuhi permintaan karyawan.
Permintaan HTTP
POST https://optimization.googleapis.com/v1/scheduling:solveShiftGeneration
URL menggunakan sintaksis gRPC Transcoding.
Isi permintaan
Isi permintaan memuat data dengan struktur berikut:
Representasi JSON |
---|
{ "solverConfig": { object ( |
Kolom | |
---|---|
solverConfig |
Opsional. Parameter untuk pemecah. |
shiftTemplates[] |
Wajib. Kumpulan template shift yang menentukan aturan untuk menghasilkan shift. |
employeeDemands[] |
Wajib. Total karyawan meminta agar shift yang dihasilkan |
Isi respons
Respons untuk masalah Pembuatan Shift. Jika solutionStatus
yang ditampilkan adalah SOLVED
, kumpulan pergeseran valid yang dihasilkan oleh pemecah masalah akan ditampilkan di employeeSchedules
. Untuk jadwal shift yang valid, properti berikut akan berlaku:
- Setiap shift yang dihasilkan di
employeeSchedules
mematuhi aturan yang ditentukan dalamShiftTemplate
yang sesuai. - Setiap peristiwa yang dipilih di setiap shift akan mematuhi aturan yang ditentukan dalam
ShiftTemplate.Event
terkait. - Jumlah total karyawan yang ditetapkan ke serangkaian shift yang dihasilkan dari ShiftTemplate yang sama tidak melebihi
maximumEmployeeCount
template tersebut. - Sekumpulan karyawan yang ditugaskan mencakup permintaan pada setiap interval tertentu.
Jika berhasil, isi respons memuat data dengan struktur berikut:
Representasi JSON |
---|
{ "solutionStatus": enum ( |
Kolom | |
---|---|
solutionStatus |
Status solusi yang ditampilkan. Jika |
employeeSchedules[] |
Kumpulan shift yang dihasilkan oleh pemecah masalah beserta jumlah karyawan yang ditugaskan untuk setiap jadwal. |
demandCoverageViolations[] |
Pelanggaran cakupan permintaan berdasarkan |
SolverConfig
Menetapkan parameter tambahan untuk menyelesaikan masalah Pembuatan Shift.
Representasi JSON |
---|
{ "timeLimit": string, "multiDaySchedule": boolean, "shiftEventsCanChange": boolean } |
Kolom | |
---|---|
timeLimit |
Waktu maksimum yang harus dihabiskan oleh pemecah masalah untuk menyelesaikan soal. Jika tidak disetel, setelan defaultnya adalah 1 menit. Pilihan batas waktu harus bergantung pada ukuran masalah. Sebagai contoh, saat menyelesaikan instance 7 hari dengan 2 Nilai ini bukan batas pasti dan tidak memperhitungkan overhead komunikasi. Latensi yang diharapkan untuk menyelesaikan masalah mungkin sedikit lebih besar daripada nilai ini. Durasi dalam detik dengan maksimal sembilan digit pecahan, yang diakhiri dengan ' |
multiDaySchedule |
Jika benar, pemecah masalah akan menghasilkan |
shiftEventsCanChange |
Jika benar, |
ShiftTemplate
Template yang menetapkan aturan untuk menghasilkan shift. Shift adalah unit kerja yang menentukan waktu mulai, waktu berakhir, dan dapat berisi peristiwa (mis.makan siang, istirahat, dll.). Shift akan ditetapkan ke tanggal tertentu dalam respons.
Representasi JSON |
---|
{ "id": string, "earliestStartTime": { object ( |
Kolom | |
---|---|
id |
ID unik template ini. |
earliestStartTime |
Waktu paling awal dalam sehari saat shift dapat dimulai. Nilai ini ditentukan dengan jam dan menit; detik dan nanos diabaikan. |
latestStartTime |
Waktu terakhir pada hari saat shift dapat dimulai. Nilai ini ditentukan dengan jam dan menit; detik dan nanos diabaikan. Jika nilai ini kurang dari |
durationMinutes |
Durasi tetap untuk pergeseran yang dihasilkan oleh template ini. |
startTimeIncrementMinutes |
Penambahan waktu (dalam menit) yang digunakan untuk menghasilkan kumpulan kemungkinan waktu mulai antara |
daysOffCountPerWeek |
Jumlah hari libur tetap per minggu. Seorang karyawan memiliki hari libur jika mereka tidak ditugaskan ke shift yang dimulai pada hari itu. Seminggu adalah 7 hari dan dimulai pada hari Minggu. |
eventTemplates[] |
Aturan untuk menghasilkan peristiwa untuk setiap shift. Tepat satu peristiwa akan disertakan dalam setiap shift untuk setiap Peristiwa yang ditentukan. |
minimumIntereventGapMinutes |
Menit minimum antara akhir satu peristiwa dan awal peristiwa berikutnya. |
maximumEmployeeCount |
Jumlah maksimum karyawan yang dapat ditetapkan ke semua shift yang dihasilkan oleh template ini. |
TimeOfDay
Mewakili waktu. Tanggal dan zona waktu tidak signifikan atau ditentukan di tempat lain. API dapat memilih untuk memungkinkan detik kabisat. Jenis terkait adalah google.type.Date
dan google.protobuf.Timestamp
.
Representasi JSON |
---|
{ "hours": integer, "minutes": integer, "seconds": integer, "nanos": integer } |
Kolom | |
---|---|
hours |
Jam dalam format 24 jam. Harus dari 0 hingga 23. API dapat memilih untuk mengizinkan nilai "24:00:00" untuk skenario seperti waktu tutup bisnis. |
minutes |
Menit dalam jam. Harus dari 0 hingga 59. |
seconds |
Detik dalam waktu. Biasanya harus dari 0 hingga 59. API dapat mengizinkan nilai 60 jika memungkinkan lompatan-detik. |
nanos |
Pecahan detik dalam nanodetik. Harus dari 0 hingga 999.999.999. |
EventTemplate
Template yang menentukan aturan untuk menghasilkan satu peristiwa yang terjadi selama shift. Acara dapat mewakili pertemuan, istirahat, makan siang, dll.
Representasi JSON |
---|
{ "id": string, "minimumMinutesAfterShiftStart": integer, "maximumMinutesAfterShiftStart": integer, "durationMinutes": integer, "startTimeIncrementMinutes": integer } |
Kolom | |
---|---|
id |
ID unik template ini. |
minimumMinutesAfterShiftStart |
Jumlah menit minimum setelah awal shift agar peristiwa ini dapat dimulai. |
maximumMinutesAfterShiftStart |
Jumlah menit maksimum setelah awal shift untuk memulai peristiwa ini. |
durationMinutes |
Durasi tetap dalam menit peristiwa ini. |
startTimeIncrementMinutes |
Penambahan waktu (dalam menit) yang digunakan untuk menghasilkan kumpulan kemungkinan waktu mulai peristiwa antara |
EmployeeDemand
Menentukan jumlah karyawan yang diperlukan untuk memenuhi permintaan dalam interval DateTime yang ditentukan.
Representasi JSON |
---|
{ "startDateTime": { object ( |
Kolom | |
---|---|
startDateTime |
Awal interval waktu untuk permintaan tertentu (inklusif). Nilai-nilai ini dibaca hingga menit; detik dan semua satuan yang lebih kecil akan diabaikan. |
endDateTime |
Akhir interval waktu untuk permintaan tertentu (eksklusif). Nilai-nilai ini dibaca hingga menit; detik dan semua satuan yang lebih kecil akan diabaikan. |
employeeCount |
Jumlah karyawan yang diperlukan untuk memenuhi permintaan untuk interval ini. |
ShiftGenerationSolutionStatus
Status solusi yang diberikan sebagai respons pemecah masalah.
Enum | |
---|---|
SHIFT_GENERATION_SOLUTION_STATUS_UNSPECIFIED |
Status respons belum ditentukan. |
SHIFT_GENERATION_SOLVED |
Pemecah masalah menemukan solusi dalam batas waktu yang diberikan. |
SHIFT_GENERATION_NOT_SOLVED |
Masalah mencegah pemecah masalah membuat shift. |
SHIFT_GENERATION_NOT_SOLVED_DEADLINE_EXCEEDED |
Penyesuaian tidak dapat dilakukan untuk mencakup permintaan dalam batas waktu yang ditentukan. |
EmployeeSchedule
Daftar shift yang diurutkan sesuai dengan satu ShiftTemplate
yang akan ditetapkan ke sejumlah karyawan.
Representasi JSON |
---|
{
"shiftTemplateId": string,
"shifts": [
{
object ( |
Kolom | |
---|---|
shiftTemplateId |
ID template yang digunakan untuk membuat kumpulan shift ini. |
shifts[] |
Daftar shift dengan |
employeeCount |
Jumlah karyawan yang harus ditugaskan pada serangkaian shift ini untuk memenuhi permintaan. |
ShiftWithEvents
Menentukan tanggal mulai dan akhir beserta daftar peristiwa tetap dari pergeseran yang dihasilkan oleh pemecah masalah.
Representasi JSON |
---|
{ "startDateTime": { object ( |
Kolom | |
---|---|
startDateTime |
Tanggal dan waktu mulai shift. Nilai ini ditentukan hingga menit; detik dan satuan yang lebih kecil tidak diberikan. |
endDateTime |
Tanggal dan waktu berakhir shift. Nilai ini ditentukan hingga menit; detik dan satuan yang lebih kecil tidak diberikan. |
events[] |
Daftar peristiwa yang disertakan dalam pergeseran ini, dipetakan persis ke, dan dalam urutan yang sama dengan, |
Acara
Menentukan DateTime mulai dan berakhir dari peristiwa tertentu dalam pergeseran yang dihasilkan oleh pemecah.
Representasi JSON |
---|
{ "eventTemplateId": string, "startDateTime": { object ( |
Kolom | |
---|---|
eventTemplateId |
ID template yang digunakan untuk membuat peristiwa ini. |
startDateTime |
Tanggal dan waktu mulai acara. Nilai ini ditentukan hingga menit; detik dan satuan yang lebih kecil tidak diberikan. |
endDateTime |
Tanggal dan waktu berakhir acara. Nilai ini ditentukan hingga menit; detik dan satuan yang lebih kecil tidak diberikan. |
DemandCoverageViolation
Menentukan pelanggaran cakupan permintaan untuk interval yang ditentukan. Permintaan karyawan sama di seluruh interval yang ditentukan.
Representasi JSON |
---|
{ "startDateTime": { object ( |
Kolom | |
---|---|
startDateTime |
Tanggal dan waktu mulai interval permintaan (inklusif). Nilai ini ditentukan hingga menit. |
endDateTime |
Tanggal dan waktu berakhir interval permintaan (eksklusif). Nilai ini ditentukan hingga menit. |
coverageViolation |
Pelanggaran cakupan selama interval yang ditentukan. Nilai positif menunjukkan bahwa permintaan terlampau banyak, dan nilai negatif menunjukkan bahwa permintaan terselubung. |