项目资源分配算法(Bin Packing?)

时间:2012-04-12 19:50:12

标签: algorithm allocation bin-packing

请告诉我哪种算法适用于以下问题:

我们在给定的3个月内(通常<50)有一定数量的项目。每个项目都有几个小时。

我们在同一个3个月内拥有有限数量的资源(通常<100)。

每个资源每月可以消耗一个独特的小时数(假期,个人休假等) - 每个资源的每小时数已经预先计算好并且可用。

可以将一个资源分配给多个项目。


如果我们将项目视为垃圾箱,将资源视为对象,将小时视为对象体积,那么这就像垃圾箱打包问题一样。至少有两件事情使它偏离正式的装箱问题:

  1. 资源是流动物体,可以在一个箱子里滴几个小时,在另一个箱子里滴几个小时。
  2. 最佳解决方案不是最小化所使用的箱柜(项目)的数量,而是尽量减少资源在项目之间拆分并确保使用所有项目的次数。

  3. 我觉得我可能会用垃圾箱包装角来追逐鹅。是否有更合适的算法?

1 个答案:

答案 0 :(得分:1)

如果世界真的像你描绘的那样简单,那么似乎一个简单的队列就能满足你的约束:当项目到达时,将它们放在队列中。随着开发人员的出现,他们从队列中脱颖而出。只有当你的项目足够大而不能以这种方式完成时,你才需要为他们分配多个开发人员,你可以检测到这一点,并回溯并分配两个开发人员。

但所有这些都忽略了开发人员之间的协调,交接,依赖关系(在其他事情发生之前需要先做什么),有能力的开发人员拥有不同技能和经验的事实,甚至是经验丰富的开发人员,而不是无能或者超级巨星,速度差异可达10倍。