首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >覆盖Google OR-tools中的约束

覆盖Google OR-tools中的约束
EN

Stack Overflow用户
提问于 2019-07-30 21:43:04
回答 1查看 164关注 0票数 0

我正在使用Google OR-tools制作一个日程安排程序。在这种情况下,工人有一个最小的班次长度(假设这里是2),任何小于这个值的班次长度都是不允许的(类似于或-工具提供的例子)。所以,举个例子:

允许使用working - working - working - not working,但是:

不允许使用not working - working - not working

这是我想要的行为。然而,我已经在我的模型中实现了多个角色,如果需要的话,我希望我的员工能够在它们之间切换。的问题是,如果我有两个角色(R1和R2),我希望能够允许这样的情况:

代码语言:javascript
复制
R1: working - not working - not working

R2: not working - working - working

在这里,在这两个角色之间,员工的工作超过了最低要求。但这似乎不是允许的顺序,因为在工作角色1期间,员工的工作时间少于最小班次长度。

如果你只工作一个角色,我想不出一种方法来限制轮班,但如果你要工作2个角色,就允许放松这个限制。你可以一直使用它作为软约束,但如果你一天只工作1个角色,你真的必须遵守最小轮班长度规则。有没有办法“反驳”一个特定的硬约束?也就是说,有一种方法可以让我从所有可能的角色切换中构造序列,并允许它们被包括在优化器搜索中?

EN

回答 1

Stack Overflow用户

发布于 2019-07-30 23:44:22

对于每个员工,如果他只作为1个角色工作,则创建一个为真的BoolVar,然后使用创建的BoolVar将OnlyEnforceIf添加到您的约束中

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57273191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档