[英]Overriding a constraint in Google OR-tools
我正在使用Google OR工具制作调度程序。 在这种情况下,工人必须有最小的轮班长度(在这里说其为2),不允许任何小于此长度的轮班长度(类似于or-tool提供的示例)。 因此,例如:
允许working - working - working - not working
,但是:
not working - working - not working
,是不允许的
这是我想要的行为。 但是,我在模型中实现了多个角色,并且在必要时希望我的员工能够在他们之间进行切换。 问题是如果我有2个角色(R1和R2),我希望能够允许这样的情况:
R1: working - not working - not working
R2: not working - working - working
在这两个角色之间,员工的工作量超过最低限度。 似乎这不是一个允许的顺序,因为在工作角色1期间,员工的工作时间少于最小轮班时间。
如果您仅在一个角色上工作,我想不出一种方法来限制转变,但是如果您要工作2,则可以放宽该约束。您可以始终将其作为一种软约束,但是如果您仅在一个角色上工作。在一天中,您确实必须遵守最小班次长度规则。 有没有办法“矛盾”一个特定的硬约束? 即,对我来说,是一种根据所有可能的角色切换构建序列并将其包含在优化程序搜索中的方法?
为每位员工创建一个BoolVar,如果他仅作为1个角色,则为true,然后将OnlyEnforceIf添加到已创建的BoolVar的约束中
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.