OR-Tools 员工排班:最大化连续轮班

OR-Tools employee scheduling: maximising consecutive shifts

我一直在研究 OR-Tools Employee Scheduling 示例,并想对其进行更改,以便该模型允许员工每天分配多个班次,同时优先考虑解决方案 在给定日期的跨度内为员工分配连续轮班的地方。允许多次轮班似乎很简单,但我如何定义一个更喜欢连续轮班的 objective 函数?我不希望连续性成为解决方案的硬约束。

首先忽略护士排班的例子,看shift_scheduling_sat.py example.

您可以尝试更多类型的班次。

如果您真的想要灵活的班次,请定义连续班次的最大数量,每个班次都有开始和结束。

订购它们:start1 <= end1 < start2 <= end2 ....

强制每个空班次为午夜 -> 午夜。然后从那里开始。但我会推荐更多的固定班次。