OptaPlanner中的多项目作业调度

时间:2013-12-08 15:27:28

标签: java optaplanner

我是一名Java / C / Python开发人员,希望协助管理自定义产品商店的亲戚。我是opastplanner和一般编程的新手,所以我的问题是:

1。)optaplanner(或其中一个替代方案)中可能下面的调度问题是否可解决?

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

简化问题是:

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

1 个答案:

答案 0 :(得分:1)

采用OptaPlanner的“项目作业调度”示例并相应地进行调整:

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

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