optaplanner:建模简单的抢占式调度

时间:2013-12-17 09:12:57

标签: job-scheduling optaplanner

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

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

我的模型看起来像这样:

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

分数计算应该很简单,但我需要对算法的其余部分以及专家的一些建议提出一些建议。我是否需要一些额外的代码来构建这些间隔? 你怎么看待我的模特?我需要构建一些可行的东西,然后我会担心优化。 非常感谢任何帮助!

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

0 个答案:

没有答案