Package google.research.optimization.v1.workforce

Dizin

Ara

Bir çalışanın mesai süresince işine ara verdiği bir dönem.

Alanlar
start_date_time

DateTime

Aranın başlangıç zamanı.

duration_minutes

int32

Aranın dakika cinsinden süresi.

BreakRule

Bir vardiya dahilinde bir aranın ne zaman başlayabileceğini ve bu aranın süresini belirleyen kural. Dikkate alınan tüm olası araların listesi rule_increment_minutes'lik artışlarla belirlenir. Örneğin, bir ara kuralı 10:00 ile 11:00 arasında başlayabilecek 30 dakikalık bir arayı modelliyorsa ve kural artımı 20 dakikaysa dikkate alınacak aralar listesi şu şekildedir: [10:00, 10:30], [10:20, 10:50], [10:1:1, 1, 1,0:1, 1, 1,0:10, 1].

Alanlar
earliest_start_time

DateTime

Aranın en erken başlangıç zamanı (dahil). Yalnızca hours ve minutes ayarlanabilir.

latest_start_time

DateTime

Aranın en geç başlangıç zamanı (dahil). Yalnızca hours ve minutes ayarlanabilir.

duration_minutes

int32

Aranın dakika cinsinden süresi.

rule_increment_minutes

int32

[İsteğe bağlı] Bu ara kuralında dikkate alınabilecek tüm aralar için dakika cinsinden süre artımı. Ayarlanmazsa varsayılan olarak duration_minutes olur.

BudgetRequirement

Belirli bir aralık için bütçe gereksinimleri.

Alanlar
total_budget

double

Verilen aralık için toplam bütçe. Öncelik PRIORITY_MANDATORY ise toplam bütçe sağlanmalıdır.

total_budget ayarlanmazsa planlamanın toplam maliyeti, belirtilen priority değerine göre en aza indirilir. Örneğin, bütçenin priority değeri PRIORITY_MEDIUM ise çözücü, PRIORITY_LOW önceliğiyle kısıtlama ihlallerini azaltmadan önce maliyeti en aza indirir.

start_date_time

DateTime

Bu bütçenin geçerli olduğu başlangıç zamanı. Bir başlangıç zamanı belirtilmemişse, verilen tüm vardiyaların en erken başlangıç zamanı olarak ayarlanır.

end_date_time

DateTime

Bu bütçenin geçerli olduğu bitiş zamanı. Bir bitiş zamanı belirtilmezse belirlenen tüm vardiyaların en geç bitiş zamanı olarak ayarlanır.

priority

Priority

Belirtilen zaman aralığında bütçe koşulunu karşılamaya yönelik öncelik düzeyi. Varsayılan öncelik PRIORITY_LOW şeklindedir. Öncelik PRIORITY_MANDATORY olarak ayarlanırsa total_budget ayarlanmalıdır.

Bu öncelik diğer kısıtlama önceliklerinden daha yüksekse ve total_budget sıkışıksa, sonuçta ortaya çıkan zaman çizelgesi hem çalışan kısıtlamalarını hem de kapsam şartlarını önemli ölçüde ihlal edebilir.

CoverageRequirement

Kapsam şartı, belirli bir zaman dilimi süresince ve belli bir konumdaki bir dizi rol ve/veya beceri için gereken çalışan sayısını belirtir. Belirli bir konumdaki DateTime aralıkları çakışamaz. Alternatif olarak, zaman aralığı ve konum yerine değiştirme kimlikleri listesi sağlanabilir. Yalnızca belirli bir pozisyona atanabilen (veya belirli bir beceriye sahip olan) çalışanlar bu şartı karşılayabilir.

