[问题] google or-tools排班问题

楼主: elucidator39 (结月)   2023-06-16 14:13:27
各位好
虽然本职是网络 但最近上司叫我写个单位内用的简单排班工具
搜了一阵子之后决定用or-tools做
骨架是套官网那个简单版本的排班工具
https://developers.google.com/optimization/scheduling/employee_scheduling#assign_nurses_to_shifts
再加上参考这个
https://blog.csdn.net/weixin_42608414/article/details/110447228
只用一个BoolVar跟><=实做了一些简单的条件约束
平均分配班次, 上班间隔, 平日假日班...之类的
现在的问题是 想做避免连续排班的部分
用“连续”相关的关键字
查到网络上提供的方法都是在讲“昨天A班不接今天B班”的约束(同blog的约束6)
但我想要做的是 “不管上班日期是否连续 A班上完下次上班都不要接B班”
查过感觉OnlyEnforceIf之类的可以做到,但or-tool生出来的物件都没有办法单独抓
value出来当成key用或做if判断之类的,弄到头很痛还是做不出来。
烦请各位前辈解惑 谢谢
作者: lycantrope (阿宽)   2023-06-16 15:56:00
那不就变成分两组配给AB两班吗?
楼主: elucidator39 (结月)   2023-06-16 16:33:00
...不说我都没发现我的问题怪怪的 是“A班做完下次上班必须要换做B班”
作者: lycantrope (阿宽)   2023-06-16 17:21:00
不是很懂or-tools,你可以利用AddBoolOr筛选?
楼主: elucidator39 (结月)   2023-06-19 14:05:00
最后是先做一个表示上个班次的变量 再用AddImpliction对本来的班表做限制后成功解决

Links booklink

Contact Us: admin [ a t ] ucptt.com