Pulp Challenges

Task #010: Shift Scheduling – Tối Ưu Lịch Trực Ban Đêm Và Trực Chiến Trong N Tuần

Độ Khó: 3/5

Task Phân Công Lịch Trực Thực Tế

  • Có 23 nhân viên với ID từ 1 đến 23. Lập lịch trực trong nhiều tuần (số tuần do bạn nhập vào, ví dụ 5 tuần), với hai loại công việc hàng ngày:
    • Trực ban đêm: 1 người mỗi ngày.
      • Mỗi tuần, 7 nhân viên được phân công trực ban đêm theo thứ tự tuần tự (cuốn chiếu) dựa trên ID.
      • Quy luật cuốn chiếu:
        • Tuần 1: ID 1 đến 7 (ngày 1: 1, ngày 2: 2, …, ngày 7: 7).
        • Tuần 2: ID 8 đến 14 (ngày 1: 8, ngày 2: 9, …, ngày 7: 14).
        • Tuần 3: ID 15 đến 21.
        • Tuần 4: ID 22, 23, rồi quay lại 1 đến 5 (vì vượt quá 23).
        • Tuần 5: ID 6 đến 12, và tiếp tục quay vòng như vậy.
    • Trực chiến: 2 người mỗi ngày.
      • Mỗi tuần, có một tập hợp nhân viên được xác định trước (các nhân viên còn lại sau khi phân công tuần tự trực đêm), từ đó chọn ngẫu nhiên 2 người mỗi ngày.
      • Quy luật xác định pool:
        • Tuần 1: ID từ 8 đến 23. Vì ID từ 1 đến 7 đã được phân trực đêm.
        • Tuần 2: ID từ 15 đến 23 và 1 đến 7. Vì ID từ 8 đến 14 đã được phân trực đêm.
        • Tuần 3: ID từ 22 đến 23 và 1 đến 14. Vì ID từ 15 đến 21 đã được phân trực đêm.
        • Tuần 4: ID từ 6 đến 21. Vì ID 22, 23 và 1, 2, 3, 4, 5 đã được phân trực đêm.
        • Tuần 5: ID từ 13 đến 23 và 1 đến 5. Vì ID từ 6 đến 12 đã được phân trực đêm.
      • Mỗi ngày trong tuần, chọn 2 người khác nhau từ pool này.
      • Mỗi nhân viên trong pool chỉ được trực chiến tối đa 1 lần trong tuần.
    • Ràng buộc bổ sung:
      • Nhân viên trực ban đêm không được trực chiến trong cùng ngày.
      • Phân công cần công bằng: số lần trực chiến của mỗi nhân viên trong toàn bộ các tuần phải cân bằng nhau.