Belirli bir pozisyon ve/veya beceri için, kapsam şartı, belirli bir zaman aralığı içinde her an (veya shift_ids ayındaki her vardiyada) en az target_employee_count sayıda çalışan çalıştığında karşılanır. Bununla birlikte, ilgili zaman aralığındaki herhangi bir noktada (veya shift_ids ayındaki herhangi bir değişiklikte) çalışan sayısı target_employee_count değerinden azsa kapsam şartı ihlal edilir. Çalışan sayısı, target_employee_count olan kişiden daha fazla olduğunda da şartı karşılar ancak aşırı personel sayısı, çözücü tarafından en aza indirilir.

Alanlar
start_date_time

DateTime

Kapsam koşulu için başlangıç zamanı (dahil). Ayarlanırsa shift_ids boş olmalıdır.

end_date_time

DateTime

Kapsam şartının bitiş zamanı (hariç). Ayarlanırsa shift_ids boş olmalıdır.

location_id

string

Çalışanların gerekli olduğu konum. shift_ids alanı boş değildir, bu alan da boş olmalıdır.

shift_ids[]

string

Ayarlandığı takdirde rol ve beceri gereksinimleri bu listedeki her vardiya kimliğine ayrı ayrı uygulanır. Shift_id'ler boş değilse start_date_time, end_date_time ve location_id boş bırakılmalıdır.

role_requirements[]

RoleRequirement

İlgili zaman aralığı içinde, belirlenen rollere atanması gereken çalışan sayısı. Her rol kimliği için en fazla bir role_requirement sağlanmalıdır. Koşulların her biri için varsayılan öncelik düzeyi PRIORITY_MANDATORY şeklindedir. İlgili zaman aralığının herhangi bir noktasında belirtilen pozisyonlara target_employee_count taneden az çalışan atanırsa bu kısıtlamalar ihlal edilmiş olur.

skill_requirements[]

SkillRequirement

Belirtilen zaman aralığı içinde vardiyalara atanan, belirli becerilere sahip gerekli çalışan sayısı. Her beceri kimliği için en fazla bir skill_requirement sağlanmalıdır. Koşulların her biri için varsayılan öncelik düzeyi PRIORITY_LOW şeklindedir. İlgili zaman aralığının herhangi bir noktasında belirli becerilere sahip olan çalışan sayısı target_employee_count veya daha azsa bu kısıtlamalar ihlal edilmiş olur.

RoleRequirement

Belirtilen süre içinde belirli bir pozisyona atanacak çalışan sayısının zorunlu olması.

Alanlar
role_id

string

Koşulun rol kimliği.

target_employee_count

int32

Belirli bir zaman aralığında ilgili pozisyona atanan, istenen çalışan sayısı.

priority

Priority

Bu koşul kısıtlaması için öncelik düzeyidir. Tüm kaynak kısıtlamaları için varsayılan öncelik PRIORITY_MANDATORY şeklindedir.

SkillRequirement

Söz konusu zaman aralığı boyunca çalışan ve belirtilen becerilere sahip olan gerekli çalışan sayısı.

Alanlar
skill_id

string

Koşul için beceri kimliği.

target_employee_count

int32

Belirli bir beceriye sahip, istenen zaman aralığında çalışan, istenen sayıda çalışan.

priority

Priority

Bu koşul kısıtlaması için öncelik düzeyidir. Tüm kaynak kısıtlamaları için varsayılan öncelik PRIORITY_LOW şeklindedir.

DemandCoverageViolation

Belirtilen aralıktaki talep kapsamı ihlalini belirtir. Çalışan talebi, belirtilen aralığın tamamında aynıdır.

Alanlar
start_date_time

DateTime

Talep aralığının başlangıç tarihi ve saati (dahil). Bu değer dakikaya kadar belirtilir.

end_date_time

DateTime

Talep aralığının bitiş tarihi ve saati (hariç). Bu değer dakikaya kadar belirtilir.

coverage_violation

int32

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.

Çalışan

Planlanacak bir iş gücü çalışanı.

Alanlar
id

string

Bu çalışana atanan benzersiz kimlik.

role_ids[]

string

