作者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/m.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