【问题标题】:Algorithm for resource allocation by project (Bin Packing?)按项目分配资源的算法(装箱?)
【发布时间】:2012-04-12 19:50:11
【问题描述】:

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

在给定的 3 个月期间,我们有有限数量的项目(通常

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

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

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


如果我们将项目视为垃圾箱,将资源视为对象,将工时视为对象体积,我认为这就像一个装箱问题。至少有两件事使它偏离了正式的装箱问题:

  1. 资源是流体物体,可以在一个容器中滴下几个小时,在另一个容器中滴下几个小时。
  2. 最佳解决方案不是尽量减少使用的 bin(项目)数量,而是尽量减少资源在项目之间拆分的次数,并确保所有项目都被使用。

我觉得我可能正在用垃圾箱包装角度追逐鹅。有没有更适合这个的算法?

【问题讨论】:

  • 但真正的问题是什么?你想要的结果是什么?资源分配清单,说明每个项目在 3 个月期间每小时分配哪些资源?您想知道这样的分配是否可行,还是想找到最佳分配?如果是这样,什么使分配“最好”?

标签: algorithm allocation bin-packing


【解决方案1】:

如果世界真的像您描绘的那样简单,那么简单的队列似乎可以满足您的限制:当项目到达时,将它们放入队列中。当开发人员可用时,他们会排在队列的首位。只有当您的项目大到无法以这种方式完成时,您才需要为他们分配多个开发人员,并且您可以检测到这一点,并回溯并分配两名开发人员。

但是所有这些都忽略了开发人员之间的协调、交接、依赖关系(在其他事情之前需要首先完成的事情),有能力的开发人员具有不同的技能和经验,甚至是经验相似的开发人员,但没有不称职或超级巨星的速度差异可能高达 10 倍。

【讨论】:

  • 谢谢。我觉得排队就够了。我们将在第一个循环中为每个项目分配一个资源,以确保涵盖所有项目,然后在每次后续迭代中,将资源分配给队列头部的项目,直到其容量达到最大值。幸运的是,我们的世界相当简单且没有约束。
猜你喜欢
  • 1970-01-01
  • 2012-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 2014-05-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多