请教以下排班需求的算法或解决方案啊!
排班约束条件
1.值班岗位可分为 (班次要求还可以再增加)
白班:班次1(8小时)、班次2(8小时)、班次3(8小时)
晚班:班次4(16小时)、班次5(6小时)、班次6(6小时)
晚班班次5、班次6为夜陪班,晚班班次4为夜睡班,白班和晚班(班次2和班次5)一起上的为直陪班,白班和晚班(班次1和班次4)一起上的为直睡班
上白班不补休;
夜陪班补休1天;
夜睡班补休1-2天;
直陪班补休1-2天;
直睡班补休2天
2.星期一至五安排为白班夜班交叉形式(如上完白班下次就上晚班),星期六、日安排为直班形式
3.保证值班时间平衡
4.人员不足情况下,岗位可设置为空
5.最好能保证每个人隔三个星期就有一次双休
6.保证每个星期的排班情况都不一样
人员:1,2,3,4,5,6,7,8,9
日期班次1班次2班次3班次4班次5班次6
星期一123456
星期二789123
星期三456789
星期四123456
星期五789123
星期六456456
星期日789789