Package google.research.optimization.v1.workforce

इंडेक्स

ब्रेक

वह समयावधि जिसमें कर्मचारी शिफ़्ट के दौरान अपने काम में रुकावट डालता है.

फ़ील्ड
start_date_time

DateTime

ब्रेक के शुरू होने का समय.

duration_minutes

int32

ब्रेक का कुल समय, मिनट में.

BreakRule

वह नियम जिससे तय होता है कि ब्रेक का समय, शिफ़्ट में कब शुरू हो सकता है और उसकी अवधि क्या होगी. खोज के लिए इस्तेमाल होने वाले सभी संभावित ब्रेक की सूची को rule_increment_minutes की बढ़ोतरी के हिसाब से तय किया जाता है. उदाहरण के लिए, अगर ब्रेक का कोई नियम 30 मिनट के ब्रेक का मॉडल है, जो 10:00 से 11:00 के बीच शुरू हो सकता है और नियम की बढ़ोतरी 20 मिनट की है, तो इन ब्रेक की सूची को माना जाएगा: [10:00, 10:30], [10:20, 10:50], 10:40, 11:10] [10:40, 11:10]

फ़ील्ड
earliest_start_time

DateTime

ब्रेक के शुरू होने का सबसे पहले का समय (शामिल है). सिर्फ़ hours और minutes सेट की जा सकती हैं.

latest_start_time

DateTime

ब्रेक के शुरू होने का सबसे नया समय (शामिल है). सिर्फ़ hours और minutes सेट की जा सकती हैं.

duration_minutes

int32

ब्रेक का कुल समय, मिनट में.

rule_increment_minutes

int32

[ज़रूरी नहीं] ब्रेक के इस नियम में लागू होने वाले सभी ब्रेक के लिए, मिनट में समय की बढ़ोतरी. अगर यह नीति सेट नहीं है, तो डिफ़ॉल्ट रूप से duration_minutes होती है.

BudgetRequirement

किसी दिए गए इंटरवल के लिए बजट की शर्तें.

फ़ील्ड
total_budget

double

किसी दिए गए इंटरवल के लिए कुल बजट. अगर प्राथमिकता PRIORITY_MANDATORY है, तो कुल बजट देना ज़रूरी है.

अगर total_budget सेट नहीं है, तो तय किए गए priority के मुताबिक, शेड्यूल की कुल लागत कम कर दी जाती है. उदाहरण के लिए, अगर बजट priority PRIORITY_MEDIUM है, तो सॉल्वर लागत को कम कर देगा. इसके बाद, PRIORITY_LOW प्राथमिकता के साथ कंस्ट्रेंट के किसी भी उल्लंघन को कम कर देगा.

start_date_time

DateTime

यह बजट लागू होने का प्रारंभ समय. अगर शुरुआत का समय तय नहीं किया गया है, तो यह सभी शिफ़्ट के शुरू होने का सबसे पहले का समय होगा.

end_date_time

DateTime

इस बजट के लागू होने का समय. अगर खत्म होने का समय तय नहीं किया गया है, तो इसे सभी शिफ़्ट के सबसे नए खत्म होने के समय के तौर पर सेट किया जाता है.

priority

Priority

तय समयावधि के दौरान, बजट की ज़रूरी शर्तों को पूरा करने के लिए प्राथमिकता का लेवल. डिफ़ॉल्ट प्राथमिकता PRIORITY_LOW है. अगर प्राथमिकता को PRIORITY_MANDATORY पर सेट किया गया है, तो total_budget को सेट करना ज़रूरी है.

ध्यान दें कि अगर यह प्राथमिकता अन्य कंस्ट्रेंट प्राथमिकताओं से ज़्यादा है और अगर total_budget में सख्ती बरती गई है, तो इससे बनने वाले शेड्यूल से, कर्मचारियों से जुड़ी पाबंदियों या कवरेज से जुड़ी ज़रूरी शर्तों का उल्लंघन हो सकता है.

CoverageRequirement

कवरेज से जुड़ी शर्त से यह पता चलता है कि किसी तय समयावधि में और दी गई जगह पर, कुछ भूमिकाओं और/या कौशल के लिए, कितने कर्मचारियों की ज़रूरत होती है. किसी खास जगह के तारीख और समय के अंतराल ओवरलैप नहीं कर सकते. इसके अलावा, टाइम विंडो और जगह के बजाय, शिफ़्ट आईडी की सूची दी जा सकती है. इस शर्त को सिर्फ़ वे कर्मचारी पूरा कर सकते हैं जिन्हें कोई खास भूमिका असाइन की जा सकती है या जिनके पास कोई खास स्किल है.

किसी भूमिका और/या कौशल के लिए, कवरेज से जुड़ी ज़रूरी शर्त तब पूरी होती है, जब टाइम विंडो में हर समय (या shift_ids में हर शिफ़्ट के लिए) कम से कम target_employee_count कर्मचारी काम कर रहे हों. इसके उलट, अगर टाइम विंडो में किसी भी समय (या shift_ids में किसी भी शिफ़्ट में) कर्मचारी काम करते हैं, तो कवरेज से जुड़ी ज़रूरी शर्त का उल्लंघन होता है.target_employee_count target_employee_count से ज़्यादा कर्मचारी, इस शर्त को पूरा करते हैं. हालांकि, सॉल्वर की वजह से कर्मचारियों की संख्या कम हो गई है.

