Algorithm 工作分配算法

Algorithm 工作分配算法,algorithm,Algorithm,我们有一份工人名单和一份分配给这些工人的任务清单。每项任务都有一个特定的类别(大约50个类别,大约10000个任务)。每个工人可以处理一组类别(每个工人大约5个类别)。此外,每个工人都有可分配给他的最大任务数 我们需要把任务分配给工人,以便 a) 可分配的最大任务数 b) 未向工人分配任务,该任务超出工人类别集 c) 如果可以为工人分配任务,则没有工人闲坐着 d) 分配给任何工人的任务数应小于其最大分配数 样本数据: a) 任务类别关系 T1 - C1 T2 - C1 T3 - C1 T4 -

我们有一份工人名单和一份分配给这些工人的任务清单。每项任务都有一个特定的类别(大约50个类别,大约10000个任务)。每个工人可以处理一组类别(每个工人大约5个类别)。此外,每个工人都有可分配给他的最大任务数

我们需要把任务分配给工人,以便

a) 可分配的最大任务数
b) 未向工人分配任务,该任务超出工人类别集
c) 如果可以为工人分配任务,则没有工人闲坐着
d) 分配给任何工人的任务数应小于其最大分配数

样本数据:

a) 任务类别关系

T1 - C1
T2 - C1
T3 - C1
T4 - C2
T5 - C1
T6 - C3
..... (around 10k tasks, 50 categories)
b) 工人类别最大任务数

W1 (100) - C1 
W1 (100) - C2 
W2 (20) - C1
W2 (20) - C3
..... (around 50 workers, each can work on around 5 categories). 
      Where 100 for W1 means W1 can be assigned maximum 100 tasks 
      (across all categories, it is mapped with).
我试着通过工人循环,得到他们相关的任务,一个接一个地完成他们的任务,但它有一个漏洞,就是对于一些工人很少的类别,分配是不公平的,一些工人闲置,而一些类别还有任务,通过将任务重新分配给其他工人,可以更有效地分配这些任务

例如,如果C1有2000个任务和三个工人W1、W2、W3,每个工人最多有1000个任务。C2有1000个任务,仅与W1关联。 如果我们将C1任务分配给W1和W2,使其满负荷(每个任务1000个),则我们无法分配C2的任务,因为相关的工作人员W1已被C1完全占用。如果我们将C1任务分配给W2和W3,我们就可以分配所有的任务

我需要一些算法,可以有效和公平地做分配。如果有人已经解决或知道我可以使用/探索的可能解决方案/资源,请提出建议。


“最大二部匹配”中的示例是一个经典的“将作业分配给工人”任务。您只需要将每个工作人员链接到其类别内的任务。图论是你的朋友。

听起来像是家庭作业。自己试一试,如果你遇到一个特定的问题,问问它。没有人会为你写作业。同意,这听起来像作业:),但想法是使用一个已经尝试过的解决方案来解决相同或类似的问题,或者只是一个指向我可以探索的资源的指针(如blaze所建议的)