以下是作业问题http://en.wikipedia.org/wiki/Generalized_assignment_problem
我有类似的任务,但找不到算法。 我们有m个任务,n个劳动者,m> n。当任务完成后,劳动者接下一个(如果有空的)。如果某个工人承担了任务,那么其他任何人都无法接受。每个劳动者都有自己的速度:V1..Vn,每个任务都有自己的“音量” - W1..Wm。因此,我需要在劳动者之间分配任务,目的是最大限度地减少执行所有任务的时间。
请帮我找一个算法或如何命名这个问题。)
答案 0 :(得分:1)
此问题是在并行,统一相关的计算机上调度作业,以便最小化完工时间。由于Hochbaum and Shmoys(使用对于调度问题的双近似算法:理论和实际结果,1988),存在多项式时间近似方案。 btilly是正确的,bin-packing问题密切相关; Hochbaum - Shmoys和之前最佳近似MULTIFIT的分析都是基于箱式包装的先驱技术。
答案 1 :(得分:0)
这似乎是http://en.wikipedia.org/wiki/Bin_packing_problem的np完全变异。因此,我不会担心精确的算法。
假设任务是独立的,我的第一次尝试将是一个贪婪的启发式。给定完成时间的估计,在每个工作点分配给他们在完成时间之前可以完成的最长任务。现在进行二分查找以找到您可以逃脱的最短完成时间。您的初始上限时间是最快工人完成所有事情的时间。如果所有工作人员同时工作,那么您的初始较低时间是所有工作人员完成这么多工作的时间。
这显然并非总是最佳。但它应该运作得相当好。