按项目分配资源的算法(装箱?



请让我知道哪种算法适合以下问题:

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

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

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

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


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

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

我觉得我可能会用垃圾箱收拾的角度追逐鹅。有没有更适合此的算法?

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

但所有这些都忽略了开发人员之间的协调、交接、依赖关系(在做其他事情之前需要先做什么),称职的开发人员具有不同的技能和经验,即使是经验丰富的开发人员,而不是无能或超级明星,速度差异也可能高达 10 倍。

最新更新