फ़ील्ड
start_date_time

DateTime

कवरेज से जुड़ी ज़रूरी शर्तों के शुरू होने का समय (शामिल है). अगर यह नीति सेट है, तो shift_ids खाली होनी चाहिए.

end_date_time

DateTime

कवरेज से जुड़ी ज़रूरी शर्त के खत्म होने का समय (खास तौर पर). अगर यह नीति सेट है, तो shift_ids खाली होनी चाहिए.

location_id

string

वह जगह जहां कर्मचारियों की ज़रूरत होती है. shift_ids खाली नहीं है. यह फ़ील्ड खाली होनी चाहिए.

shift_ids[]

string

अगर सेट किया गया है, तो इस सूची में मौजूद हर शिफ़्ट आईडी पर भूमिका और स्किल से जुड़ी ज़रूरी शर्तें अलग-अलग लागू होती हैं. अगर shift_ids खाली नहीं है, तो start_date_time, end_date_time, और location_id खाली होने चाहिए.

role_requirements[]

RoleRequirement

समयावधि के दौरान, तय की गई भूमिकाओं के लिए असाइन किए जाने वाले कर्मचारियों की ज़रूरी संख्या. हर भूमिका आईडी के लिए, ज़्यादा से ज़्यादा एक role_requirement दिया जाना चाहिए. हर ज़रूरी शर्त के लिए, प्राथमिकता का डिफ़ॉल्ट लेवल PRIORITY_MANDATORY है. अगर समयावधि के दौरान किसी भी समय target_employee_count से कम कर्मचारियों को तय भूमिकाओं के लिए असाइन किया गया हो, तो इन पाबंदियों का उल्लंघन किया जाता है.

skill_requirements[]

SkillRequirement

समय विंडो के दौरान शिफ़्ट में असाइन किए गए खास कौशल वाले कर्मचारियों की ज़रूरी संख्या. हर स्किल आईडी के लिए, ज़्यादा से ज़्यादा एक skill_requirement देना ज़रूरी है. हर ज़रूरी शर्त के लिए, प्राथमिकता का डिफ़ॉल्ट लेवल PRIORITY_LOW है. अगर टाइम विंडो के दौरान किसी भी समय target_employee_count से कम कर्मचारियों के पास दिया गया कौशल है, तो इन पाबंदियों का उल्लंघन होता है.

RoleRequirement

समयावधि के दौरान, तय की गई भूमिका में असाइन किए जाने वाले कर्मचारियों की ज़रूरी संख्या.

फ़ील्ड
role_id

string

ज़रूरी शर्त के लिए रोल आईडी.

target_employee_count

int32

समयावधि के दौरान, भूमिका के लिए असाइन किए गए कर्मचारियों की संख्या.

priority

Priority

इस ज़रूरी शर्त के लिए प्राथमिकता का लेवल. सभी संसाधन कंस्ट्रेंट के लिए डिफ़ॉल्ट प्राथमिकता PRIORITY_MANDATORY है.

SkillRequirement

ऐसे कर्मचारियों की आवश्यक संख्या जो समयावधि के दौरान काम कर रहे हैं और जो खास कौशल रखते हैं.

फ़ील्ड
skill_id

string

ज़रूरी शर्त के लिए स्किल आईडी.

target_employee_count

int32

दिए गए कौशल वाले उन कर्मचारियों की संख्या जो तय समय के दौरान काम कर रहे हैं.

priority

Priority

इस ज़रूरी शर्त के लिए प्राथमिकता का लेवल. सभी संसाधन कंस्ट्रेंट के लिए डिफ़ॉल्ट प्राथमिकता PRIORITY_LOW है.

DemandCoverageViolation

दिए गए इंटरवल के लिए, डिमांड कवरेज के उल्लंघन की जानकारी देता है. बताए गए पूरे अंतराल के दौरान कर्मचारी की मांग एक ही रहती है.

फ़ील्ड
start_date_time

DateTime

मांग के इंटरवल के लिए शुरू होने की तारीख और समय (इसमें भी शामिल है). यह मान मिनट तक बताया जाता है.

end_date_time

DateTime

मांग के इंटरवल के खत्म होने की तारीख और समय (खास तौर पर). यह मान मिनट तक बताया जाता है.

coverage_violation

int32

किसी खास अवधि के दौरान कवरेज से जुड़ा उल्लंघन. पॉज़िटिव वैल्यू से पता चलता है कि मांग पूरी तरह से कवर की गई है. वहीं, नेगेटिव वैल्यू से पता चलता है कि मांग पूरी तरह से कवर की गई है.

कर्मचारी

टीम में काम करने वाले किसी कर्मचारी का शेड्यूल होना है.

फ़ील्ड
id

string

इस कर्मचारी को असाइन किया गया यूनीक आईडी.

role_ids[]

string

रोल आईडी जिन्हें यह कर्मचारी काम कर सकता है. कम से कम एक भूमिका तय होनी चाहिए. जब किसी कर्मचारी को शिफ़्ट में असाइन किया जाता है, तो उसे भी इस सूची में से एक भूमिका के लिए असाइन किया जाता है. अपॉइंटमेंट शेड्यूल करने की समयसीमा के दौरान, कर्मचारी को अलग-अलग भूमिकाएं असाइन की जा सकती हैं.

