轮班最低护士人数

Minimum nurses by shift

我正在尝试使用此 link 的第一个示例:https://developers.google.com/optimization/scheduling/employee_scheduling

我希望至少有两名轮班护士。 所以我修改了行:

model.Add(sum(shifts[(n, d, s)] for n in all_nurses) == 1)

作者:

model.Add(sum(shifts[(n, d, s)] for n in all_nurses) == 2)

然后我把护士人数增加到8人

很遗憾,该程序找不到任何解决方案。 但它应该有足够的护士来做这件事。 你有好主意吗 ?谢谢!

PS : 如果我将天数设置为 1,它可以工作,但如果它优于 1,则什么也找不到。

其实这个例子是有问题的,需要更新。问题在于它假设可能轮班的数量等于护士的数量,因此每个班次都由一名护士执行。

更有趣的起点,建议你看看:

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

此示例更为复杂,包含更适合排班的特定约束。