【发布时间】:2017-01-07 05:27:17
【问题描述】:
我正在尝试找出最有效的分配任务的方式。这是我正在努力解决的问题:
- 您有 X 人都有资格工作
- 每个人一次可以完成 X 项任务
- 您有 X 个等待任务
- 每个任务需要的时间长度可变
挑战的目标是尽可能在人们之间平均分配任务。一旦一个人完成给定任务之一,“排队”任务之一将被提供给他们。这是一个示例场景。
队列中有 500 个任务,有 50 人可以“接受”它们。每个人一次可以完成2个任务。一旦一个人完成了一项给定的任务,他们就会得到另一个任务。等待时间最长的任务获得最高优先级。
一种可能的方法是,根据他们最后给定时间的任务,为有能力执行任务的 50 个人中的每一个分配一个。例如:
- 任务 1 -> 人 1
- 任务 2 -> 人员 2
- 任务 3 -> 人员 3
...
- 任务 4 -> 人 1
- 任务 5 -> 人员 2
- 任务 6 -> 人员 3
根据最后分配给 X 人的任务,最后分配的任务最早且可以承担另一项任务的人会将其提供给他们。我不确定这是否是均匀任务分配的正确解决方案,很想听听建议!这种算法有名字吗?
另一种方法可能是根据当前执行最少任务的人员来分配任务。尽管如果多个人被绑定到最少的任务,则任务会分配给空闲时间最长的人(最后分配的任务)。
【问题讨论】:
-
每个工人是否相当,或者有些人比其他人有能力做更多的任务?
-
有些人可以做得更多。 @catalogue_number
-
还有,你是提前知道所有的任务,还是动态到达的?
-
它们是动态到达的。 10:00 可能有 10 个排队,10:05 可能有 30 个。
-
“均匀分布”是什么意思?您是希望共享任务以使员工花费大致相等的工作时间,还是希望最终完成相同数量的任务?
标签: algorithm math variable-assignment