【问题标题】:Task assigning algorithm任务分配算法
【发布时间】: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


【解决方案1】:

请考虑在更高的层次上看待这个问题。

到目前为止,这些提议都是贪婪的。他们制定了一个时间表,并希望做到最好。

您需要决定的第一件事是这是否是您想要的。贪婪分配会为某些输入产生非常糟糕的答案,但如果输入是“合理的”并且您想要的只是一个合理的答案,那可能没问题。

另一方面,找到 最佳任务分配是 NP 困难的。您需要输入大小呈指数级增长,以确保获得最佳答案。

有两种中间方法。

  • 随机任务调度算法。这是一个巨大的话题。 This paper 仍然是一个不错的起点,尽管它现在已经非常过时了。理查德卡普是惊人的。随机算法的好处在于它们可以提供非常有用的最优性保证。

  • 启发式搜索。定义一个单一的数字指标来衡量计划的好坏。从一个合理的开始(贪婪地确定或随机)。将其放在按度量 v 排序的搜索队列中,从队列中拉出最佳度量,找到它的所有“子”,即所有可能的简单更改导致之前未考虑过的计划,将它们添加到队列中,然后重复.当你不能再等待时停下来。目前最好的就是你的答案。您也可以将其构建为遗传算法,这只是一种专门的启发式搜索。

【讨论】:

    【解决方案2】:

    保留 2 个队列。一个用于任务,另一个用于免费等待任务的人。如果有任务要执行,队列中的第一个人将接走。您不会在此解决方案中考虑任务和人员的时间,因为它是公平的分配方式。如果您将来需要某种优先级,而两个队列几乎没有变化,您可能会考虑优先级队列。

    【讨论】:

      【解决方案3】:

      与 zsiar 一样,但使用两个优先级队列。最高优先级队列中的最高任务被分配给最高工作人员,假设他有能力。如果他不是,则任务无法完成,必须等待。

      工作优先级队列中的工作人员按容量或空闲时间或任何看起来公平的方式排序。事实上,这不是一个真正的优先级队列,因为当一个工作人员完成一项任务时,我们将他取出并放回队列中,处于更高的位置。

      (如果工人可以同时完成两项任务,他们可能是计算机而不是人,所以空闲时间不是一个有用的指标。​​只有人类工人关心他们是否在忙于其他事情时保持忙碌)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-19
        • 1970-01-01
        • 2014-11-12
        • 1970-01-01
        • 2011-06-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多