[問題] 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