Algorithm 具有依赖和工作者约束的任务调度优化
我们面临一个任务调度问题 规格Algorithm 具有依赖和工作者约束的任务调度优化,algorithm,optimization,scheduling,Algorithm,Optimization,Scheduling,我们面临一个任务调度问题 规格 我们有N个可用的工作人员,以及一个任务列表 每个任务-->Ti需要Di(即工人*天)才能完成(需求),并且只能容纳不超过Ci工人同时完成(容量) 并且某些任务只能在其他任务完成后启动(依赖关系) 目标是通过将工人分配到这些序列,实现总最小持续时间 例子 工人人数s:10 TAK列表:[A、B、C] 需求:[100 50 10]-单位:工作日(任务A需要100个工作日才能完成,B需要50个工作日,C需要10个工作日) 容量:[10 10 2]-单位:工人(任务
- 我们有N个可用的工作人员,以及一个任务列表
- 每个任务-->
需要Ti
(即工人*天)才能完成(需求),并且只能容纳不超过Ci工人同时完成(容量)Di
- 并且某些任务只能在其他任务完成后启动(依赖关系)
- 目标是通过将工人分配到这些序列,实现总最小持续时间
- 工人人数s:10
- TAK列表:
[A、B、C]
- 需求:
-单位:工作日(任务A需要100个工作日才能完成,B需要50个工作日,C需要10个工作日)[100 50 10]
- 容量:
-单位:工人(任务A只能有10名工人同时处理,B只能容纳10名,C只能容纳2名)[10 10 2]
- 依赖关系:
-A和B可以随时启动,C只能在B完成后启动{A:null,B:null,C:B}
- 首先分配B 10名工人,需要50/10=5天才能完成。然后在第5天,我们将2名工人分配给C,将8名工人分配给A,这将需要最多(10/2=5100/8=12.5)=12.5天才能完成。然后,总持续时间为5+12.5=17.5天
- 首先分配10名工人,需要100/10=10天才能完成。然后在第10天,我们将10名工人分配给B,这需要50/10=5天才能完成。然后在第15天,我们分配2名工人到C,这需要10/2=5天才能完成。总持续时间为10+5+5=20天
- 输入: Nworker、需求、容量、依赖性
- 产出:总工期最短的工人分配实践
- 首先尽快完成其他人依赖的任务(例如,在示例中尽快完成
)B
- 将工人分配到需求最大的任务(例如,首先将所有工人分配到示例中的
)A
如有任何意见或建议,将不胜感激。谢谢 这听起来像是带有依赖项的作业车间调度,它是NP完全(或NP难)。因此,在合理的时间内向外扩展并提供最佳解决方案可能是不可能的
在类似的情况下,我得到了很好的结果(并且)首先进行构造启发式(几乎是您在那里得到的两种分配策略之一),然后进行局部搜索(通常是延迟接受或禁忌搜索)以获得接近最优的结果。寻求调试帮助的问题(“此代码为什么不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现这些问题所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建一个最小、完整且可验证的示例。感谢您的关注。您认为问题陈述的哪一部分不清楚?向我们展示您迄今为止所做的尝试,并提供预期输出和实际输出。谢谢。刚刚添加了两个可能的日程安排实践,以使其更加清晰。谢谢!这很有帮助。