Package google.research.optimization.v1.workforce

Indeks

Istirahat

Periode waktu di mana karyawan menginterupsi pekerjaannya selama {i>shift<i}.

Kolom
start_date_time

DateTime

Waktu mulai istirahat.

duration_minutes

int32

Durasi istirahat dalam menit.

BreakRule

Aturan yang menentukan kapan jeda dapat dimulai dalam sebuah shift dan durasinya. Daftar semua kemungkinan jeda yang dipertimbangkan ditentukan dengan kelipatan rule_increment_minutes. Misalnya, jika aturan jeda membuat model jeda 30 menit yang dapat dimulai antara pukul 10.00 dan 11.00, serta penambahan aturan adalah 20 menit, daftar jeda yang dipertimbangkan adalah: [10:00, 10:30], [10:20, 10:50], [10:40, 11:1], [10:40, 11:1]

Kolom
earliest_start_time

DateTime

Waktu mulai paling awal dari jeda (inklusif). Hanya hours dan minutes yang dapat ditetapkan.

latest_start_time

DateTime

Waktu mulai terbaru waktu istirahat (inklusif). Hanya hours dan minutes yang dapat ditetapkan.

duration_minutes

int32

Durasi istirahat dalam menit.

rule_increment_minutes

int32

[Opsional] Penambahan waktu dalam menit untuk semua jeda yang dapat dipertimbangkan dalam aturan jeda ini. Jika tidak disetel, setelan defaultnya adalah duration_minutes.

BudgetRequirement

Persyaratan anggaran untuk interval tertentu.

Kolom
total_budget

double

Total anggaran untuk interval yang ditentukan. Total anggaran harus diberikan jika prioritasnya adalah PRIORITY_MANDATORY.

Jika total_budget tidak ditetapkan, total biaya jadwal diminimalkan sesuai dengan priority yang ditentukan. Misalnya, jika priority untuk anggaran adalah PRIORITY_MEDIUM, pemecah masalah akan meminimalkan biaya sebelum mengurangi pelanggaran batasan dengan prioritas PRIORITY_LOW.

start_date_time

DateTime

Waktu mulai saat anggaran ini berlaku. Jika waktu mulai tidak ditentukan, waktu mulai akan ditetapkan menjadi waktu mulai paling awal dari semua shift yang ditentukan.

end_date_time

DateTime

Waktu berakhir saat anggaran ini berlaku. Jika waktu berakhir tidak ditentukan, waktu berakhir yang paling akhir dari semua shift yang ditentukan akan ditetapkan.

priority

Priority

Tingkat prioritas untuk memenuhi persyaratan anggaran selama jangka waktu yang ditentukan. Prioritas defaultnya adalah PRIORITY_LOW. Jika prioritas disetel ke PRIORITY_MANDATORY, total_budget harus disetel.

Perhatikan bahwa jika prioritas ini lebih tinggi daripada prioritas batasan lainnya dan jika total_budget ketat, jadwal yang dihasilkan dapat secara signifikan melanggar batasan karyawan atau persyaratan cakupan.

CoverageRequirement

Persyaratan cakupan menentukan jumlah karyawan yang dibutuhkan untuk serangkaian peran dan/atau keterampilan selama jangka waktu tertentu dan di lokasi tertentu. Interval DateTime di lokasi tertentu tidak boleh tumpang-tindih. Sebagai alternatif, daftar ID shift dapat diberikan, sebagai ganti jangka waktu dan lokasi. Hanya karyawan yang dapat ditugaskan pada peran tertentu (atau yang memiliki keahlian tertentu) yang dapat memenuhi persyaratan ini.

