2013-12-08 16 views
1

我是一位Java/C/Python开发人员,他正在帮助管理定制产品商店的亲戚。我是新来optaplanner和一般contraint编程,所以我的问题是:OptaPlanner中的多项目作业调度

1)低于在optaplanner 可能可解(或其替代品之一)调度问题?

2.)什么样的算法最适合这个问题?它似乎与(优秀的)OptaPlanner文档中给出的Project job scheduling示例非常相似,但它具有在任何给定时间调度多个项目的附加约束。

简化问题是:

  • 在任何给定时间,有1至Ñ项目。
  • 每个项目都有自己的最后期限。
  • 每个项目都有一系列排序的作业。
  • 就业的领域仅限于切割打磨,并
  • 任何给定的作业可以在序列中出现0到多次(即不是所有的项目都有一个“切割”的工作,但可以有多个“画”作业)
  • 每个项目股份的全球资源,即员工,和ç
  • 员工只能执行切割砂光作业
  • 雇员只能执行切割砂光,和作业
  • 员工C只能执行打磨工作
  • 解决方案只需要是可行的,并非最佳
+1

您可以通过添加具有截止日期的节点将多项目问题映射到单个项目中。然后添加约束条件,即每组任务必须满足截止日期。至于可行性,一旦遇到所有困难的约束,您可以选择终止搜索;之后的一切都是肉汁。在你给出的例子中,每本书都可以看作是一个单独的项目。 –

+0

“......每本书都可以看作是一个单独的项目。”哇 - 我没有仔细阅读过这个问题。谢谢你指出!这些都是很好的建议。 – circwell

回答

1

以OptaPlanner的“项目工作调度”的例子,并相应调整:

  • “有1到n个项目”:“项目作业调度”示例已经有多个项目。
  • “每个项目都有自己的最后期限。”在项目截止日期之前添加一个硬约束,即项目的最后一项工作必须结束。确保惩罚时间太晚(请参阅文档中的“分数陷阱”)。
  • “测序一系列作业”:配置优先约束相应
  • “的任何给定的作业可以出现0到序列中多次”:每个这些时间是在该示例中,术语一个单独的作业。
  • “每个项目共享全球资源,即员工A,B和C”:全球可再生资源
  • 解决方案只需要可行,不是最优的:然而,我仍然继续使用软约束来尽量减少完工时间。

注意:OptaPlanner 6.0已经很好地解决了“项目工作调度”的例子,但6.1版的改进计划可能会进一步提高结果。