护士排班问题中是否存在限制连续轮班数量的约束?

时间:2019-05-20 15:32:27

标签: python constraints or-tools

按照google OR工具教程(https://developers.google.com/optimization/scheduling/employee_scheduling)中的护士调度示例,我正在尝试为问题添加更多约束。

例如,有24个班次来满足诊所24小时的人员配备; (1)护士不能连续工作超过4个班次而没有至少1个班次休息时间;(2)护士需要每16个班次睡8个班次。

如何实现这两个约束?

如果在OR工具中无法实现,还有另一种方法可以实现吗?

我只能修补累积的约束:

每个护士每周最多工作6天。

for j in range(num_nurses):
    solver.Add(solver.Sum([shifts[(j, i)] > 0
                           for i in range(num_days)]) <= 6)

感谢有人可以指导我添加两个约束!谢谢!

1 个答案:

答案 0 :(得分:0)

是,但在此示例中不是。 请查看以下更完整的轮班计划示例:

https://github.com/google/or-tools/blob/stable/examples/python/shift_scheduling_sat.py