2012-04-12 70 views
0

请让我知道哪个算法适用于以下问题:算法通过项目资源分配(装箱?)

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

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

每个资源每月可消耗一定数量的小时数(考虑假期,个人休假等 - 每个小时的每月小时数已为每个资源预先计算并且可用)。

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


这就像打开其头部装箱问题,我认为,如果我们考虑项目的垃圾箱,资源为对象,小时,因为对象的体积。至少有两件事情使它偏离正式的装箱问题:

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

我觉得我可能会追随着装箱角鹅。有没有更合适的算法?

+0

但是实际的问题是什么?你想要什么结果?资源分配清单,说明每个项目在3个月内每小时分配哪些资源?你想知道这样的分配是否可能,或找到最佳分配?如果是这样,什么使分配“最好”? – zmbq 2012-04-12 20:00:39

回答

1

如果世界真的像你描绘的那样简单,看起来像一个简单的队列就能满足你的约束:当项目到达时,把它们放在队列中。随着开发人员的涌现,他们从队列中脱颖而出。只有当你有足够大的项目不能以这种方式完成时,你才需要分配多个开发人员,并且你可以检测到这一点,并回溯并分配两个开发人员。但是所有这些都忽略了开发人员之间的协调,切换,依赖(在其他事情之前需要先做什么),有能力的开发人员拥有不同的技能和经验,甚至是具有类似经验的开发人员,而不是无能或超级明星,可以有高达10倍的速度差异。

+0

谢谢。我认为一个队列就足够了。我们将在第一个循环中为每个项目分配一个资源以确保覆盖所有项目,然后在每个后续迭代中将资源分配给队列头部的项目,直至其容量最大。幸运的是,我们的世界非常简单而且没有约束。 – Roman 2012-04-13 02:12:41