Untuk peran dan/atau keahlian tertentu, persyaratan cakupan terpenuhi jika ada setidaknya target_employee_count jumlah karyawan bekerja setiap saat dalam jangka waktu tersebut (atau untuk setiap shift di shift_ids). Sebaliknya, persyaratan cakupan dilanggar jika suatu saat dalam jangka waktu tersebut (atau untuk shift mana pun di shift_ids), jumlah karyawan yang bekerja selama jangka waktu tersebut kurang dari target_employee_count. Jumlah karyawan yang bekerja lebih banyak daripada target_employee_count masih dapat memenuhi persyaratan ini, tetapi penambahan staf yang berlebihan dapat dikurangi oleh pemecah masalah.

Kolom
start_date_time

DateTime

Waktu mulai untuk persyaratan cakupan (inklusif). Jika ditetapkan, shift_ids harus kosong.

end_date_time

DateTime

Waktu berakhir untuk persyaratan cakupan (eksklusif). Jika ditetapkan, shift_ids harus kosong.

location_id

string

Lokasi di mana karyawan dibutuhkan. shift_ids tidak kosong, kolom ini harus kosong.

shift_ids[]

string

Jika ditetapkan, persyaratan peran dan keterampilan akan diterapkan satu per satu untuk setiap ID shift dalam daftar ini. Jika shift_id tidak kosong, start_date_time, end_date_time, dan location_id harus kosong.

role_requirements[]

RoleRequirement

Jumlah karyawan wajib yang akan ditetapkan pada peran yang ditentukan selama jangka waktu tersebut. Maksimal satu role_requirement harus diberikan untuk setiap ID peran. Tingkat prioritas default untuk setiap persyaratan adalah PRIORITY_MANDATORY. Batasan ini dilanggar jika jumlah karyawan yang ditetapkan ke peran yang ditentukan kurang dari target_employee_count kapan saja selama jangka waktu tersebut.

skill_requirements[]

SkillRequirement

Jumlah karyawan yang dibutuhkan dengan keterampilan tertentu yang ditugaskan untuk shift selama jangka waktu tertentu. Maksimal satu skill_requirement harus diberikan untuk setiap ID keterampilan. Tingkat prioritas default untuk setiap persyaratan adalah PRIORITY_LOW. Batasan ini dilanggar jika jumlah karyawan yang memiliki keterampilan yang diberikan kurang dari target_employee_count pada satu waktu selama jangka waktu tertentu.

RoleRequirement

Jumlah karyawan yang harus ditetapkan pada peran yang ditentukan selama jangka waktu tersebut.

Kolom
role_id

string

ID Peran untuk persyaratan.

target_employee_count

int32

Jumlah karyawan yang diinginkan yang ditugaskan untuk peran tersebut selama jangka waktu.

priority

Priority

Tingkat prioritas untuk batasan persyaratan ini. Prioritas default untuk semua batasan resource adalah PRIORITY_MANDATORY.

SkillRequirement

Jumlah karyawan yang bekerja selama periode waktu tersebut dan memiliki keahlian tertentu.

Kolom
skill_id

string

ID keterampilan untuk persyaratan.

target_employee_count

int32

Jumlah karyawan yang diinginkan dengan keterampilan tertentu yang bekerja selama jangka waktu tertentu.

priority

Priority

Tingkat prioritas untuk batasan persyaratan ini. Prioritas default untuk semua batasan resource adalah PRIORITY_LOW.

DemandCoverageViolation

Menentukan pelanggaran cakupan permintaan untuk interval yang ditentukan. Permintaan karyawan sama di seluruh interval yang ditentukan.

Kolom
start_date_time

DateTime

Tanggal dan waktu mulai interval permintaan (inklusif). Nilai ini ditentukan hingga menit.

end_date_time

DateTime

Tanggal dan waktu berakhir interval permintaan (eksklusif). Nilai ini ditentukan hingga menit.

coverage_violation

int32

Pelanggaran cakupan selama interval yang ditentukan. Nilai positif menunjukkan bahwa permintaan terlampau banyak, dan nilai negatif menunjukkan bahwa permintaan terselubung.

Karyawan

Seorang karyawan dari tenaga kerja yang akan dijadwalkan.

Kolom
id

string

ID unik yang ditetapkan untuk karyawan ini.