skill_ids[]

string

इस कर्मचारी के पास मौजूद स्किल आईडी. यह सूची खाली हो सकती है. जब किसी कर्मचारी को शिफ़्ट के लिए असाइन किया जाता है, तो असाइन किए गए शिफ़्ट के दौरान स्किल से जुड़ी ज़रूरी शर्तों को पूरा करने के लिए, कर्मचारी यहां बताए गए कौशल के किसी भी सबसेट का इस्तेमाल करता है.

shift_preferences[]

ShiftPreference

इस कर्मचारी की प्राथमिकताएं बदलें. यहां बताई गई शिफ़्ट उन शिफ़्ट को दिखाती हैं जिन्हें शेड्यूल करने की समयसीमा के दौरान कर्मचारी असाइन करना चाहता है. shift_preferences में दिए गए shift आईडी यूनीक होने चाहिए. सॉल्वर, ShiftPreference.preference की वैल्यू को बढ़ाने की कोशिश करेगा. हालांकि, ऐसा उन सभी shift_preferences वैल्यू के लिए होगा जो संतुष्ट हैं.

scheduling_constraints[]

SchedulingConstraint

इस कर्मचारी के लिए शेड्यूलिंग प्रतिबंधों की सूची. इनमें से हर एक कंस्ट्रेंट के लिए, प्राथमिकता का डिफ़ॉल्ट लेवल PRIORITY_MEDIUM है. ज़्यादा जानकारी के लिए, Priority की एनम देखें.

resource_constraints[]

ResourceConstraint

शेड्यूल करने से जुड़ी जिन अतिरिक्त पाबंदियों की जानकारी scheduling_constraints में नहीं दी गई है उन्हें यहां resource_constraints में जोड़ा जा सकता है. ResourceConstraint, किसी कर्मचारी के लिए संसाधनों को सीमित तौर पर दिखाने का एक छोटा सा तरीका है. इनमें से हर एक कंस्ट्रेंट के लिए, प्राथमिकता का डिफ़ॉल्ट लेवल PRIORITY_MEDIUM है. ज़्यादा जानकारी के लिए, Priority की एनम देखें.

shift_requests[]

ShiftRequest

कर्मचारी के लिए, शिफ़्ट के अनुरोधों की सूची. यह अनुरोध किसी कर्मचारी को असाइन किए जाने या किसी खास शिफ़्ट में नहीं असाइन किए जाने के लिए भी हो सकता है. कर्मचारी के लिए, तय शेड्यूल किए गए किसी भी असाइनमेंट को ShiftRequest प्राथमिकता के साथ PRIORITY_MANDATORY के साथ दिखाया जा सकता है. इस कर्मचारी के लिए, शेड्यूल करने के ज़्यादा से ज़्यादा एक अनुरोध में शिफ़्ट आईडी दिख सकता है. इनमें से हर अनुरोध के लिए, डिफ़ॉल्ट प्राथमिकता लेवल PRIORITY_LOW है. ज़्यादा जानकारी के लिए, Priority की एनम देखें.

hourly_contract

HourlyContract

कॉन्ट्रैक्ट में, कर्मचारी के लिए हर घंटे के हिसाब से सामान्य और ओवरटाइम के हिसाब से शुल्क तय किया जाता है.

EmployeeDemand

यह बताता है कि किसी दिए गए तारीख और समय के अंतराल में मांग को पूरा करने के लिए कितने कर्मचारियों की ज़रूरत है.

फ़ील्ड
start_date_time

DateTime

किसी खास मांग के लिए, समय अंतराल की शुरुआत. इसमें यह समय भी शामिल है. इन वैल्यू को मिनट के हिसाब से पढ़ा जाता है; सेकंड और सभी छोटी इकाइयों को अनदेखा कर दिया जाता है.

end_date_time

DateTime

किसी खास मांग के लिए, समयावधि खत्म होना. इन वैल्यू को मिनट के हिसाब से पढ़ा जाता है; सेकंड और सभी छोटी इकाइयों को अनदेखा कर दिया जाता है.

employee_count

int32

इस इंटरवल में की गई मांग को पूरा करने के लिए ज़रूरी कर्मचारियों की संख्या.

EmployeeSchedule

एक ShiftTemplate के हिसाब से शिफ़्ट की क्रम वाली सूची, जिसे कई कर्मचारियों को असाइन किया जाना है.

फ़ील्ड
shift_template_id

string

उस टेंप्लेट का आईडी जिसका इस्तेमाल शिफ़्ट के इस सेट को जनरेट करने के लिए किया गया था.

shifts[]

ShiftWithEvents

उन शिफ़्ट की सूची जिनमें employee_count कर्मचारियों को असाइन किया गया है. शेड्यूल के लिए चुने गए शिफ़्ट और इवेंट, एक ही टेंप्लेट से जनरेट किए गए थे. बदलाव समय के हिसाब से क्रम में लगाए जाते हैं और ओवरलैप नहीं होते हैं. अगर SolverConfig.multi_day_schedule सही है, तो किसी दिन की छुट्टी को अनुमान के तौर पर तब दिखाया जाता है, जब उस दिन शुरू होने वाला कोई बदलाव मौजूद नहीं होता.

