【发布时间】:2018-11-16 01:20:05
【问题描述】:
我最近才开始学习使用 OptaPlanner。如果下面有任何技术上不准确的描述,请原谅我。
基本上,我在一堆机器上分配多个任务时遇到问题。任务有一些优先级限制,例如某些任务不能在另一个任务结束之前开始。此外,每个任务只能在某些机器上运行。目标是最小化所有这些任务的制造时间。
我用时间链模式对这个问题进行了建模,其中每台机器都是锚点。但问题是由于优先级限制,某些机器上的任务可能不会按顺序执行。例如,任务 B 只能在任务 A 完成后启动,而任务 A 和 B 分别在机器 I 和 II 上执行。这意味着在机器 I 上执行任务 A 期间,如果机器 II 上没有其他任务可以运行,则机器 II 只能保持空闲状态,直到任务 A 完成,此时可以在其上启动任务 B。这种差距不是确定性的,因为它取决于任务 A 相对于这个例子的持续时间。根据 OptaPlanner 的教程,似乎应该针对此类问题引入额外的规划变量间隙。但是我现在很难对这个差距变量进行建模。一般来说,如何使用时间链模式整合模型中的间隙变量?一些详细的解释甚至是一个简单的例子将不胜感激。
此外,我实际上不确定时间链模式是否适合建模这种任务分配问题,或者我只是使用了一种完全不合适的方法。有人可以对此有所了解吗?提前致谢。
【问题讨论】:
-
我认为时间段模式会更合适,因为您可以编写规则来强制某些任务不能在同一个时间段中。但是你的任务必须有相同的长度(我猜他们没有)。或者甚至更好,使用具有精细时间粒度的时间粒度模式(尽管这可能会更慢,如文档中所述)。我认为,通过时间锁链将非常困难。
标签: optaplanner