Bu çalışanın gerçekleştirebileceği rol kimlikleri. En az bir rol belirtilmelidir. Bir çalışan bir vardiyaya atandığında, kendisi de bu listedeki tek bir role atanır. Çalışan, planlama zaman aralığı boyunca farklı rollere atanabilir.

skill_ids[]

string

Bu çalışanın sahip olduğu beceri kimlikleri. Bu liste boş olabilir. Bir çalışan vardiyaya atandığında, burada listelenen becerilerin herhangi bir alt kümesini, atanan vardiya boyunca gereken beceri gereksinimlerini karşılamak için kullanır.

shift_preferences[]

ShiftPreference

Bu çalışanın tercihlerini değiştirin. Burada belirtilen vardiyalar, çalışanın zaman planlaması sırasında atanmayı tercih ettiği vardiyaları temsil eder. shift_preferences içinde belirtilen kaydırma kimlikleri benzersiz olmalıdır. Çözücü, ShiftPreference.preference değerlerinin toplamını, sağlanan tüm shift_preferences üzerinden en üst düzeye çıkarmaya çalışır.

scheduling_constraints[]

SchedulingConstraint

Bu çalışan için zaman çizelgesi kısıtlamaları listesi. Bu kısıtlamaların her biri için varsayılan öncelik düzeyi PRIORITY_MEDIUM şeklindedir. Daha fazla bilgi için Priority sıralamasına bakın.

resource_constraints[]

ResourceConstraint

scheduling_constraints politikasında belirtilmeyen ek planlama kısıtlamaları buradan resource_constraints öğesine eklenebilir. ResourceConstraint, bir çalışan için kaynakları kısıtlamayı daha soyut bir şekilde temsil eder. Bu kısıtlamaların her biri için varsayılan öncelik düzeyi PRIORITY_MEDIUM şeklindedir. Daha fazla bilgi için Priority sıralamasına bakın.

shift_requests[]

ShiftRequest

Çalışan için vardiya isteklerinin listesi. Talep, bir çalışanın belirli vardiyalara atanması veya atanmamış olmasıyla ilgili olabilir. Çalışana yönelik sabit zamanlama atamaları, PRIORITY_MANDATORY önceliğine sahip bir ShiftRequest ile temsil edilebilir. Vardiya kimliği, bu çalışana ait en fazla bir planlama isteğinde görünebilir. Bu isteklerin her biri için varsayılan öncelik düzeyi PRIORITY_LOW'tir. Daha fazla bilgi için Priority sıralamasına bakın.

hourly_contract

HourlyContract

Çalışanın normal ve fazla mesai saatlik ücretlerini belirten sözleşme.

EmployeeDemand

Belirtilen DateTime aralığında talebi karşılamak için gereken çalışan sayısını belirtir.

Alanlar
start_date_time

DateTime

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.

end_date_time

DateTime

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.

employee_count

int32

Bu aralıkla ilgili talebi karşılamak için gereken çalışan sayısı.

EmployeeSchedule

Birkaç çalışana atanacak tek bir ShiftTemplate'ye karşılık gelen sıralı vardiya listesi.

Alanlar
shift_template_id

string

Bu vardiya grubunu oluşturmak için kullanılan şablonun kimliği.

shifts[]

ShiftWithEvents

employee_count çalışanın atandığı vardiyaların listesi. Program için seçilen değişiklikler ve etkinlikler tek bir şablondan oluşturulmuştur. Değişimler kronolojik olarak sıralanır ve çakışmaz. SolverConfig.multi_day_schedule doğruysa, kapalı gün içinde o gün başlayan bir değişimin olmadığı anlamına gelir.

employee_count

int32

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.

Alanlar
start_date_time

DateTime

Vardiyanın başlangıç tarihi ve saati. Bu değer dakikaya kadar belirtilir. Saniye ve daha küçük birimler verilmez.

end_date_time

DateTime

