Tôi đang làm việc trên một ứng dụng mà tôi cần tự động lên lịch công việc cho các thành viên theo lịch trình luân phiên. Tôi không giỏi giải thích các quy tắc, vì vậy dưới đây là một số dữ liệu cần trợ giúp:Vấn đề về lập kế hoạch công việc
Vị trí: Chức vụ, với các quy tắc như Thứ Hai và Thứ Tư hàng tuần.
Danh mục: Một tập hợp các vị trí
Nhóm: Một nhóm vị trí khác. Không thể chỉ định các vị trí trong cùng một nhóm trong cùng một ngày
Thành viên: Người dùng được chỉ định cho các vị trí vào một ngày nhất định.
Đối với mỗi ngày trong tháng, các thành viên được chỉ định cho các vị trí (cả theo thứ tự tăng dần). Nếu một thành viên được gán cho một vị trí trong một thể loại, lần sau khi một vị trí trong cùng một danh mục xuất hiện, thành viên tiếp theo theo thứ tự bảng chữ cái (hoặc phần đầu của danh sách) được gán ví dụ.
Thành viên: M1, M2, M3, M4
Positions trong loại C1: P1, P2, P3
thành viên trong vị trí P1: M1, M2, M3, M4
thành viên trong vị trí P2: M1, M2, M3
Thành viên ở vị trí P2: M1, M3, M4
Nếu M1 được gán cho P1, nếu P2 đến tiếp theo, M2 sẽ được chỉ định. Một lớp phức tạp bổ sung được giới thiệu trong trường hợp nếu P3 đến tiếp theo, M3 sẽ được gán. Hệ thống phải theo dõi thực tế là M2 bị 'bỏ qua' và gán M2 tiếp theo nếu có, sau đó gán M4 tiếp theo hoặc chờ cho đến khi nó đến vị trí mà M2 khả dụng (điều này trở nên phức tạp hơn khi có nhiều 'bị bỏ qua ' các thành viên).
Thành viên cũng sẽ bị bỏ qua nếu anh ấy cho biết anh ấy sẽ không có mặt vào ngày đó. Hệ thống cần đặt ưu tiên vào các thành viên bị bỏ qua, bằng cách nào đó xác định chúng khi chúng xuất hiện và sau đó chuyển sang người hợp lý tiếp theo trong danh sách. Bỏ qua cũng áp dụng cho các nhóm do xung đột ngày.
Tôi đã có một giải pháp tạm thời [và lộn xộn] mà tôi không còn hiểu được nữa mặc dù tôi có nhiều nhận xét trong đó giải thích từng bước. Điểm yếu của nó là đối phó với các thành viên bị bỏ qua.
Nếu bạn định viết mã này, bạn sẽ làm thế nào? Tôi đang thực hiện điều này trong PHP nhưng mã giả cũng sẽ hoạt động.
Có giờ cho các vị trí cần được xem xét không? Khi bạn nói các vị trí trong cùng một nhóm không thể được chỉ định trong cùng một ngày, bạn có nghĩa là chúng không thể được gán cho bất kỳ ai (nghĩa là chỉ một vị trí trong một nhóm có thể được điền vào một ngày nhất định) hoặc một người nào đó được chỉ định cho một vị trí trong một nhóm không thể được gán cho bất kỳ nhóm nào khác? – outis
Tôi có nghĩa là ai đó có thể điền vào hai vị trí trong cùng một ngày trừ khi chúng xảy ra trong cùng một nhóm. – Zahymaka