我有一个任务/作业调度问题,我想找到最好的高效算法来解决它。任务/作业调度问题
假设有一些工人。每个工作人员都能够完成一组不同的任务/工作。下面的例子可以说明:
Worker A (can do): T2, T3
Worker B : T1, T3, T4
Worker C : T3, T5
现在我们有一个必须完成的任务列表。例如,该列表是一样的东西:T1,T3,T5
有一些限制:
- 每个任务必须由一名工人采取
- 几个任务可以同时采取
- 但工作人员只能同时完成一项任务。 (他/她是不是可用,直到完成任务)
对于上面的例子,我们可以有这样的时间表:
T1 --> Worker B
T3 --> Worker C T5 --> Worker C
你可能注意到了,上面的时间表是不是最佳的。因为T5必须等待工人C完成T3。以下解决方案更好:
T1 --> Worker B
T3 --> Worker A
T5 --> Worker C
因为没有等待。
现在假设我知道工人任务矩阵(工人可以做什么任务)。 这些任务会一个接一个,但不知道会是什么。我被要求设计一个计划程序,为每一个即将到来的任务自动找到一个空闲的工作人员。最后,当所有任务完成时,至少有一个等待时间。
所以我需要这个调度程序的算法。如果完美的车轮已经存在,我不想重新发明车轮。任何人都可以帮忙吗?
谢谢。
如果你不能展望未来,那么我猜想,将这些任务发送给具有_feese_能力的工作人员将会为将来留下最多的可能性。工作人员是否最终有望获得工作?或者是工人电脑,他们不在乎他们是否工作? – sarnold 2011-04-15 08:41:07
对我来说,这听起来像是“为即将到来的任务自动找到闲置的工作人员”,“不知道会是什么”以及“最少的等待时间”都是彼此不一致的。如果你不能计划,你不能优化。 – 2011-04-15 08:41:09
如果没有空闲的工人,你打算如何处理?把他们排队? – 2011-04-15 08:41:37