พิจารณาศูนย์ติดต่อที่คุณต้องการสร้างการเปลี่ยนแปลงที่ ก็ครอบคลุมความต้องการพนักงานด้วย ศูนย์ติดต่อให้บริการทุกวันตลอด 24 ชั่วโมง และ จำนวนพนักงานที่มีความต้องการจะเปลี่ยนแปลงไปเมื่อเวลาผ่านไป การว่าจ้างศูนย์ติดต่อ ทั้งพนักงานประจำและพาร์ทไทม์
พนักงานเต็มเวลาเข้ากะ 9 ชั่วโมง มีช่วงพัก 1 ชั่วโมง 4 หรือ 5 ชั่วโมง หลังจากเริ่มเข้ากะ และสามารถเริ่มกะในเวลาระหว่าง 5.00 น. ถึง 12:00 น. พนักงานพาร์ทไทม์ทำกะ 4 ชั่วโมงและพักสายตา 15 นาที สิ้นสุดชั่วโมงการทำงานที่สอง และสามารถเริ่มกะได้ตลอดเวลา ในทั้ง 2 รูปแบบ กรณีต่างๆ จำนวนเวลาเริ่มต้นการเปลี่ยนแปลงที่เป็นไปได้จะคิดเพิ่มครั้งละ 15 นาที
ศูนย์ติดต่อดังกล่าวสนใจที่จะวางแผนข้อกำหนดด้านแรงงานสำหรับ ในอีก 2 วันถัดไป โดยพิจารณาว่าอาจมีสูงสุด 20 คน จากการทำงานแบบเต็มเวลา และพนักงานพาร์ทไทม์ 40 คน
เทมเพลต Shift สำหรับพนักงานประจำและพนักงานพาร์ทไทม์
กฎที่กำหนดการเปลี่ยนแปลงที่ถูกต้องสามารถแสดงด้วย shift เทมเพลต ภายในเทมเพลต Shift สามารถใช้แทนแนวคิดการหยุดพักได้ ด้วยเทมเพลตเหตุการณ์ เช่น เทมเพลต Shift สำหรับแบบเต็มเวลา กะของพนักงานจะแสดงเป็น
{
"id": "full-time",
"earliestStartTime": {
"hours": 5
},
"latestStartTime": {
"hours": 12
},
"durationMinutes": 540,
"startTimeIncrementMinutes": 15,
"eventTemplates": [
{
"id": "full-time-break",
"minimumMinutesAfterShiftStart": 240,
"maximumMinutesAfterShiftStart": 300,
"durationMinutes": 60,
"startTimeIncrementMinutes": 60
}
],
"maximumEmployeeCount": 20
}
ในทางเดียวกัน เทมเพลตกะการทำงานสำหรับกะการทำงานของพนักงานพาร์ทไทม์จะแสดงเป็น
{
"id": "part-time",
"earliestStartTime": {},
"latestStartTime": {
"hours": 23,
"minutes": 59
},
"durationMinutes": 240,
"startTimeIncrementMinutes": 15,
"eventTemplates": [
{
"id": "part-time-break",
"minimumMinutesAfterShiftStart": 120,
"maximumMinutesAfterShiftStart": 120,
"durationMinutes": 15,
"startTimeIncrementMinutes": 0
}
],
"maximumEmployeeCount": 40
}
ความต้องการของพนักงานเมื่อเวลาผ่านไป
ความต้องการสำหรับพนักงานจะแสดงด้วยรายการ EmployeeDemand
โดยที่องค์ประกอบแต่ละอย่างเหล่านี้มีลักษณะเป็นช่วงเวลาและพนักงาน
นับจำนวน ในตัวอย่างนี้ ความต้องการมีความผันผวนระหว่างพนักงาน 4 ถึง 13 คนในช่วง
ระยะเวลาสองวัน โดยแสดงเป็น:
{
...
"employeeDemands": [
{
"startDateTime": {
"year": 2024,
"month": 5,
"day": 20
},
"endDateTime": {
"year": 2024,
"month": 5,
"day": 20,
"hours": 12
},
"employeeCount": 8
},
{
"startDateTime": {
"year": 2024,
"month": 5,
"day": 20,
"hours": 12
},
"endDateTime": {
"year": 2024,
"month": 5,
"day": 20,
"hours": 20
},
"employeeCount": 12
},
{
"startDateTime": {
"year": 2024,
"month": 5,
"day": 20,
"hours": 20
},
"endDateTime": {
"year": 2024,
"month": 5,
"day": 21,
"hours": 6
},
"employeeCount": 4
},
{
"startDateTime": {
"year": 2024,
"month": 5,
"day": 21,
"hours": 6
},
"endDateTime": {
"year": 2024,
"month": 5,
"day": 22,
"hours": 0
},
"employeeCount": 13
}
]
}
ตัวอย่างคำขอที่สมบูรณ์
{
"solverConfig": {
"timeLimit": "30s"
},
"shiftTemplates": [
{
"id": "full-time",
"earliestStartTime": {
"hours": 5
},
"latestStartTime": {
"hours": 12
},
"durationMinutes": 540,
"startTimeIncrementMinutes": 15,
"eventTemplates": [
{
"id": "full-time-break",
"minimumMinutesAfterShiftStart": 240,
"maximumMinutesAfterShiftStart": 300,
"durationMinutes": 60,
"startTimeIncrementMinutes": 60
}
],
"maximumEmployeeCount": 20
},
{
"id": "part-time",
"earliestStartTime": {},
"latestStartTime": {
"hours": 23,
"minutes": 59
},
"durationMinutes": 240,
"startTimeIncrementMinutes": 15,
"eventTemplates": [
{
"id": "part-time-break",
"minimumMinutesAfterShiftStart": 120,
"maximumMinutesAfterShiftStart": 120,
"durationMinutes": 15,
"startTimeIncrementMinutes": 0
}
],
"maximumEmployeeCount": 40
}
],
"employeeDemands": [
{
"startDateTime": {
"year": 2024,
"month": 5,
"day": 20
},
"endDateTime": {
"year": 2024,
"month": 5,
"day": 20,
"hours": 12
},
"employeeCount": 8
},
{
"startDateTime": {
"year": 2024,
"month": 5,
"day": 20,
"hours": 12
},
"endDateTime": {
"year": 2024,
"month": 5,
"day": 20,
"hours": 20
},
"employeeCount": 12
},
{
"startDateTime": {
"year": 2024,
"month": 5,
"day": 20,
"hours": 20
},
"endDateTime": {
"year": 2024,
"month": 5,
"day": 21,
"hours": 6
},
"employeeCount": 4
},
{
"startDateTime": {
"year": 2024,
"month": 5,
"day": 21,
"hours": 6
},
"endDateTime": {
"year": 2024,
"month": 5,
"day": 22,
"hours": 0
},
"employeeCount": 13
}
]
}
ตัวอย่างคำตอบ
การตอบกลับของเครื่องมือแก้โจทย์จะประกอบด้วยรายการกำหนดการของพนักงานพร้อมด้วย จำนวนพนักงานที่ต้องการ หากครอบคลุมความต้องการ เป็นไปไม่ได้ การตอบกลับจะแสดงการละเมิดทุกครั้งที่ดำเนินการ ช่วงเวลา
ตัวอย่างต่อไปนี้แสดงหนึ่งในตารางเวลาของพนักงานที่สร้างขึ้นสำหรับ พนักงานเต็มเวลา:
{
"solutionStatus": "SHIFT_GENERATION_SOLVED",
"employeeSchedules": [
{
"shiftTemplateId": "full-time",
"shifts": [
{
"startDateTime": {
"year": 2024,
"month": 5,
"day": 21,
"hours": 7,
"minutes": 30
},
"endDateTime": {
"year": 2024,
"month": 5,
"day": 21,
"hours": 16,
"minutes": 30
},
"events": [
{
"startDateTime": {
"year": 2024,
"month": 5,
"day": 21,
"hours": 12,
"minutes": 30
},
"endDateTime": {
"year": 2024,
"month": 5,
"day": 21,
"hours": 13,
"minutes": 30
},
"eventTemplateId": "full-time-break"
}
]
}
],
"employeeCount": 1
},
...
]
...
}