role_ids[]

string

ID peran yang dapat dijalankan karyawan ini. Setidaknya harus ada satu peran yang ditetapkan. Saat karyawan ditugaskan ke shift, mereka juga diberi satu peran dari daftar ini. Karyawan tersebut dapat diberi peran yang berbeda selama periode penjadwalan.

skill_ids[]

string

ID keterampilan yang dimiliki karyawan ini. Daftar ini boleh kosong. Ketika seorang karyawan ditugaskan ke shift, mereka menggunakan keterampilan apa pun yang tercantum di sini untuk membahas persyaratan keterampilan selama durasi shift yang ditugaskan.

shift_preferences[]

ShiftPreference

Shift preferensi karyawan ini. Shift yang ditentukan di sini mewakili shift yang ingin ditugaskan kepada karyawan selama periode penjadwalan. ID perubahan yang ditentukan di shift_preferences harus unik. Pemecah masalah akan mencoba memaksimalkan jumlah nilai ShiftPreference.preference pada semua shift_preferences yang terpenuhi.

scheduling_constraints[]

SchedulingConstraint

Daftar batasan penjadwalan untuk karyawan ini. Tingkat prioritas default untuk setiap batasan ini adalah PRIORITY_MEDIUM. Lihat enum Priority untuk detail selengkapnya.

resource_constraints[]

ResourceConstraint

Batasan penjadwalan tambahan yang tidak ditentukan di scheduling_constraints dapat ditambahkan di sini ke resource_constraints. ResourceConstraint adalah representasi yang lebih abstrak untuk membatasi resource bagi karyawan. Tingkat prioritas default untuk setiap batasan ini adalah PRIORITY_MEDIUM. Lihat enum Priority untuk detail selengkapnya.

shift_requests[]

ShiftRequest

Daftar permintaan shift untuk karyawan tersebut. Permintaan bisa berupa karyawan yang ditugaskan atau tidak untuk shift tertentu. Setiap tugas penjadwalan tetap untuk karyawan tersebut dapat ditampilkan dengan ShiftRequest dengan prioritas PRIORITY_MANDATORY. ID shift dapat muncul di maksimal satu permintaan penjadwalan untuk karyawan ini. Tingkat prioritas default untuk setiap permintaan ini adalah PRIORITY_LOW. Lihat enum Priority untuk detail selengkapnya.

hourly_contract

HourlyContract

Kontrak yang menetapkan tarif per jam reguler dan lembur untuk karyawan.

EmployeeDemand

Menentukan jumlah karyawan yang diperlukan untuk memenuhi permintaan dalam interval DateTime yang ditentukan.

Kolom
start_date_time

DateTime

Awal interval waktu untuk permintaan tertentu (inklusif). Nilai ini dibaca hingga menit; detik dan semua unit yang lebih kecil akan diabaikan.

end_date_time

DateTime

Akhir interval waktu untuk permintaan tertentu (eksklusif). Nilai ini dibaca hingga menit; detik dan semua unit yang lebih kecil akan diabaikan.

employee_count

int32

Jumlah karyawan yang diperlukan untuk memenuhi permintaan untuk interval ini.

EmployeeSchedule

Daftar shift yang diurutkan sesuai dengan satu ShiftTemplate yang akan ditetapkan ke sejumlah karyawan.

Kolom
shift_template_id

string

ID template yang digunakan untuk membuat kumpulan shift ini.

shifts[]

ShiftWithEvents

Daftar shift dengan employee_count karyawan yang ditugaskan. Pergeseran dan acara yang dipilih untuk jadwal dibuat dari satu template. Pergeseran diurutkan secara kronologis dan tidak tumpang tindih. Jika SolverConfig.multi_day_schedule bernilai benar, hari libur direpresentasikan secara implisit dengan tidak adanya shift yang dimulai pada hari itu.

employee_count

int32

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.

Kolom
start_date_time

DateTime

Tanggal dan waktu mulai shift. Nilai ini ditentukan hingga menit; detik dan satuan yang lebih kecil tidak diberikan.