employee_count

int32

उन कर्मचारियों की संख्या जिन्हें मांग को पूरा करने के लिए शिफ़्ट के इस सेट में असाइन किया जाना चाहिए.

ShiftWithEvents

सॉल्वर से जनरेट हुए शिफ़्ट के तय इवेंट की सूची के साथ-साथ, शुरू और खत्म होने की तारीख की जानकारी देता है.

फ़ील्ड
start_date_time

DateTime

शिफ़्ट के शुरू होने की तारीख और समय. यह मान मिनट के हिसाब से तय किया जाता है; सेकंड और इससे छोटी इकाइयां नहीं दिखाई जाती हैं.

end_date_time

DateTime

शिफ़्ट की खत्म होने की तारीख और समय. यह मान मिनट के हिसाब से तय किया जाता है; सेकंड और इससे छोटी इकाइयां नहीं दिखाई जाती हैं.

events[]

Event

इस शिफ़्ट में शामिल इवेंट की सूची, जो ShiftTemplate.Event के साथ मैप की गई है और उसी क्रम में की गई है. अगर SolverConfig.shift_events_can_change सही है, तो इस शेड्यूल के सभी ShiftWithEvents में इवेंट के शुरू और खत्म होने का समय अलग-अलग हो सकता है.

इवेंट

सॉल्वर के ज़रिए जनरेट किए गए शिफ़्ट में, किसी इवेंट के शुरू और खत्म होने की तारीख और समय तय करता है.

फ़ील्ड
event_template_id

string

इस इवेंट को जनरेट करने के लिए इस्तेमाल किए गए टेंप्लेट का आईडी.

start_date_time

DateTime

इवेंट शुरू होने की तारीख और समय. यह मान मिनट के हिसाब से तय किया जाता है; सेकंड और इससे छोटी इकाइयां नहीं दिखाई जाती हैं.

end_date_time

DateTime

इवेंट खत्म होने की तारीख और समय. यह मान मिनट के हिसाब से तय किया जाता है; सेकंड और इससे छोटी इकाइयां नहीं दिखाई जाती हैं.

EventTemplate

शिफ़्ट के दौरान होने वाला एक इवेंट जनरेट करने के नियम तय करने वाला टेंप्लेट. इवेंट में मीटिंग, ब्रेक, लंच वगैरह को दिखाया जा सकता है.

फ़ील्ड
id

string

इस टेंप्लेट का यूनीक आईडी.

minimum_minutes_after_shift_start

int32

शिफ़्ट शुरू होने के बाद, इस इवेंट के शुरू होने के कम से कम मिनट की संख्या.

maximum_minutes_after_shift_start

int32

शिफ़्ट शुरू होने के बाद, इस इवेंट के शुरू होने के ज़्यादा से ज़्यादा मिनट.

duration_minutes

int32

इस इवेंट के मिनट में तय समय.

start_time_increment_minutes

int32

समय की बढ़ोतरी (मिनट में) का इस्तेमाल, minimum_minutes_after_shift_start और maximum_minutes_after_shift_start के बीच के संभावित इवेंट शुरू होने के समय का सेट जनरेट करने के लिए किया गया. उदाहरण के लिए, अगर शिफ़्ट शुरू होने के बाद कम से कम 30 मिनट, शिफ़्ट शुरू होने के बाद के ज़्यादा से ज़्यादा मिनट 45, और शुरू होने का समय पांच मिनट है, तो शिफ़्ट शुरू होने के बाद इवेंट 30, 35, 40 या 45 मिनट बाद हो सकता है.

HourlyContract

किसी कर्मचारी को मिलने वाले मुआवज़े का पता लगाने के लिए, हर घंटे के हिसाब से मूल दर, दर में अंतर, और ओवरटाइम की संख्या में मल्टीप्लायर की जानकारी देता है. ध्यान दें कि अलग-अलग जगहों पर लागू नियमों के तहत, ओवरटाइम मुआवज़े का हिसाब अलग तरीके से लगाना पड़ सकता है. समाधानकर्ता ओवरटाइम मुआवज़े का अनुमान लगाता है, ताकि कुल लागत की प्रॉक्सी को कम किया जा सके या बजट को पूरा किया जा सके (BudgetRequirement देखें). इसे पेरोल का हिसाब लगाने के टूल के तौर पर इस्तेमाल नहीं किया गया है.

फ़ील्ड
base_hourly_rate

double

नॉन-ओवरटाइम घंटे काम करने के लिए मिलने वाला मुआवज़ा. अगर कर्मचारी पर एक से ज़्यादा दरें लागू होती हैं, तो दर में अंतर, इस आधार पर घंटे के हिसाब से दर के हिसाब से लागू किया जाता है. इसके अलावा, अगर एक से ज़्यादा दरें लागू होती हैं, तो हर घंटे के हिसाब से मूल दर, इन दरों से कम होनी चाहिए.

hourly_rate_shift_differentials

map<string, double>

हर घंटे के हिसाब से दर का अंतर, जो base_hourly_rate में दिखाया जाता है. उदाहरण के लिए, अगर हर घंटे के हिसाब से बेस की दर 30 डॉलर है, तो "shift_1" के लिए 40 डॉलर/घंटा की दर से पेमेंट किया जाता है और "shift_2" के लिए 45 डॉलर/घंटा की दर से पेमेंट किया जाता है, तो प्रोटो का मतलब यह है: 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

