最佳公平负载平衡/多处理器周期性任务调度

时间:2014-04-04 20:12:44

标签: algorithm language-agnostic load-balancing scheduling resource-scheduling

我一直在考虑调度和负载平衡算法,我想出了一个我认为很有趣的问题。

有N个笼子和M个动物园管理员。每个笼子都有一个尺寸S和一些动物A.笼子必须清洁的频率被计算为A / S的一些功能(较小的笼子让更多的动物变脏更快)。清洁笼子的难度计算为A和S的一些其他功能,其细节不重要(笼子的大小贡献了大部分难度,并且动物的数量贡献了一点)。每三天一次,清洁任何需要清洁的笼子(“清洁日”)。动物园管理员完全相同且可互换。动物园管理员每个清洁日都需要做相同数量的工作,而且不需要做任何其他动物园管理员的工作。笼子清洁的持续时间不是问题的一部分(它假设时间大致反映在困难中,而且动物园管理员总有足够的时间来完成他们分配的任务)

调度算法必须告诉每个动物园管理员在每个清洁日清洁哪些笼子,例如

  • 每个笼子以理想的频率或尽可能接近地清洁,
  • 指定最小和大致相同数量的清洁 每个清洁日的动物园管理员,
  • 并确保所有动物园管理员的工作量尽可能相等 (即,在一段时间内,每个动物园管理员工作量的总体困难尽可能接近相等,并且笼子在动物园管理员之间分配,概率大概为1 / M)。

我想知道这种优化问题的近似算法会是什么样子。它与NP-hard调度/资源利用问题的几个不同的经典例子相似;也许它可以简化为一个这样的问题,我只是错过了它。如果我们摆脱任务元素的频率/周期性,它就类似于经典multiprocessor scheduling或有限bin packing问题。

1 个答案:

答案 0 :(得分:1)

鉴于目标是均衡动物园管理员的努力,或多或少的标准方式来处理这些任务,这是在线贪心。

在这种情况下,相当于:

保持每个动物园管理员迄今为止所花费的精力,最初为零。在每个清洁日,记录所需的清洁工作,并使用先贴合,最佳贴合或随机贴合来分配工作,以便平衡工作总和。即为了最好的配合,他最大的工作是给目前为止工作最远的守门员。重复,直到分配完所有任务。