python - Google Or-Tools Employee Scheduling 。条件无法正常工作
问题描述
我正在使用那个护士调度示例。我有 3 名员工 2 班 7 天,我有一个条件,如果员工在 1 班工作,他/她不能在第二天的 0 班工作。这是我的代码,它不起作用。
for n in all_nurses:
for d in all_days:
model.Add(sum(shifts[(n, d, s)] for s in range(0,1))+sum(shifts[(n, (d+1)%6, s)] for s in range(1,2)) <= 1)
这就是输出。护士 2 在第 0 天和第 1 班工作,第二天也在第 1 班工作
解决方案
根据您的约束:
for n in all_nurses:
for d in all_days:
model.Add(sum([shifts[(n, d, 1)], shifts[(n, (d+1)%7, 0)]]) <= 1)
更好的配方是
for n in all_nurses:
for d in all_days:
model.AddBoolOr([shifts[(n, d, 1)].Not(), shifts[(n, (d + 1) % 7, 0)].Not()])
推荐阅读
- r - 有没有办法将数组用作 Shiny 元素的 inputId?
- c - 比较C中的两个未定义符号
- reactjs - 当我点击任何手风琴时,每个手风琴都会打开:react js
- javascript - 根据 URL / BootstrapVue 填写输入字段
- java - Android:setPivotx() 后 x 位置未更新
- spring - 为什么字符串没有通过 Model.addObject 添加到属性中?
- java - 如何在 selenium(java) 中选择多个复选框?
- android - 在活动和应用程序类中使用伴生对象是一种好方法吗?
- html - 发送带有图像背景的电子邮件
- python - 我如何解决 TypeError:'function' 对象不可下标