उन सभी अवधियों की सूची जिनके लिए ओवरटाइम का हिसाब लगाना है. ये अवधि ओवरलैप नहीं होनी चाहिए.

OvertimePeriod

एक तय और नियमित रूप से बार-बार होने वाली अवधि (आम तौर पर 168 घंटे या लगातार 24 घंटे की अवधि) जिसका इस्तेमाल ओवरटाइम मुआवज़े की रकम तय करने के लिए किया जाता है. हर अवधि में, ओवरटाइम मल्टीप्लायर होता है (उदाहरण के लिए, 1.5) के साथ काम करने के घंटों के लिए तय किया गया समय.base_hourly_rate start_date_time (शामिल) और end_date_time (खास) समयावधि से ओवरलैप होने वाली किसी भी शिफ़्ट को, किसी खास समयावधि में काम करने के कुल घंटों में गिना जाता है. अगर ओवरलैप आंशिक है, तो सिर्फ़ ओवरलैप होने वाले घंटों की गिनती की जाती है.

फ़ील्ड
overtime_multiplier

double

ओवरटाइम की हर घंटे की दर की गणना करने के लिए गुणक (1.0 से ज़्यादा या उसके बराबर होना चाहिए). आम तौर पर, ओवरटाइम की हर घंटे की दर का हिसाब base_hourly_rate * overtime_multiplier के तौर पर लगाया जाता है. अगर hourly_rate_shift_differentials के हिसाब से कई दरें दी गई हैं, तो सॉल्वर ओवरटाइम के दौरान लागू होने वाली हर घंटे की दर का सामान्य औसत के साथ, ओवरटाइम की दर का अनुमान लगाता है. ध्यान दें: अलग-अलग जगहों के नियमों के तहत, हो सकता है कि ओवरटाइम मुआवज़े का हिसाब अलग तरीके से लगाना पड़े. सॉल्वर ओवरटाइम मुआवज़े का अनुमान लगाता है, ताकि कुल लागत की प्रॉक्सी को कम किया जा सके या बजट को पूरा किया जा सके. हालांकि, इसे पेरोल का हिसाब लगाने के टूल के तौर पर इस्तेमाल नहीं किया जा सकता.

start_date_time

DateTime

ओवरटाइम अवधि के लिए शुरू होने का समय. अगर इस बार कोई शिफ़्ट ओवरलैप होती है, तो ऐसी शिफ़्ट के घंटों की गिनती start_date_time से की जाती है.

end_date_time

DateTime

ओवरटाइम अवधि के लिए खत्म होने का समय. अगर इस बार कोई शिफ़्ट ओवरलैप होती है, तो ऐसी शिफ़्ट के घंटों को end_date_time तक गिना जाता है.

maximum_regular_hours

double

काम के घंटों की ज़्यादा से ज़्यादा संख्या, जिनका भुगतान नियमित (नॉन-ओवरटाइम) दर पर किया जाता है. यह संख्या पॉज़िटिव होनी चाहिए.

प्राथमिकता

कर्मचारी के शेड्यूल या कवरेज से जुड़ी ज़रूरी शर्तों में किसी भी तरह की रुकावट के लिए प्राथमिकता लेवल. इनमें 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 कंस्ट्रेंट की वजह से हो सकता है.

ResourceConstraint

एक सामान्य सीमा, जो किसी कर्मचारी के इस्तेमाल किए जाने वाले खास "संसाधन" की मात्रा को सीमित करती है. यह उस SchedulingConstraint का ऐब्सट्रैक्ट वर्शन है जिसे कोई भी उपयोगकर्ता आसानी से इस्तेमाल कर सकता है. SchedulingConstraint.type में नहीं बताई जा सकने वाली कई शेड्यूलिंग पाबंदियां, इस मैसेज का इस्तेमाल करके तय की जा सकती हैं.

फ़ील्ड
priority

Priority

इस रिसॉर्स कंस्ट्रेंट का प्राथमिकता लेवल. सभी संसाधन कंस्ट्रेंट के लिए डिफ़ॉल्ट प्राथमिकता PRIORITY_MEDIUM है.

resource_usages

map<string, double>

शिफ़्ट में इस्तेमाल किए गए संसाधन की संख्या. उदाहरण के लिए, अगर यह प्रतिबंध किसी हफ़्ते में किसी कर्मचारी के काम करने के कम से कम और ज़्यादा से ज़्यादा घंटों पर लागू होता है, तो इस मैप में उस हफ़्ते के बदलावों और हर शिफ़्ट की अवधि, घंटों में दिखाई जाएगी.

minimum_resource_usage

double

किसी संसाधन के सीमित इस्तेमाल को पूरा करने के लिए, संसाधन का कम से कम इस्तेमाल.

maximum_resource_usage

double

किसी संसाधन की सीमा को पूरा करने के लिए, संसाधन का ज़्यादा से ज़्यादा इस्तेमाल.

SchedulingConstraint

किसी विशेष कर्मचारी के लिए शेड्यूल करने की खास सीमा. बताया गया कंस्ट्रेंट सिर्फ़ दिए गए इंटरवल [start_date_time, end_date_time) के दौरान लागू होता है.

