解决一个排班问题(建模,算法,java实现)
※排班分三班,早班,晚班,夜班。
工人分“高级”和“新人”
※以31天为一月,医院有16名护士为例。
※平时早班需要6-9人,晚班需要2人,夜班需要2人。早班需要2名以上“高级工人”。晚班,夜班各需要1名以上“高级工人”。
【硬性条件】
每一班(早,晚,夜班)分配的工人数要满足人数要求。
【柔性条件】
1. 尽量不要分配三连班,尽量避免早晚夜,晚夜早,夜早晚班出现。
2. 尽量避免工人连续工作5天以上。(被分配了一天中的任意一班视为当天有工作)。
3. 尽量避免工人连续休息5天以上。(一天中三班均未分配工作任务视为当天休息)。
4. 工人可以提出自己需要特殊休息的时间,排班时要尽量避开。
5. 每个工人被分配的夜班数尽量均衡。计算工人平均的夜班数,求出每个工人夜班数与平均夜班数的差值和,差值和越小为越优。
【目标】
在满足硬性条件的前提下,尽量满足柔性条件,找出最适排班。