Google 或工具:具有可用性约束的员工排班
Google OR Tools: Employee Scheduling with availability constraint
根据 here 中的护士调度示例,我正在尝试为问题添加更多约束。例如:护士A不能在周一工作2班和3班,护士B全天只能工作1班和3班。
如何实施这样的约束?
如果在 OR-tools 中无法实现,请就如何实现类似的东西提出建议。
对于您的示例,您需要做的就是添加一个约束,以防止将班次分配给该特定护士:
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
显然,如果可能的话,您会希望在循环中执行此操作以简化它。
根据 here 中的护士调度示例,我正在尝试为问题添加更多约束。例如:护士A不能在周一工作2班和3班,护士B全天只能工作1班和3班。
如何实施这样的约束?
如果在 OR-tools 中无法实现,请就如何实现类似的东西提出建议。
对于您的示例,您需要做的就是添加一个约束,以防止将班次分配给该特定护士:
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
显然,如果可能的话,您会希望在循环中执行此操作以简化它。