end_date_time

DateTime

Tanggal dan waktu berakhir shift. Nilai ini ditentukan hingga menit; detik dan satuan yang lebih kecil tidak diberikan.

events[]

Event

Daftar peristiwa yang disertakan dalam pergeseran ini, dipetakan persis ke, dan dalam urutan yang sama dengan, ShiftTemplate.Event. Jika SolverConfig.shift_events_can_change bernilai benar, waktu mulai dan berakhir acara dapat bervariasi di seluruh ShiftWithEvents dalam jadwal ini.

Acara

Menentukan DateTime mulai dan berakhir dari peristiwa tertentu dalam pergeseran yang dihasilkan oleh pemecah.

Kolom
event_template_id

string

ID template yang digunakan untuk membuat peristiwa ini.

start_date_time

DateTime

Tanggal dan waktu mulai acara. Nilai ini ditentukan hingga menit; detik dan satuan yang lebih kecil tidak diberikan.

end_date_time

DateTime

Tanggal dan waktu berakhir acara. Nilai ini ditentukan hingga menit; detik dan satuan yang lebih kecil tidak diberikan.

EventTemplate

Template yang menentukan aturan untuk menghasilkan satu peristiwa yang terjadi selama shift. Acara dapat mewakili pertemuan, istirahat, makan siang, dll.

Kolom
id

string

ID unik template ini.

minimum_minutes_after_shift_start

int32

Jumlah menit minimum setelah awal shift agar peristiwa ini dapat dimulai.

maximum_minutes_after_shift_start

int32

Jumlah menit maksimum setelah awal shift untuk memulai peristiwa ini.

duration_minutes

int32

Durasi tetap dalam menit peristiwa ini.

start_time_increment_minutes

int32

Penambahan waktu (dalam menit) yang digunakan untuk menghasilkan kumpulan kemungkinan waktu mulai peristiwa antara minimum_minutes_after_shift_start dan maximum_minutes_after_shift_start. Misalnya, jika menit minimum setelah shift dimulai adalah 30, menit maksimum setelah shift dimulai adalah 45, dan penambahan waktu mulai adalah 5 menit, peristiwa dapat berlangsung 30, 35, 40, atau 45 menit setelah pergeseran dimulai.

HourlyContract

Menentukan tarif dasar per jam, diferensial tarif, dan pengganda waktu lembur guna menentukan kompensasi untuk satu karyawan. Perlu diperhatikan bahwa peraturan di tempat yang berbeda mungkin memerlukan komputasi kompensasi lembur yang berbeda. Pemecah masalah memperkirakan kompensasi lembur untuk meminimalkan proxy dari total biaya atau memenuhi anggaran (lihat BudgetRequirement). Pemecah masalah ini tidak dimaksudkan sebagai alat untuk menghitung penggajian.

Kolom
base_hourly_rate

double

Kompensasi untuk bekerja di luar jam lembur. Jika karyawan memiliki beberapa tarif, perbedaan tarif akan diterapkan relatif terhadap tarif per jam dasar ini. Selain itu, jika ada beberapa tarif, tarif per jam dasar harus merupakan nilai minimum dari tarif tersebut.

hourly_rate_shift_differentials

map<string, double>

Perbedaan tarif per jam, dibayar berdasarkan base_hourly_rate. Misalnya, jika tarif per jam dasar adalah $30/jam, "shift_1" dibayar dengan tarif $40/jam dan, "shift_2" dibayar dengan tarif $45/jam, maka representasi protonya adalah: base_hourly_rate: 30 hourly_rate_shift_differentials {key: "shift_1" value: 10} hourly_rate_shift_differentials {key: "shift_2" value: 15}.

overtime_periods[]

OvertimePeriod

Daftar semua periode yang memerlukan penghitungan lembur. Periode ini tidak boleh tumpang-tindih.

OvertimePeriod

