我一直在考虑调度和负载平衡算法,我想出了一个我认为很有趣的问题。
有N个笼子和M个动物园管理员。每个笼子都有一个尺寸S和一些动物A.笼子必须清洁的频率被计算为A / S的一些功能(较小的笼子让更多的动物变脏更快)。清洁笼子的难度计算为A和S的一些其他功能,其细节不重要(笼子的大小贡献了大部分难度,并且动物的数量贡献了一点)。每三天一次,清洁任何需要清洁的笼子(“清洁日”)。动物园管理员完全相同且可互换。动物园管理员每个清洁日都需要做相同数量的工作,而且不需要做任何其他动物园管理员的工作。笼子清洁的持续时间不是问题的一部分(它假设时间大致反映在困难中,而且动物园管理员总有足够的时间来完成他们分配的任务)
调度算法必须告诉每个动物园管理员在每个清洁日清洁哪些笼子,例如
我想知道这种优化问题的近似算法会是什么样子。它与NP-hard调度/资源利用问题的几个不同的经典例子相似;也许它可以简化为一个这样的问题,我只是错过了它。如果我们摆脱任务元素的频率/周期性,它就类似于经典multiprocessor scheduling或有限bin packing问题。
答案 0 :(得分:1)
鉴于目标是均衡动物园管理员的努力,或多或少的标准方式来处理这些任务,这是在线贪心。
在这种情况下,相当于:
保持每个动物园管理员迄今为止所花费的精力,最初为零。在每个清洁日,记录所需的清洁工作,并使用先贴合,最佳贴合或随机贴合来分配工作,以便平衡工作总和。即为了最好的配合,他最大的工作是给目前为止工作最远的守门员。重复,直到分配完所有任务。