轮班最低护士

问题描述 投票:1回答:1

我正在尝试使用此链接的第一个示例: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,则一无所获。

job-scheduling constraint-programming or-tools
1个回答
2
投票

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

对于一个更有趣的起点,我建议你看看:

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

此示例更复杂,并包含更适合移位调度的特定约束。

© www.soinside.com 2019 - 2024. All rights reserved.