Periode tetap dan berulang yang teratur (biasanya 168 jam atau tujuh periode 24 jam berturut-turut) yang digunakan untuk menentukan jumlah kompensasi lembur. Setiap periode memiliki pengganda waktu tambahan (mis., 1.5) relatif terhadap base_hourly_rate dan batas jumlah jam yang dianggap sebagai pekerjaan reguler (non-lembur). Setiap perubahan yang tumpang-tindih dengan jangka waktu start_date_time (inklusif) dan end_date_time (eksklusif) akan dihitung sebagai total jumlah jam kerja dalam periode tersebut. Jika tumpang tindih sebagian, hanya jam yang tumpang tindih yang akan dihitung.

Kolom
overtime_multiplier

double

Pengganda untuk menghitung tarif per jam lembur (harus lebih besar atau sama dengan 1,0). Tarif per jam lembur biasanya akan dihitung sebagai base_hourly_rate * overtime_multiplier. Jika ada beberapa tarif yang diberikan melalui hourly_rate_shift_differentials, pemecah masalah memperkirakan tarif lembur per jam dengan rata-rata sederhana dari tarif yang berlaku selama periode lembur. Catatan: peraturan di tempat yang berbeda mungkin memerlukan komputasi kompensasi lembur yang berbeda. Pemecah masalah memperkirakan kompensasi lembur untuk meminimalkan proxy dari total biaya atau memenuhi anggaran, tetapi tidak dimaksudkan sebagai alat untuk menghitung penggajian.

start_date_time

DateTime

Waktu mulai untuk periode perpanjangan waktu. Jika shift tumpang-tindih pada waktu ini, jam shift tersebut akan dihitung dari start_date_time.

end_date_time

DateTime

Waktu berakhir untuk periode perpanjangan waktu. Jika shift tumpang-tindih pada waktu ini, jam shift tersebut akan dihitung hingga end_date_time.

maximum_regular_hours

double

Jumlah maksimum jam kerja yang dibayar dengan tarif reguler (bukan lembur). Jumlah ini harus positif.

Prioritas

Tingkat prioritas untuk kendala apa pun pada jadwal karyawan atau persyaratan cakupan. Ini termasuk SchedulingConstraint, ResourceConstraint, ShiftRequest, dan CoverageRequirement. Karena bisa saja ada batasan yang bertentangan, setiap batasan tidak selalu dapat dipenuhi. Dengan demikian, setiap jenis batasan memiliki prioritas (diberikan oleh pengguna atau default) yang memberi tahu pemecah masalah tentang kepentingan relatif semua batasan yang diberikan ke jadwal yang lengkap.

Enum
PRIORITY_UNSPECIFIED Tingkat prioritas tidak diketahui.
PRIORITY_LOW Tingkat prioritas terendah. Batasan dengan prioritas ini tidak terlalu penting dibandingkan batasan lainnya. Mereka adalah pihak pertama yang dipertimbangkan untuk melakukan pelanggaran jika solusi yang layak tidak dapat ditemukan.
PRIORITY_MEDIUM Tingkat prioritas sedang. Batasan dengan prioritas ini lebih penting daripada batasan dengan prioritas PRIORITY_LOW, tetapi kurang penting dibandingkan batasan dengan prioritas PRIORITY_HIGH. Jika solusi yang layak tidak dapat ditemukan setelah melonggarkan semua batasan dengan prioritas PRIORITY_LOW, batasan prioritas PRIORITY_MEDIUM akan dianggap berikutnya untuk pelanggaran.
PRIORITY_HIGH Tingkat prioritas tertinggi. Batasan dengan tingkat prioritas ini adalah yang paling penting. Solusi ini adalah solusi terakhir yang dipertimbangkan untuk pelanggaran jika solusi yang layak tidak dapat ditemukan setelah melonggarkan batasan dari tingkat prioritas yang lebih rendah.
PRIORITY_MANDATORY Tingkat prioritas yang mewakili sesuatu yang tidak dapat dilanggar oleh pemecah masalah. Jika pemecah masalah menampilkan SolutionStatus.INFEASIBLE, itu mungkin karena terlalu banyak batasan PRIORITY_MANDATORY.

