0

我是 optaplanner 的新手,但我对调度算法有一定的经验。我正在尝试实现一个非常简单的算法,该算法能够解决我遇到的特定调度问题,我想用 optaplanner 来解决。是的,有一个作业车间调度的例子,但它的模型没有在文档中描述,我需要的是完全不同的。

简而言之,我有多个项目,每个项目都有一个作业,需要在尊重某些时间窗口限制的相等资源池中执行:例如。每个资源仅在其时间窗口内可用于特定作业。

我的模型看起来像这样:

  • 具有以下属性的作业类
  • int minDuration,表示时间窗口内所有资源上作业的最短持续时间。这是一个硬约束
  • TimeInterval timeWindow,我必须在其中处理作业至少 minDuration 的时间窗口
  • 列出<TimeInterval> 有效处理。这可能是决策变量,因为在处理过程中发生变化,时间间隔只是几个开始时间和停止时间。
  • 地图<资源,列表<时间间隔>>资源可用性。这是一个问题约束(硬)。对于每个作业,它会告诉您特定资源何时可用。

分数计算应该很简单,但我需要一些关于算法其余部分的提示和专家的一些建议。我需要一些额外的代码来构建这些间隔吗?你觉得我的模型怎么样?我需要构建一些可以正常工作的东西,然后我会担心优化。任何帮助深表感谢!

编辑:替代模型:每个作业都代表在其可用性槽中对资源的操作,因此我们有多个作业,一个用于资源上的每个可用性槽。想象一下贪婪的初始分配,其中每个作业始终使用所有可用资源。计划变量是在有限范围内变化的优先级整数。此优先级决定了作业获取资源访问权限的方式(优先级越高)。该解决方案意味着根据优先级计算时隙,分数取决于问题。让我们看看它是否有效。

4

0 回答 0