Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java OptaPlanner中的多项目作业调度_Java_Optaplanner - Fatal编程技术网

Java OptaPlanner中的多项目作业调度

Java OptaPlanner中的多项目作业调度,java,optaplanner,Java,Optaplanner,我是一名Java/C/Python开发人员,希望帮助一位管理定制产品商店的亲戚。我一般不熟悉optaplanner和contraint编程,所以我的问题是: 1.)以下调度问题是否可能在optaplanner(或其备选方案之一)中解决 2.)什么样的算法最适合这个问题?它似乎与(优秀的)OptaPlanner文档中给出的示例非常相似,但它还有一个额外的限制,即在任何给定时间安排多个项目 简化的问题是: 在任何给定时间,都有1到n个项目 每个项目都有自己的截止日期 每个项目都有一系列按顺序排列的

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

1.)以下调度问题是否可能在optaplanner(或其备选方案之一)中解决

2.)什么样的算法最适合这个问题?它似乎与(优秀的)OptaPlanner文档中给出的示例非常相似,但它还有一个额外的限制,即在任何给定时间安排多个项目

简化的问题是:

  • 在任何给定时间,都有1到n个项目
  • 每个项目都有自己的截止日期
  • 每个项目都有一系列按顺序排列的作业
  • 作业领域仅限于切割打磨绘画
  • 任何给定作业可以在序列中出现0到多次(即并非所有项目都有“切割”作业,但可能有多个“绘制”作业)
  • 每个项目共享全球资源,即员工ABC
  • 员工A只能执行切割打磨作业
  • 员工B只能执行切割打磨喷漆工作
  • 员工C只能执行打磨喷漆工作
  • 解决方案只需要是可行的,而不是最优的
以OptaPlanner的“项目作业调度”为例,对其进行相应调整:

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

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

您可以通过添加具有截止日期的节点,将多项目问题映射到单个项目中。然后添加约束,即每组任务必须满足截止日期。至于可行性,您可以选择在满足所有硬约束后终止搜索;之后的一切都是肉汁。在你给出的例子中,每本书都可以被视为一个独立的项目。”…每本书都可以被视为一个独立的项目。”哇-我没有仔细阅读这个问题。谢谢你指出这一点!这些都是很好的建议。