作者elucidator39 (タイヤ)
看板Python
标题[问题] google or-tools排班问题
时间Fri Jun 16 14:13:27 2023
各位好
虽然本职是网路 但最近上司叫我写个单位内用的简单排班工具
搜了一阵子之後决定用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判断之类的,弄到头很痛还是做不出来。
烦请各位前辈解惑 谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.239.162.154 (日本)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1686896015.A.721.html
1F:→ lycantrope: 那不就变成分两组配给AB两班吗? 06/16 15:56
2F:→ elucidator39: ...不说我都没发现我的问题怪怪的 是「A班做完下次 06/16 16:33
3F:→ elucidator39: 上班必须要换做B班」 06/16 16:33
4F:→ lycantrope: 不是很懂or-tools,你可以利用AddBoolOr筛选? 06/16 17:21
5F:→ elucidator39: 最後是先做一个表示上个班次的变数 再用AddImplict 06/19 14:05
6F:→ elucidator39: ion对本来的班表做限制後成功解决 06/19 14:05