ResourceConstraint

Batasan umum yang membatasi jumlah "resource" tertentu yang digunakan oleh seorang karyawan. Ini adalah versi abstrak dari SchedulingConstraint yang lebih spesifik yang lebih fleksibel bagi pengguna. Banyak batasan penjadwalan yang tidak dapat ditentukan di SchedulingConstraint.type dapat ditentukan menggunakan pesan ini.

Kolom
priority

Priority

Tingkat prioritas batasan resource ini. Prioritas default untuk semua batasan resource adalah PRIORITY_MEDIUM.

resource_usages

map<string, double>

Jumlah sumber daya yang digunakan oleh shift. Misalnya, jika batasan ini berlaku untuk jam kerja minimum dan maksimum seorang karyawan dalam minggu tertentu, peta ini akan berisi pergeseran yang terjadi pada minggu tersebut dan lamanya setiap shift dalam jam.

minimum_resource_usage

double

Penggunaan resource minimum untuk batasan resource yang harus dipenuhi.

maximum_resource_usage

double

Penggunaan resource maksimum untuk batasan resource yang harus dipenuhi.

SchedulingConstraint

Batasan penjadwalan khusus untuk karyawan tertentu. Batasan yang ditentukan hanya diterapkan selama interval yang diberikan [start_date_time, end_date_time).

Kolom
priority

Priority

Tingkat prioritas untuk batasan penjadwalan ini. Prioritas default untuk semua batasan penjadwalan adalah PRIORITY_MEDIUM.

start_date_time

DateTime

Waktu mulai saat batasan penjadwalan ini berlaku (inklusif).

end_date_time

DateTime

Waktu berakhir saat batasan penjadwalan ini berlaku (eksklusif).

Kolom union type. Jenis batasan yang ditentukan. Setiap batasan hanya diterapkan dalam jangka waktu yang ditentukan di atas. type hanya ada berupa salah satu diantara berikut:
minimum_minutes

int32

Jumlah menit minimum yang dapat digunakan karyawan untuk bekerja. Jika karyawan ditugaskan ke shift yang tumpang tindih (seluruh atau sebagian) periode waktu tersebut, jumlah menit shift tumpang tindih dengan periode waktu tersebut akan dimasukkan dalam hitungan ini.

maximum_minutes

int32

Jumlah menit maksimum karyawan dapat bekerja dalam jangka waktu tersebut. Jika karyawan ditugaskan ke shift yang tumpang tindih (seluruh atau sebagian) periode waktu tersebut, jumlah menit shift tumpang tindih dengan periode waktu tersebut akan dimasukkan dalam hitungan ini.

minimum_consecutive_work_days

int32

Jumlah hari minimum berturut-turut karyawan dapat bekerja. Seorang karyawan bekerja pada hari tertentu jika mereka ditugaskan pada shift yang dimulai pada hari itu. Setiap shift yang ditugaskan kepada karyawan yang dimulai dalam jangka waktu ini termasuk dalam jumlah ini.

maximum_consecutive_work_days

int32

Jumlah maksimum hari berturut-turut karyawan dapat bekerja. Seorang karyawan bekerja pada hari tertentu jika mereka ditugaskan pada shift yang dimulai pada hari itu. Setiap shift yang ditugaskan kepada karyawan yang dimulai dalam jangka waktu ini termasuk dalam jumlah ini.

minimum_shift_count

int32

Jumlah minimum shift yang dapat dilakukan karyawan. Setiap shift yang ditugaskan kepada karyawan yang sepenuhnya tumpang-tindih dengan jangka waktu tersebut termasuk dalam jumlah ini.

maximum_shift_count

int32

Jumlah maksimum shift yang dapat dilakukan karyawan. Setiap shift yang ditugaskan kepada karyawan yang sepenuhnya tumpang-tindih dengan jangka waktu tersebut termasuk dalam jumlah ini.

