แก้ปัญหาการสร้างกะการทำงานจาก SolveShiftGenerationRequest
ที่ระบุด้วยการสร้างกะการทำงานจากเทมเพลตกะการทำงานที่กำหนดเพื่อให้ครอบคลุมความต้องการของพนักงาน
คำขอ HTTP
POST https://optimization.googleapis.com/v1/scheduling:solveShiftGeneration
URL ใช้ไวยากรณ์การแปลง gRPC
เนื้อหาของคำขอ
เนื้อหาของคำขอมีข้อมูลที่มีโครงสร้างต่อไปนี้
การแสดง JSON |
---|
{ "solverConfig": { object ( |
ช่อง | |
---|---|
solverConfig |
ไม่บังคับ พารามิเตอร์สําหรับเครื่องมือแก้โจทย์ |
shiftTemplates[] |
ต้องระบุ ชุดของเทมเพลตกะที่ระบุกฎสำหรับการสร้างกะ |
employeeDemands[] |
ต้องระบุ ความต้องการของพนักงานทั้งหมดสำหรับการเปลี่ยนแปลงที่ |
เนื้อหาการตอบกลับ
การตอบสนองสำหรับปัญหาการสร้างกะ หาก solutionStatus
แสดงผลเป็น SOLVED
ชุดของการเปลี่ยนแปลงที่ถูกต้องซึ่งเครื่องมือแก้โจทย์จะถูกส่งคืนใน employeeSchedules
พร็อพเพอร์ตี้ต่อไปนี้จะมีการเก็บรักษาเพื่อกำหนดเวลากะการทำงานที่ถูกต้อง
- การปรับแต่ละครั้งที่สร้างใน
employeeSchedules
จะเป็นไปตามกฎที่ระบุไว้ในShiftTemplate
ที่เกี่ยวข้อง - แต่ละเหตุการณ์ที่เลือกไว้ในแต่ละกะจะเป็นไปตามกฎที่ระบุไว้ใน
ShiftTemplate.Event
ที่เกี่ยวข้อง - จำนวนพนักงานทั้งหมดที่มอบหมายให้กับชุดกะที่สร้างจาก ShiftTemplate เดียวกันไม่เกิน
maximumEmployeeCount
ของเทมเพลตนั้น - กลุ่มพนักงานที่ได้รับมอบหมายจะครอบคลุมความต้องการในทุกช่วงเวลา
หากทำสำเร็จ เนื้อหาการตอบกลับจะมีข้อมูลซึ่งมีโครงสร้างดังต่อไปนี้
การแสดง JSON |
---|
{ "solutionStatus": enum ( |
ช่อง | |
---|---|
solutionStatus |
สถานะของโซลูชันที่ส่งคืน หาก |
employeeSchedules[] |
ชุดกะการทำงานที่เกิดขึ้นจากเครื่องมือแก้โจทย์ควบคู่กับจำนวนพนักงานที่มอบหมายให้กับแต่ละกำหนดการ |
demandCoverageViolations[] |
การละเมิดความครอบคลุมของดีมานด์ซึ่งอิงตาม |
SolverConfig
ระบุพารามิเตอร์เพิ่มเติมเพื่อแก้โจทย์การสร้าง Shift
การแสดง JSON |
---|
{ "timeLimit": string, "multiDaySchedule": boolean, "shiftEventsCanChange": boolean } |
ช่อง | |
---|---|
timeLimit |
ระยะเวลาสูงสุดที่เครื่องมือแก้โจทย์ควรใช้กับโจทย์ หากไม่ได้ตั้งค่า ค่าเริ่มต้นจะเป็น 1 นาที การเลือกการจำกัดเวลาควรขึ้นอยู่กับขนาดของปัญหา ตัวอย่างเช่น เมื่อแก้ปัญหาอินสแตนซ์ 7 วันด้วย ค่านี้ไม่ใช่ค่าจำกัดแบบเข้มงวด และไม่ได้พิจารณาค่าใช้จ่ายในการสื่อสาร เวลาในการตอบสนองที่คาดไว้ในการแก้ปัญหาอาจเกินค่านี้เล็กน้อย ระยะเวลาเป็นวินาทีโดยมีเลขเศษส่วนไม่เกิน 9 หลัก ลงท้ายด้วย " |
multiDaySchedule |
หากเป็น "จริง" เครื่องมือแก้โจทย์จะสร้าง |
shiftEventsCanChange |
หากเป็นจริง |
ShiftTemplate
เทมเพลตที่ระบุกฎสำหรับการสร้างกะการทำงาน กะคือหน่วยงานที่ระบุเวลาเริ่มต้น เวลาสิ้นสุด และอาจมีกิจกรรม (เช่น อาหารกลางวัน ช่วงพัก เป็นต้น) ในคำตอบจะมีการเปลี่ยนแปลงการทำงานในวันที่ที่เจาะจง
การแสดง JSON |
---|
{ "id": string, "earliestStartTime": { object ( |
ช่อง | |
---|---|
id |
รหัสที่ไม่ซ้ำกันของเทมเพลตนี้ |
earliestStartTime |
เวลาที่เร็วที่สุดในวันที่สามารถเริ่มต้นกะได้ ค่านี้ถูกระบุด้วยชั่วโมงและนาที ระบบจะไม่สนใจวินาทีและนาโน |
latestStartTime |
เวลาล่าสุดในวันที่สามารถเริ่มต้นกะได้ ค่านี้ถูกระบุด้วยชั่วโมงและนาที ระบบจะไม่สนใจวินาทีและนาโน หากค่านี้น้อยกว่า |
durationMinutes |
ระยะเวลาคงที่ของการเปลี่ยนแปลงที่สร้างโดยเทมเพลตนี้ |
startTimeIncrementMinutes |
เวลาที่เพิ่ม (เป็นนาที) ที่ใช้ในการสร้างชุดเวลาเริ่มต้นที่เป็นไปได้ระหว่าง |
daysOffCountPerWeek |
จำนวนวันที่แน่นอนต่อสัปดาห์ พนักงานจะมีวันหยุดให้หากไม่ได้รับมอบหมายให้เข้ากะที่เริ่มต้นในวันนั้น สัปดาห์คือ 7 วันและเริ่มต้นในวันอาทิตย์ |
eventTemplates[] |
กฎสำหรับการสร้างเหตุการณ์สำหรับกะแต่ละรายการ จะมี 1 เหตุการณ์ที่แน่นอนในแต่ละกะของแต่ละเหตุการณ์ที่ระบุ |
minimumIntereventGapMinutes |
จำนวนนาทีขั้นต่ำระหว่างการสิ้นสุดของเหตุการณ์หนึ่งและการเริ่มต้นเหตุการณ์ถัดไป |
maximumEmployeeCount |
จำนวนพนักงานสูงสุดที่สามารถกำหนดให้กับกะทั้งหมดที่สร้างขึ้นโดยเทมเพลตนี้ |
TimeOfDay
แสดงช่วงเวลาของวัน วันที่และเขตเวลาไม่มีความสำคัญหรือมีการระบุไว้ที่อื่น API อาจเลือกอนุญาตการใช้เวลาไม่กี่วินาที ประเภทที่เกี่ยวข้องคือ google.type.Date
และ google.protobuf.Timestamp
การแสดง JSON |
---|
{ "hours": integer, "minutes": integer, "seconds": integer, "nanos": integer } |
ช่อง | |
---|---|
hours |
ชั่วโมงของวันในรูปแบบ 24 ชั่วโมง ควรอยู่ในช่วง 0 ถึง 23 API อาจเลือกอนุญาตค่า "24:00:00" สำหรับสถานการณ์ต่างๆ เช่น เวลาปิดทำการ |
minutes |
นาทีต่อชั่วโมง ต้องอยู่ระหว่าง 0 ถึง 59 |
seconds |
เวลาเป็นวินาที โดยปกติต้องอยู่ระหว่าง 0 ถึง 59 API อาจอนุญาตให้ใช้ค่า 60 หากอนุญาตให้มีวินาทีอธิกวาร |
nanos |
เศษส่วนของวินาทีในหน่วยนาโนวินาที ต้องมีค่าตั้งแต่ 0 ถึง 999,999,999 |
EventTemplate
เทมเพลตที่ระบุกฎสำหรับการสร้างเหตุการณ์เดียวที่เกิดขึ้นระหว่างกะ กิจกรรมอาจเป็นการประชุม ช่วงพัก อาหารกลางวัน ฯลฯ
การแสดง JSON |
---|
{ "id": string, "minimumMinutesAfterShiftStart": integer, "maximumMinutesAfterShiftStart": integer, "durationMinutes": integer, "startTimeIncrementMinutes": integer } |
ช่อง | |
---|---|
id |
รหัสที่ไม่ซ้ำกันของเทมเพลตนี้ |
minimumMinutesAfterShiftStart |
จำนวนนาทีขั้นต่ำหลังจากเริ่มกะที่กิจกรรมนี้สามารถเริ่มต้นได้ |
maximumMinutesAfterShiftStart |
จำนวนนาทีสูงสุดหลังจากเริ่มกะที่กิจกรรมนี้สามารถเริ่มต้นได้ |
durationMinutes |
ระยะเวลาคงที่เป็นนาทีสำหรับเหตุการณ์นี้ |
startTimeIncrementMinutes |
เวลาที่เพิ่มขึ้น (เป็นนาที) ที่ใช้ในการสร้างชุดเวลาเริ่มต้นของเหตุการณ์ที่เป็นไปได้ระหว่าง |
EmployeeDemand
ระบุจำนวนพนักงานที่ต้องการเพื่อรองรับความต้องการในช่วง DateTime ที่กำหนด
การแสดง JSON |
---|
{ "startDateTime": { object ( |
ช่อง | |
---|---|
startDateTime |
จุดเริ่มต้นของช่วงเวลาสำหรับความต้องการที่ระบุ (รวม) ค่าเหล่านี้จะอ่านได้มากถึงนาที วินาที และหน่วยที่เล็กกว่าทั้งหมดจะถูกละเว้น |
endDateTime |
จุดสิ้นสุดของช่วงเวลาสำหรับความต้องการที่ระบุ (ไม่รวม) ค่าเหล่านี้จะอ่านได้มากถึงนาที วินาที และหน่วยที่เล็กกว่าทั้งหมดจะถูกละเว้น |
employeeCount |
จำนวนพนักงานที่ต้องการเพื่อรองรับความต้องการในช่วงเวลานี้ |
ShiftGenerationSolutionStatus
สถานะโซลูชันที่ระบุในคำตอบของโปรแกรมแก้โจทย์
Enum | |
---|---|
SHIFT_GENERATION_SOLUTION_STATUS_UNSPECIFIED |
สถานะที่ไม่ได้ระบุสำหรับคำตอบ |
SHIFT_GENERATION_SOLVED |
โปรแกรมแก้โจทย์พบวิธีแก้โจทย์ภายในเวลาที่กำหนด |
SHIFT_GENERATION_NOT_SOLVED |
ปัญหาป้องกันไม่ให้เครื่องมือแก้โจทย์สร้างการเปลี่ยนแปลงได้ |
SHIFT_GENERATION_NOT_SOLVED_DEADLINE_EXCEEDED |
ระบบไม่สามารถสร้างการเปลี่ยนแปลงเพื่อครอบคลุมความต้องการภายในระยะเวลาที่กำหนด |
EmployeeSchedule
รายการกะการทำงานตามลำดับของ ShiftTemplate
รายการเดียวที่มอบหมายให้พนักงานหลายคน
การแสดง JSON |
---|
{
"shiftTemplateId": string,
"shifts": [
{
object ( |
ช่อง | |
---|---|
shiftTemplateId |
รหัสของเทมเพลตที่ใช้ในการสร้างชุดกะนี้ |
shifts[] |
รายการกะงานที่มอบหมายให้กับพนักงาน |
employeeCount |
จำนวนพนักงานที่ควรกำหนดให้กะการทำงานชุดนี้ครอบคลุมความต้องการ |
ShiftWithEvents
ระบุวันที่เริ่มต้นและวันที่สิ้นสุดพร้อมกับรายการเหตุการณ์คงที่ของกะการเปลี่ยนแปลงที่เครื่องมือแก้โจทย์สร้างขึ้น
การแสดง JSON |
---|
{ "startDateTime": { object ( |
ช่อง | |
---|---|
startDateTime |
วันที่และเวลาเริ่มต้นของการเปลี่ยนแปลง ค่านี้ระบุถึงระดับนาที ไม่ได้ระบุหน่วยวินาทีและหน่วยที่เล็กกว่า |
endDateTime |
วันที่และเวลาสิ้นสุดของการเปลี่ยนแปลง ค่านี้ระบุถึงระดับนาที ไม่ได้ระบุหน่วยวินาทีและหน่วยที่เล็กกว่า |
events[] |
รายการเหตุการณ์ที่รวมอยู่ในการเปลี่ยนแปลงนี้ ซึ่งแมปกับส่วนที่ตรงกันทั้งหมด และอยู่ในลำดับเดียวกันกับ |
กิจกรรม
ระบุวันที่และเวลาเริ่มต้นและสิ้นสุดของเหตุการณ์ที่เฉพาะเจาะจงในกะที่เครื่องมือแก้โจทย์สร้างขึ้น
การแสดง JSON |
---|
{ "eventTemplateId": string, "startDateTime": { object ( |
ช่อง | |
---|---|
eventTemplateId |
รหัสของเทมเพลตที่ใช้สร้างเหตุการณ์นี้ |
startDateTime |
วันที่และเวลาเริ่มต้นของกิจกรรม ค่านี้ระบุถึงระดับนาที ไม่ได้ระบุหน่วยวินาทีและหน่วยที่เล็กกว่า |
endDateTime |
วันที่และเวลาสิ้นสุดของเหตุการณ์ ค่านี้ระบุถึงระดับนาที ไม่ได้ระบุหน่วยวินาทีและหน่วยที่เล็กกว่า |
DemandCoverageViolation
ระบุการละเมิดความครอบคลุมของดีมานด์สำหรับช่วงเวลาที่ระบุ ความต้องการของพนักงานจะเท่ากันตลอดช่วงเวลาที่ระบุ
การแสดง JSON |
---|
{ "startDateTime": { object ( |
ช่อง | |
---|---|
startDateTime |
วันที่และเวลาเริ่มต้นของช่วงความต้องการ (รวม) ค่านี้ถูกระบุจนถึงระดับนาที |
endDateTime |
วันที่และเวลาสิ้นสุดของช่วงดีมานด์ (ไม่รวม) ค่านี้ถูกระบุจนถึงระดับนาที |
coverageViolation |
การละเมิดการครอบคลุมในช่วงระยะเวลาที่ระบุ ค่าบวกบ่งชี้ว่ามีดีมานด์ที่ครอบคลุมมากเกินไป และค่าลบบ่งบอกว่ามีดีมานด์ที่ครอบคลุม |