看板 Python 關於我們 聯絡資訊
各位好 雖然本職是網路 但最近上司叫我寫個單位內用的簡單排班工具 搜了一陣子之後決定用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://www.ptt.cc/bbs/Python/M.1686896015.A.721.html
lycantrope: 那不就變成分兩組配給AB兩班嗎? 06/16 15:56
elucidator39: ...不說我都沒發現我的問題怪怪的 是「A班做完下次 06/16 16:33
elucidator39: 上班必須要換做B班」 06/16 16:33
lycantrope: 不是很懂or-tools,你可以利用AddBoolOr篩選? 06/16 17:21
elucidator39: 最後是先做一個表示上個班次的變數 再用AddImplict 06/19 14:05
elucidator39: ion對本來的班表做限制後成功解決 06/19 14:05