minimum_rest_minutes

int32

Jumlah menit minimum karyawan harus beristirahat setelah satu shift berakhir sebelum ditugaskan ke shift lain. Batasan ini berlaku untuk setiap pasangan shift yang tercakup sepenuhnya dalam [start_date_time, end_date_time].

Shift

Shift menentukan jangka waktu tetap di mana karyawan dapat bekerja.

Kolom
id

string

ID unik yang ditetapkan untuk peralihan ini.

location_id

string

ID lokasi tempat perubahan ini dilakukan. Daftar ini boleh kosong.

start_date_time

DateTime

Waktu mulai shift (inklusif).

end_date_time

DateTime

Waktu berakhir shift (eksklusif). Saat ini, pemecah masalah hanya mengizinkan shift yang berdurasi kurang dari 24 jam.

break_rules[]

BreakRule

Daftar aturan jeda yang terjadi selama shift. Karyawan yang melakukan shift ini diberi waktu istirahat per break_rule, dan selama periode tersebut mereka tidak memenuhi permintaan untuk peran yang mereka penuhi. Setiap periode waktu BreakRule harus disertakan sepenuhnya dalam jangka waktu shift ini.

ShiftAssignment

Seorang karyawan untuk penugasan shift.

Kolom
employee_id

string

ID karyawan yang ditugaskan.

shift_id

string

ID Shift yang ditetapkan kepada karyawan.

role_id

string

ID peran yang ditugaskan kepada karyawan untuk shift tersebut.

breaks[]

Break

Daftar waktu istirahat untuk penugasan shift 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.

ShiftPreference

Preferensi numerik untuk ID pergeseran tertentu.

Kolom
shift_id

string

ID Shift yang preferensinya ditetapkan.

preference

int32

Nilai preferensi yang lebih besar menunjukkan pergeseran yang lebih diinginkan.

ShiftRequest

Permintaan karyawan untuk ditugaskan atau tidak ditugaskan ke shift tertentu.

Kolom
priority

Priority

Tingkat prioritas permintaan penjadwalan ini. Prioritas default untuk semua permintaan penjadwalan adalah PRIORITY_LOW.

shift_ids[]

string

ID shift permintaan penjadwalan.

type

WorkStatus

Jenis permintaan, misalnya, apakah permintaan ditugaskan atau tidak ditetapkan ke kumpulan shift.

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.

Kolom
id

string

ID unik template ini.

earliest_start_time

TimeOfDay

Waktu paling awal dalam sehari saat shift dapat dimulai. Nilai ini ditetapkan dengan jam dan menit; detik dan nano akan diabaikan.

latest_start_time

TimeOfDay

Waktu terakhir pada hari saat shift dapat dimulai. Nilai ini ditetapkan dengan jam dan menit; detik dan nano akan diabaikan. Jika nilai ini kurang dari earliest_start_time, pergeseran yang dihasilkan oleh template ini dapat dimulai sebelum atau setelah tengah malam.

duration_minutes

int32

Durasi tetap untuk pergeseran yang dihasilkan oleh template ini.

start_time_increment_minutes

int32

Penambahan waktu (dalam menit) yang digunakan untuk menghasilkan kumpulan kemungkinan waktu mulai antara earliest_start_time dan latest_start_time. Misalnya, jika waktu mulai paling awal adalah 8.00, waktu mulai terbaru adalah 8.30, dan penambahan waktu mulai adalah 10 menit, maka semua kemungkinan waktu mulai untuk template shift ini adalah: 8:00, 8:10, 8:20, dan 8:30.

days_off_count_per_week

int32

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.

event_templates[]

EventTemplate

Aturan untuk menghasilkan peristiwa untuk setiap shift. Tepat satu peristiwa akan disertakan dalam setiap shift untuk setiap Peristiwa yang ditentukan.

minimum_interevent_gap_minutes

int32

