根据here的护士安排示例,我正在尝试为问题添加更多约束。例如:护士A周一不能轮班2和3,护士B只能在所有日子里轮班1和3班。
如何实现这样的约束呢?
如果在OR工具中无法实现,请提供有关如何实现此类内容的建议。
答案 0 :(得分:2)
对于您的示例,您需要做的就是添加一个约束,以防止将转移分配给该特定护士:
solver.Add(shifts[(2, 1)] != 3) # Nurse 2 cannot be assigned shift 3 on day 1
更一般地说:
solver.Add(shifts[(j, i)] != n) # Nurse j cannot be assigned shift n on day i
显然,如果可能的话,你会想要在循环中这样做以简化它。