Vardiyanın bitiş tarihi ve saati. Bu değer dakikaya kadar belirtilir. Saniye ve daha küçük birimler verilmez.

events[]

Event

Bu vardiyaya dahil edilen, ShiftTemplate.Event öğeleri ile tam olarak eşlenen ve bunlarla aynı sırada etkinliklerin listesi. SolverConfig.shift_events_can_change doğru ise etkinliklerin başlangıç ve bitiş zamanları bu programın ShiftWithEvents boyunca değişiklik gösterebilir.

Etkinlik

Çözücü tarafından oluşturulan bir vardiyadaki belirli bir etkinliğin başlangıç ve bitiş tarihini belirtir.

Alanlar
event_template_id

string

Bu etkinliği oluşturmak için kullanılan şablonun kimliği.

start_date_time

DateTime

Etkinliğin başlangıç tarihi ve saati. Bu değer dakikaya kadar belirtilir. Saniye ve daha küçük birimler verilmez.

end_date_time

DateTime

Etkinliğin bitiş tarihi ve saati. Bu değer dakikaya kadar belirtilir. Saniye ve daha küçük birimler verilmez.

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.

Alanlar
id

string

Bu şablonun benzersiz kimliği.

minimum_minutes_after_shift_start

int32

Bir vardiya başlangıcından sonra bu etkinliğin başlayabileceği minimum dakika sayısı.

maximum_minutes_after_shift_start

int32

Bir vardiya başlangıcından sonra bu etkinliğin başlayabileceği maksimum dakika sayısı.

duration_minutes

int32

Bu etkinliğin dakika cinsinden süresi sabitlendi.

start_time_increment_minutes

int32

minimum_minutes_after_shift_start ile maximum_minutes_after_shift_start arasındaki olası etkinlik başlangıç zamanlarını oluşturmak için kullanılan zaman artımı (dakika cinsinden). Örneğin, vardiya başlangıcından sonraki minimum dakika 30, vardiya başlangıcından sonraki maksimum dakika 45 ve başlangıç zamanı artımı 5 dakikaysa etkinlik, vardiya başladıktan 30, 35, 40 veya 45 dakika sonra gerçekleşebilir.

HourlyContract

Bir çalışana ödenecek ücreti belirlemek için taban saatlik ücreti, ücret farklarını ve fazla mesai çarpanlarını belirtir. Farklı yerlerdeki düzenlemelerde, fazla mesai ücretinin farklı şekilde hesaplanması gerekebilir. Çözme aracı, toplam maliyetin bir proxy'sini en aza indirmek veya bütçeyi karşılamak için fazla mesai ücretini tahmin eder (bkz. BudgetRequirement). Maaşları hesaplamak için bir araç olarak tasarlanmamıştır.

Alanlar
base_hourly_rate

double

Fazla mesai dışında bir saat çalışmanın ücreti. Çalışan için birden fazla ücret geçerliyse bu taban saatlik ücrete göre ücret farkı uygulanır. Ayrıca, birden fazla ücret varsa taban saatlik ücret bu ücretlerin minimum değeri olmalıdır.

hourly_rate_shift_differentials

map<string, double>

base_hourly_rate üzerine ödenen saatlik ücret farkı. Örneğin, taban saatlik ücret 30 ABD doları/saat, "shift_1" saatlik ücreti 40 ABD doları ve "shift_2" için 45 ABD doları ödeme yapılıyorsa proto gösterimi şu şekildedir: 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

Fazla mesai sayısının hesaplanması gereken tüm dönemlerin listesi. Bu dönemler çakışmamalıdır.

OvertimePeriod