Menit minimum antara akhir satu peristiwa dan awal peristiwa berikutnya.

maximum_employee_count

int32

Jumlah maksimum karyawan yang dapat ditetapkan ke semua shift yang dihasilkan oleh template ini.

SolutionStatus

Status solusi (yaitu, jadwal) yang diberikan sebagai respons pemecah masalah.

Enum
SOLUTION_STATUS_UNSPECIFIED Status respons belum ditentukan.
FEASIBLE Jadwal yang dikembalikan layak, tetapi mungkin tidak optimal.
OPTIMAL Jadwal yang dikembalikan optimal.
INFEASIBLE Tidak ada jadwal yang valid untuk batasan yang diberikan. Pemecah masalah dapat menampilkan nilai ini jika subset batasan dengan tingkat prioritas PRIORITY_MANDATORY tidak dapat dipenuhi.
NOT_SOLVED Jadwal tidak ditemukan.
NOT_SOLVED_DEADLINE_EXCEEDED Tidak ada jadwal yang ditemukan dalam batas waktu yang ditentukan.

SolveParameters

Parameter yang mengontrol satu pemecahan masalah penjadwalan shift.

Kolom
time_limit

Duration

Waktu maksimum yang harus dihabiskan oleh pemecah masalah untuk menyelesaikan soal. Jika tidak disetel, setelan defaultnya adalah 1 menit.

Nilai ini bukan batas pasti dan tidak memperhitungkan overhead komunikasi. Latensi yang diharapkan untuk menyelesaikan masalah mungkin sedikit lebih besar daripada nilai ini.

SolverConfig

Menetapkan parameter tambahan untuk menyelesaikan masalah Pembuatan Shift.

Kolom
time_limit

Duration

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 ShiftTemplates, masing-masing dengan ~20 kemungkinan waktu mulai dan mengadakan 2 acara dengan ~30 kemungkinan waktu mulai, dan dua hari libur per minggu, nilai yang direkomendasikan adalah: <10 detik untuk solusi cepat (dan kemungkinan kurang optimal), (10 detik, 300 detik) untuk solusi berkualitas baik, dan >300 detik untuk penelusuran yang menyeluruh. Instance yang lebih besar mungkin memerlukan batas waktu yang lebih lama.

Nilai ini bukan batas pasti dan tidak memperhitungkan overhead komunikasi. Latensi yang diharapkan untuk menyelesaikan masalah mungkin sedikit lebih besar daripada nilai ini.

multi_day_schedule

bool

Jika benar, pemecah masalah akan menghasilkan EmployeeSchedule yang menyertakan beberapa shift (mis., untuk membuat jadwal selama seminggu). Jika tidak, setiap EmployeeSchedule akan menyertakan tepat satu shift. Jadwal multi-hari mengasumsikan bahwa waktu mulai shift adalah sama di seluruh hari, dan jumlah hari libur dalam jadwal tersebut ditentukan oleh template shift. Defaultnya adalah false.

shift_events_can_change

bool

Jika benar, EmployeeSchedule selama beberapa hari dapat mencakup shift yang waktu mulai dan berakhir acaranya bervariasi di semua hari. Jika tidak, semua shift EmployeeSchedule tertentu harus memiliki waktu mulai dan waktu berakhir peristiwa yang sama. Dalam kedua kasus tersebut, semua shift pada jadwal yang berlangsung lebih dari satu hari memiliki waktu mulai dan waktu berakhir yang sama. Oleh karena itu, parameter ini diabaikan jika multi_day_schedule bernilai salah (false). Menetapkan parameter ini ke benar (true) dapat menyebabkan waktu penyelesaian yang lebih lama. Defaultnya adalah false.

WorkStatus

Apakah seorang karyawan bekerja atau tidak.

Enum
WORK_STATUS_UNSPECIFIED Status pekerjaan tidak diketahui.
STATUS_WORK Status mewakili karyawan yang bekerja.
STATUS_NOT_WORK Status mewakili karyawan yang tidak bekerja.