2

我是一名 Java/C/Python 开发人员,希望帮助一位管理定制产品商店的亲戚。我是 optaplanner 和一般约束编程的新手,所以我的问题是:

1.) 下面的调度问题是否可以在optaplanner(或其替代方案之一)中解决?

2.) 哪种算法最适合这个问题?它似乎与(优秀的)OptaPlanner 文档中给出的项目作业调度示例非常相似,但它具有在任何给定时间调度多个项目的额外限制。

简化的问题是:

  • 在任何给定时间,都有 1 到n个项目。
  • 每个项目都有自己的截止日期。
  • 每个项目都有一系列有序的工作。
  • 工作领域仅限于切割打磨涂漆
  • 任何给定的工作都可以在序列中出现 0 到多次(即并非所有项目都有“切割”工作,但可能有多个“绘画”工作)
  • 每个项目共享全球资源,即员工A BC
  • 员工只能进行切割打磨工作
  • 员工B只能进行切割打磨油漆工作。
  • 员工C只能进行打磨油漆工作
  • 解决方案只需要是可行的,而不是最优的
4

1 回答 1

1

以 OptaPlanner 的“项目作业调度”为例并进行相应调整:

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

注意:OptaPlanner 6.0 已经很好地解决了“项目作业调度”示例,但是为 6.1 计划的改进可能会进一步改善结果。

于 2013-12-09T08:29:41.087 回答