फ़ील्ड
priority

Priority

शेड्यूल करने की इस सीमा के लिए प्राथमिकता का लेवल. शेड्यूल करने से जुड़ी सभी पाबंदियों के लिए, डिफ़ॉल्ट प्राथमिकता PRIORITY_MEDIUM है.

start_date_time

DateTime

शेड्यूलिंग की यह सीमा लागू होने का प्रारंभ समय (शामिल है).

end_date_time

DateTime

शेड्यूल की यह सीमा लागू होने के बाद खत्म होने का समय (शामिल नहीं है).

यूनियन फ़ील्ड type. कंस्ट्रेंट का टाइप तय किया जा रहा है. हर कंस्ट्रेंट सिर्फ़ ऊपर बताई गई समयसीमा के अंदर लागू होता है. type इनमें से सिर्फ़ एक हो सकता है:
minimum_minutes

int32

कर्मचारी कम से कम कितने मिनट काम कर सकता है. अगर कर्मचारी को किसी ऐसे शिफ़्ट के लिए असाइन किया गया है जो समय विंडो को ओवरलैप (पूरी तरह या आंशिक रूप से) करता है, तो इस संख्या में समय विंडो को शिफ़्ट में ओवरलैप करने के मिनटों की संख्या शामिल है.

maximum_minutes

int32

समयावधि में कर्मचारी ज़्यादा से ज़्यादा कितने मिनट तक काम कर सकता है. अगर कर्मचारी को किसी ऐसे शिफ़्ट के लिए असाइन किया गया है जो समय विंडो को ओवरलैप (पूरी तरह या आंशिक रूप से) करता है, तो इस संख्या में समय विंडो को शिफ़्ट में ओवरलैप करने के मिनटों की संख्या शामिल है.

minimum_consecutive_work_days

int32

कम से कम इतने दिनों तक कर्मचारी काम कर सकता है. अगर किसी कर्मचारी को दिन के दौरान शुरू होने वाली शिफ़्ट में काम करने के लिए असाइन किया गया है, तो वह किसी खास दिन काम करता है. समय के साथ शुरू होने वाले किसी भी कर्मचारी को असाइन किए गए बदलाव को इसमें शामिल किया जाता है.

maximum_consecutive_work_days

int32

कर्मचारी लगातार ज़्यादा से ज़्यादा दिनों में काम कर सकता है. अगर किसी कर्मचारी को दिन के दौरान शुरू होने वाली शिफ़्ट में काम करने के लिए असाइन किया गया है, तो वह किसी खास दिन काम करता है. समय के साथ शुरू होने वाले किसी भी कर्मचारी को असाइन किए गए बदलाव को इसमें शामिल किया जाता है.

minimum_shift_count

int32

कर्मचारी जितनी शिफ़्ट में काम कर सकते हैं, वह कम से कम संख्या. इसमें समय के साथ पूरी तरह से ओवरलैप होने वाले कर्मचारी को असाइन किए गए किसी भी बदलाव को इसमें शामिल किया जाता है.

maximum_shift_count

int32

कर्मचारी ज़्यादा से ज़्यादा कितनी शिफ़्ट में काम कर सकते हैं. इसमें समय के साथ पूरी तरह से ओवरलैप होने वाले कर्मचारी को असाइन किए गए किसी भी बदलाव को इसमें शामिल किया जाता है.

minimum_rest_minutes

int32

कर्मचारियों को एक शिफ़्ट खत्म होने के बाद, दूसरी शिफ़्ट में असाइन किए जाने से पहले, कम से कम मिनट तक आराम करना चाहिए. यह कंस्ट्रेंट, [start_date_time, end_date_time] में पूरी तरह से शामिल शिफ़्ट के हर जोड़े पर लागू होता है.

Shift

शिफ़्ट एक तय समयावधि को दिखाती है, जिसमें कर्मचारी काम कर सकते हैं.

फ़ील्ड
id

string

इस शिफ़्ट के लिए असाइन किया गया यूनीक आईडी.

location_id

string

वह जगह का आईडी जिसमें यह शिफ़्ट हुआ है. यह फ़ील्ड खाली हो सकता है.

start_date_time

DateTime

शिफ़्ट के शुरू होने का समय (शामिल)

end_date_time

DateTime

शिफ़्ट के खत्म होने का समय (शामिल नहीं है). फ़िलहाल, सॉल्वर में सिर्फ़ 24 घंटे से कम समय वाले शिफ़्ट के इस्तेमाल किए जा सकते हैं.

break_rules[]

BreakRule

शिफ़्ट के दौरान लागू होने वाले ब्रेक के नियमों की सूची. इस शिफ़्ट में काम करने वाले कर्मचारियों को हर break_rule के लिए एक ब्रेक दिया जाता है. इस दौरान, वे जिस काम को पूरा कर रहे होते हैं उसकी मांग पूरी नहीं हो पाती. इस शिफ़्ट की टाइम विंडो में, हर BreakRule टाइम विंडो को पूरी तरह शामिल करना ज़रूरी है.

ShiftAssignment

एक कर्मचारी को बदला जा रहा है.

फ़ील्ड
employee_id

string

असाइन किया जा रहा कर्मचारी आईडी.

shift_id