Fazla mesai ücretinin belirlenmesinde kullanılan sabit ve düzenli olarak yinelenen bir süre (genellikle 168 saat veya art arda 24 saatlik yedi dönem). Her dönemin bir fazla mesai çarpanı vardır (ör. 1.5) base_hourly_rate ile göreli (uzun süreli olmayan) çalışma olarak kabul edilen saat sayısına ilişkin bir sınırlama ile birlikte. start_date_time (dahil) ve end_date_time (hariç) zaman aralığıyla çakışan tüm değişimler, söz konusu dönemde çalışılan toplam saat sayısına dahil edilir. Çakışma kısmiyse yalnızca çakışan saatler sayılır.

Alanlar
overtime_multiplier

double

Fazla mesai saatlik ücreti hesaplamak için kullanılan çarpan (1,0'dan büyük veya eşit olmalıdır). Fazla mesai saatlik ücreti genellikle base_hourly_rate * overtime_multiplier olarak hesaplanır. hourly_rate_shift_differentials üzerinden birden fazla oran sağlanırsa çözücü, fazla mesai süresince geçerli olan ücretlerin basit bir ortalamasını kullanarak fazla mesai saatlik ücreti tahmin eder. Not: Farklı yerlerdeki düzenlemelerde, fazla mesai ücretinin farklı şekilde hesaplanması gerekebilir. Çözme aracı, fazla mesai tazminatını ya toplam maliyetin bir proxy'sini en aza indirmek ya da bütçeyi karşılamak için tahmin eder, ancak maaşları hesaplamak için bir araç olarak tasarlanmamıştır.

start_date_time

DateTime

Uzatma süresinin başlangıç zamanı. Bu saatteki bir değişim çakışıyorsa söz konusu değişimin bulunduğu saatler start_date_time tarihinden itibaren sayılır.

end_date_time

DateTime

Uzatma süresinin bitiş zamanı. Bu saatteki bir değişim çakışırsa söz konusu değişimin bulunduğu saatler end_date_time değerine kadar sayılır.

maximum_regular_hours

double

Düzenli olarak (fazla mesai dışı) ödenen maksimum çalışma saati sayısı. Bu miktar pozitif olmalıdır.

Öncelik

Bir çalışanın zaman çizelgesindeki herhangi bir kısıtlama veya kapsam gereksinimleri için öncelik düzeyi. Bunlar arasında SchedulingConstraint, ResourceConstraint, ShiftRequest ve CoverageRequirement bulunmaktadır. Çelişen kısıtlamalar söz konusu olabileceğinden, tüm kısıtlamaları karşılamak her zaman mümkün değildir. Dolayısıyla, her kısıtlama türünün, tam bir zaman çizelgesine verilen tüm kısıtlamaların göreceli önemi hakkında çözücüyü bilgilendiren bir önceliği vardır (kullanıcı tarafından veya varsayılan tarafından verilir).

Sıralamalar
PRIORITY_UNSPECIFIED Bilinmeyen öncelik düzeyi.
PRIORITY_LOW En düşük öncelik düzeyi. Bu önceliğe sahip kısıtlamalar, diğer kısıtlamalardan daha az önemlidir. Uygun bir çözüm bulunamazsa ihlal durumu ilk olarak değerlendirilir.
PRIORITY_MEDIUM Öncelik düzeyi orta. Bu önceliğe sahip kısıtlamalar, PRIORITY_LOW önceliğine sahip kısıtlamalardan daha önemlidir ancak PRIORITY_HIGH öncelikli kısıtlamalardan daha az önemlidir. Tüm kısıtlamalar PRIORITY_LOW önceliğiyle gevşetildikten sonra uygun bir çözüm bulunamazsa bir sonraki ihlalde PRIORITY_MEDIUM önceliğinin kısıtlamaları dikkate alınır.
PRIORITY_HIGH En yüksek öncelik düzeyi. Bu öncelik düzeyiyle yapılan kısıtlamalar en önemlidir. Bunlar, düşük öncelik seviyelerinin kısıtlamaları gevşetildikten sonra uygun bir çözüm bulunamazsa en son ihlal olarak değerlendirileceklerdir.
PRIORITY_MANDATORY Çözme aracı tarafından ihlal edilemeyecek bir şeyi temsil eden öncelik düzeyi. Çözücü SolutionStatus.INFEASIBLE değeri döndürüyorsa bu durum çok fazla PRIORITY_MANDATORY kısıtlamasından kaynaklanıyor olabilir.

ResourceConstraint

Bir çalışan tarafından kullanılan belirli bir "kaynak" miktarını sınırlandıran genel bir kısıtlama. Bu, daha spesifik SchedulingConstraint özelliğinin kullanıcı için daha esnek olan soyut bir sürümüdür. SchedulingConstraint.type içinde belirtilemeyen birçok planlama kısıtlaması, bunun yerine bu mesaj kullanılarak belirtilebilir.

Alanlar
priority

Priority

Bu kaynak kısıtlamasının öncelik düzeyi. Tüm kaynak kısıtlamaları için varsayılan öncelik PRIORITY_MEDIUM şeklindedir.

resource_usages

map<string, double>

Vardiyalarda kullanılan kaynak miktarı. Örneğin, bu kısıtlama bir çalışanın belirli bir hafta içinde çalıştığı minimum ve maksimum saatler için geçerliyse bu harita, o hafta gerçekleşen kaymaları ve her bir vardiyanın saat cinsinden uzunluğunu içerir.

minimum_resource_usage

double

Bir kaynak kısıtlamasının karşılanması için minimum kaynak kullanımı.

maximum_resource_usage

double

Bir kaynak kısıtlamasının karşılanması için maksimum kaynak kullanımı.

SchedulingConstraint

Belirli bir çalışan için belirli zaman çizelgesi kısıtlaması. Belirtilen kısıtlama yalnızca belirtilen [start_date_time, end_date_time) aralığında uygulanır.

Alanlar
priority

Priority

Bu planlama kısıtlamasının öncelik düzeyi. Tüm planlama kısıtlamaları için varsayılan öncelik PRIORITY_MEDIUM şeklindedir.

start_date_time

DateTime

Bu planlama kısıtlamasının geçerli olduğu başlangıç zamanı (dahil).

end_date_time

DateTime

Bu planlama kısıtlamasının geçerli olacağı (hariç) bitiş zamanı.

Birleştirme alanı type. Belirtilen kısıtlama türü. Her kısıtlama yalnızca yukarıda belirtilen zaman aralığı içinde uygulanır. type şunlardan yalnızca biri olabilir:
minimum_minutes

int32

Çalışanın çalışabileceği minimum dakika sayısı. Çalışan, zaman aralığıyla (tamamen veya kısmen) çakışan bir vardiyaya atandıysa bu vardiyanın zaman aralığıyla çakıştığı dakika sayısı bu sayıya dahil edilir.

maximum_minutes

int32

Çalışanın zaman aralığında çalışabileceği maksimum dakika sayısı. Çalışan, zaman aralığıyla (tamamen veya kısmen) çakışan bir vardiyaya atandıysa bu vardiyanın zaman aralığıyla çakıştığı dakika sayısı bu sayıya dahil edilir.

minimum_consecutive_work_days

int32

Çalışanın art arda çalışabileceği minimum gün sayısı. Bir çalışan, belirli bir gün içinde başlayan bir vardiyaya atanmışsa o gün çalışıyor. İlgili zaman aralığında başlayan ve bir çalışanın atandığı tüm vardiyalar bu sayıya dahil edilir.

maximum_consecutive_work_days

int32

Çalışanın art arda çalışabileceği maksimum gün sayısı. Bir çalışan, belirli bir gün içinde başlayan bir vardiyaya atanmışsa o gün çalışıyor. İlgili zaman aralığında başlayan ve bir çalışanın atandığı tüm vardiyalar bu sayıya dahil edilir.

minimum_shift_count

int32

Bir çalışanın çalışabileceği minimum vardiya sayısı. Çalışanın atandığı zaman aralığıyla tamamen örtüşen tüm vardiyalar bu sayıya dahil edilir.

maximum_shift_count

int32

Bir çalışanın çalışabileceği maksimum vardiya sayısı. Çalışanın atandığı zaman aralığıyla tamamen örtüşen tüm vardiyalar bu sayıya dahil edilir.

minimum_rest_minutes

int32

Bir çalışanın bir vardiya bittikten sonra başka bir vardiyaya atanmadan önce dinlenmesi gereken minimum dakika sayısı. Bu kısıtlama, [start_date_time, end_date_time] değerine tam olarak dahil edilen her vardiya çifti için geçerlidir.

üst karakter

Vardiya, çalışanların çalışabilecekleri sabit bir zaman aralığını belirtir.

Alanlar
id

string

Bu varlığa atanan benzersiz kimlik.

location_id

string

Bu geçişin gerçekleştirildiği konumun kimliği. Bu alan boş olabilir.

start_date_time

DateTime

Vardiyanın başlangıç zamanı (dahil).

end_date_time

DateTime

Vardiyanın bitiş zamanı (hariç). Çözücü şu anda yalnızca 24 saatten kısa olan değişimlere izin vermektedir.

break_rules[]

BreakRule

Kaydırma sırasında oluşan kesme kurallarının listesi. Bu değişimi yapan çalışanlara break_rule başına bir ara atanır. Bu aralar, tamamladıkları pozisyonla ilgili talebi karşılamaz. Her BreakRule zaman aralığı, bu vardiyanın zaman aralığına tam olarak dahil edilmelidir.

ShiftAssignment

Rol ataması yapmak için bir çalışan.

Alanlar
employee_id

string

Atanan çalışan kimliği.

shift_id

string

Çalışana atanan vardiya kimliği.

role_id

string

Çalışanın vardiya için atandığı rol kimliği.

breaks[]

Break

Bu vardiya ataması için araların listesi.

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ı.

ShiftPreference

Belirli bir vardiya kimliği için sayısal tercih.

Alanlar
shift_id

string

Tercihin belirtildiği Üst Karakter Kimliği.

preference

int32

Daha büyük tercih değerleri, daha istenen bir değişimi gösterir.

ShiftRequest

Bir çalışanın belirli bir vardiyaya atanması veya atanmaması isteği.

Alanlar
priority

Priority

Bu planlama isteğinin öncelik düzeyi. Tüm planlama istekleri için varsayılan öncelik PRIORITY_LOW şeklindedir.

shift_ids[]

string

Planlama isteğinin değiştirme kimlikleri.

type

WorkStatus

İstek türü (ör. isteğin vardiya grubuna atanıp atanmadığı).

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.

Alanlar
id

string

Bu şablonun benzersiz kimliği.

earliest_start_time

TimeOfDay

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.

latest_start_time

TimeOfDay

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 earliest_start_time değerinden küçükse bu şablon tarafından oluşturulan bir kaydırma işlemi gece yarısından önce veya gece yarısından sonra başlayabilir.

duration_minutes

int32

Bu şablon tarafından oluşturulan bir kaymanın süresi sabitlendi.

start_time_increment_minutes

int32

earliest_start_time ile latest_start_time arasındaki olası başlangıç zamanlarını oluşturmak için kullanılan zaman artımı (dakika cinsinden). Örneğin, en erken başlangıç saati 8:00, en geç başlangıç saati 8:30 ve başlangıç zamanı artışı 10 dakikaysa bu vardiya şablonu için olası tüm başlangıç zamanları şu şekildedir: 8:00, 8:10, 8:20 ve 8:30.

days_off_count_per_week

int32

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.

event_templates[]

EventTemplate

Her vardiya için etkinlik oluşturma kuralları. Belirtilen her Etkinlik için her bir vardiyaya tam olarak bir etkinlik dahil edilecek.

minimum_interevent_gap_minutes

int32

Bir etkinliğin sonu ile bir sonraki etkinliğin başlangıcı arasındaki minimum dakika sayısı.

maximum_employee_count

int32

Bu şablon tarafından oluşturulan tüm vardiyalara atanabilecek maksimum çalışan sayısı.

SolutionStatus

Çözücünün yanıtında sağlanan çözüm (zaman çizelgesi) durumu.

Sıralamalar
SOLUTION_STATUS_UNSPECIFIED Yanıt için belirtilmemiş durum.
FEASIBLE Döndürülen zaman çizelgesi uygun ancak optimum olmayabilir.
OPTIMAL Döndürülen program optimum durumda.
INFEASIBLE Verilen kısıtlamalar için uygun bir zaman planlaması yok. Çözücü, PRIORITY_MANDATORY öncelik düzeyine sahip kısıtlamaların herhangi bir alt kümesi karşılanamazsa bu değeri döndürebilir.
NOT_SOLVED Program bulunamadı.
NOT_SOLVED_DEADLINE_EXCEEDED Verilen zaman sınırı dahilinde program bulunamadı.

SolveParameters

Kaydırma planlama probleminin tek bir çözümünü kontrol eden parametreler.

Alanlar
time_limit

Duration

Çözme aracının problem üzerinde harcaması gereken maksimum süre. Ayarlanmazsa varsayılan olarak 1 dakika olur.

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.

SolverConfig

Üst Karakter Oluşturma sorununu çözmek için ek parametreleri belirtir.

Alanlar
time_limit

Duration

Çö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 ShiftTemplates ile 7 günlük bir örneği çözerken her biri yaklaşık 20 olası başlangıç zamanı olan ve yaklaşık 30 olası başlangıç zamanıyla 2 etkinlik düzenleyen ve haftada iki gün kapalı olan 7 günlük bir örneği çözerken önerilen değerler şunlardır: Hızlı çözümler için 10 sn'den (ve muhtemelen optimum düzeyin altında), iyi kaliteli çözümler için (10 sn, 300 sn) ve kapsamlı arama için 300'den fazla sn. Daha büyük örnekler için daha uzun süre sınırları gerekebilir.

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.

multi_day_schedule

bool

Doğru ise çözücü, birkaç vardiya içeren (ör. haftalık bir program oluşturmak için) EmployeeSchedule'ler oluşturur. Aksi takdirde, her EmployeeSchedule tam olarak bir vardiya içerir. Birden çok günü kapsayan programlar, vardiyanın başlangıç zamanının tüm günler arasında aynı olduğunu ve böyle bir programdaki izin günlerinin sayısı vardiya şablonları tarafından belirlenir. Varsayılan değer, false'tur.

shift_events_can_change

bool

Doğru değerine ayarlanırsa birden çok gün içeren EmployeeSchedule'ler, etkinliklerinin başlangıç ve bitiş zamanının tüm günler arasında farklılık gösterdiği kaymaları içerebilir. Aksi takdirde, belirli bir EmployeeSchedule içindeki tüm vardiyaların, aynı etkinliğin başlangıç ve bitiş zamanlarına sahip olması gerekir. Her iki durumda da, birden çok gün içeren bir programdaki tüm değişimlerin başlangıç ve bitiş zamanı aynıdır. Dolayısıyla, multi_day_schedule yanlış değerine ayarlanırsa bu parametre yoksayılır. Bu parametreyi doğru değerine ayarlamak, çözme sürelerinin uzamasına neden olabilir. Varsayılan değer, false'tur.

WorkStatus

Bir çalışanın çalışıp çalışmadığı.

Sıralamalar
WORK_STATUS_UNSPECIFIED Çalışma durumu bilinmiyor.
STATUS_WORK Çalışan bir çalışanı temsil eden durum.
STATUS_NOT_WORK Çalışmayan bir çalışanı temsil eden durum.