string

कर्मचारी को असाइन किया गया Shift आईडी.

role_id

string

वह रोल आईडी जिसे शिफ़्ट के लिए कर्मचारी को असाइन किया गया है.

breaks[]

Break

शिफ़्ट के इस असाइनमेंट के लिए ब्रेक की सूची.

ShiftGenerationSolutionStatus

सॉल्वर से मिले जवाब में मौजूद सॉल्यूशन का स्टेटस.

Enums
SHIFT_GENERATION_SOLUTION_STATUS_UNSPECIFIED जवाब की स्थिति की जानकारी नहीं है.
SHIFT_GENERATION_SOLVED सॉल्वर ने दी गई समयसीमा में समस्या का हल ढूंढ लिया है.
SHIFT_GENERATION_NOT_SOLVED किसी समस्या की वजह से, सॉल्वर टूल में शिफ़्ट जनरेट नहीं कर पा रहा है.
SHIFT_GENERATION_NOT_SOLVED_DEADLINE_EXCEEDED दी गई समयसीमा में मांग को पूरा करने के लिए, शिफ़्ट जनरेट नहीं किए जा सके.

ShiftPreference

शिफ़्ट आईडी के लिए अंकों वाली प्राथमिकता.

फ़ील्ड
shift_id

string

Shift आईडी जिसके लिए प्राथमिकता दी गई है.

preference

int32

'प्राथमिकता' की बड़ी वैल्यू, ज़्यादा ज़रूरी बदलाव दिखाती है.

ShiftRequest

किसी कर्मचारी को किसी खास शिफ़्ट में असाइन किए जाने या न किए जाने का अनुरोध.

फ़ील्ड
priority

Priority

शेड्यूल करने के इस अनुरोध के लिए प्राथमिकता का लेवल. शेड्यूल करने के सभी अनुरोधों की डिफ़ॉल्ट प्राथमिकता PRIORITY_LOW है.

shift_ids[]

string

शेड्यूल करने के अनुरोध के शिफ़्ट आईडी.

type

WorkStatus

अनुरोध का टाइप, जैसे कि शिफ़्ट के सेट के लिए अनुरोध असाइन किया गया है या नहीं.

ShiftTemplate

शिफ़्ट जनरेट करने के नियम तय करने वाला टेंप्लेट. शिफ़्ट काम की एक इकाई है, जो शुरू होने और खत्म होने का समय तय करती है और इसमें इवेंट (जैसे कि लंच, ब्रेक वगैरह) हो सकते हैं. जवाब में किसी खास तारीख के लिए शिफ़्ट को असाइन किया जाएगा.

फ़ील्ड
id

string

इस टेंप्लेट का यूनीक आईडी.

earliest_start_time

TimeOfDay

दिन का सबसे पहला समय जब कोई शिफ़्ट शुरू हो सकती है. यह वैल्यू घंटे और मिनट की मदद से तय की जाती है. सेकंड और नैनो को अनदेखा कर दिया जाता है.

latest_start_time

TimeOfDay

दिन का सबसे हाल का समय, जब शिफ़्ट शुरू हो सकती है. यह वैल्यू घंटे और मिनट की मदद से तय की जाती है. सेकंड और नैनो को अनदेखा कर दिया जाता है. अगर यह वैल्यू earliest_start_time से कम है, तो इस टेंप्लेट से जनरेट होने वाला शिफ़्ट, आधी रात से पहले या बाद में शुरू हो सकता है.

duration_minutes

int32

इस टेंप्लेट से जनरेट हुए शिफ़्ट की तय अवधि.

start_time_increment_minutes

int32

समय की बढ़ोतरी (मिनट में) का इस्तेमाल, earliest_start_time और latest_start_time के बीच शुरू होने के संभावित समय का सेट जनरेट करने के लिए किया गया. उदाहरण के लिए, अगर शुरू होने का सबसे पुराना समय 8:00 है, शुरू होने का सबसे नया समय 8:30 है, और शुरू होने का समय 10 मिनट है, तो शिफ़्ट के इस टेंप्लेट के लिए शुरू होने का सभी संभावित समय ये हैं: 8:00, 8:10, 8:20, और 8:30.

days_off_count_per_week

int32

हर हफ़्ते दिनों की तय संख्या. अगर किसी कर्मचारी को उस दिन शुरू होने वाली शिफ़्ट में काम करने के लिए असाइन नहीं किया गया है, तो उसके लिए छुट्टी का दिन तय किया गया है. एक हफ़्ता सात दिनों का होता है और इसकी शुरुआत रविवार से होती है.

event_templates[]

EventTemplate

हर शिफ़्ट के लिए इवेंट जनरेट करने के नियम. बताए गए हर इवेंट के लिए, हर शिफ़्ट में सिर्फ़ एक इवेंट शामिल किया जाएगा.

minimum_interevent_gap_minutes

int32

एक इवेंट के खत्म होने और अगले इवेंट के शुरू होने के बीच के कम से कम मिनट.

maximum_employee_count

int32

इस टेंप्लेट से जनरेट की गई सभी शिफ़्ट में असाइन किए जा सकने वाले कर्मचारियों की ज़्यादा से ज़्यादा संख्या.

SolutionStatus

किसी सॉल्वर से मिले जवाब में मौजूद सलूशन (यानी कि शेड्यूल) का स्टेटस.

Enums
SOLUTION_STATUS_UNSPECIFIED जवाब की स्थिति की जानकारी नहीं है.
FEASIBLE वापस किया गया शेड्यूल संभव है, लेकिन हो सकता है कि यह बेहतर न हो.
OPTIMAL वापस भेजा गया शेड्यूल सबसे बेहतर है.
INFEASIBLE दिए गए कंस्ट्रेंट के लिए कोई संभव शेड्यूल मौजूद नहीं है. अगर प्राथमिकता लेवल PRIORITY_MANDATORY वाले कंस्ट्रेंट का कोई सबसेट पूरा नहीं हो पाता है, तो सॉल्वर यह वैल्यू दिखा सकता है.
NOT_SOLVED कोई शेड्यूल नहीं मिला.
NOT_SOLVED_DEADLINE_EXCEEDED दी गई समयसीमा में कोई शेड्यूल नहीं मिला.

SolveParameters

ऐसे पैरामीटर जो शिफ़्ट शेड्यूलिंग की समस्या के एक ही समाधान को कंट्रोल करते हैं.

फ़ील्ड
time_limit

Duration

वह ज़्यादा से ज़्यादा समय जो सॉल्वर को समस्या पर बिताना चाहिए. अगर यह नीति सेट नहीं है, तो डिफ़ॉल्ट रूप से एक मिनट होता है.

इस वैल्यू के लिए कोई तय सीमा नहीं है. साथ ही, इसमें कम्यूनिकेशन का ओवरहेड शामिल नहीं होता. इस समस्या को हल करने में लगने वाला अनुमानित समय, वैल्यू से थोड़ा ज़्यादा हो सकता है.

SolverConfig

शिफ़्ट जेनरेशन की समस्या को हल करने के लिए अतिरिक्त पैरामीटर तय करता है.

फ़ील्ड
time_limit

Duration

वह ज़्यादा से ज़्यादा समय जो सॉल्वर को समस्या पर बिताना चाहिए. अगर यह नीति सेट नहीं है, तो डिफ़ॉल्ट रूप से एक मिनट होता है. समयसीमा, इस बात पर निर्भर करेगी कि समस्या कितनी बड़ी है. उदाहरण के लिए, सात दिनों के लिए दो ShiftTemplates वाला इंस्टेंस हल करने के लिए, शुरू होने का समय ~20 हो सकता है. साथ ही, दो इवेंट शुरू होने की संभावना 30 संभावित समय पर और हफ़्ते में दो दिन की छुट्टी वाले इंस्टेंस को हल करने के लिए, ये वैल्यू सुझाई गई हैं: <तेज़ समाधान के लिए 10 सेकंड (और संभावित तौर पर सबसे अच्छा नहीं), और खोज से जुड़े बेहतर समाधानों के लिए 300 सेकंड से ज़्यादा. बड़े इंस्टेंस को ज़्यादा समय तक इस्तेमाल करना पड़ सकता है.

इस वैल्यू के लिए कोई तय सीमा नहीं है. साथ ही, इसमें कम्यूनिकेशन का ओवरहेड शामिल नहीं होता. इस समस्या को हल करने में लगने वाला अनुमानित समय, वैल्यू से थोड़ा ज़्यादा हो सकता है.

multi_day_schedule

bool

सही होने पर, सॉल्वर EmployeeSchedule जनरेट करता है.इसमें कई शिफ़्ट होते हैं. जैसे, एक हफ़्ते का शेड्यूल जनरेट करने के लिए. ऐसा न होने पर, हर EmployeeSchedule में सिर्फ़ एक शिफ़्ट होता है. कई दिनों के शेड्यूल में यह माना जाता है कि शिफ़्ट शुरू होने का समय सभी दिनों में एक ही है और ऐसे शेड्यूल में दिनों की संख्या शिफ़्ट टेंप्लेट के आधार पर तय होती है. डिफ़ॉल्ट रूप से गलत पर सेट होती है.

shift_events_can_change

bool

अगर सही है, तो कई दिनों वाले EmployeeSchedule में वे शिफ़्ट शामिल हो सकते हैं जिनके लिए, इवेंट के शुरू और खत्म होने का समय हर दिन अलग-अलग होता है. ऐसा नहीं होने पर, किसी खास EmployeeSchedule की सभी शिफ़्ट में इवेंट के शुरू और खत्म होने का समय एक ही होना चाहिए. दोनों ही मामलों में, कई दिनों वाले शेड्यूल के सभी शिफ़्ट के शुरू और खत्म होने का समय एक ही होता है. इसलिए, अगर multi_day_schedule गलत है, तो इस पैरामीटर को अनदेखा कर दिया जाता है. इस पैरामीटर को 'सही' पर सेट करने से, हल करने में ज़्यादा समय लग सकता है. डिफ़ॉल्ट रूप से गलत पर सेट होती है.

WorkStatus

कोई कर्मचारी काम कर रहा है या नहीं.

Enums
WORK_STATUS_UNSPECIFIED काम की स्थिति की जानकारी नहीं है.
STATUS_WORK कामकाजी कर्मचारी का स्टेटस.
STATUS_NOT_WORK गैर-काम करने वाले कर्मचारी का स्टेटस.