给定多种类型的资源和每项任务的特定资源混合,最大限度地提高资源利用率

时间:2013-06-14 14:52:19

标签: algorithm optimization

鉴于

您有一些非常多的可能任务,每个任务都需要使用来自大量可能资源的某些可能资源子集。

每项任务都有相关的资源成本:

任务1

  • 1 gold
  • 2 silver

任务2

  • 2 gold
  • 1青铜

任务3

  • 1青铜

您有一组可用资源:

资源

  • 3 gold
  • 2青铜

问题

选择一个任务子集,其中任何一个都可以执行多次,这使得"最佳使用" 所有可用资源。在这种情况下,也许我们会选择任务2和任务3,因为它只剩下1金。我们无法执行任务1,因为我们没有白银。

问题

这似乎是某种优化问题,但我根本不确定这个问题是什么"叫做#34;。是否有一些奇特的名字,我可以抬头指导我寻找可能的解决方案?那里有直接的算法可以解决这个问题吗?它能在合理的时间内解决吗?是否有一些很好的启发式方法?

备注

  • 如图所示的问题意味着资源可能会有不同的加权(即,更糟糕的是留下1金而不是1青铜),但这不一定是个问题。解决方案不能解释这一点,但这将是一个有趣的扩展。
  • 任务和资源不一定是整数值,但我不确定这是否会显着改变问题。

2 个答案:

答案 0 :(得分:8)

这听起来就像一个多背包问题 - 你唯一需要改变的是分配每个项目的价值等于它使用的项目的总和,然后它成为一个标准的背包,因为在最大化总和时,余数最小化。

答案 1 :(得分:2)

此问题是一种设置打包。它也被称为“飞行机组问题”。您有一定数量的飞行员,工程师,管家等,以及需要不同类型船员的不同飞机。通常情况下,由于飞行机组问题,您正在寻找人员和飞机之间的精确任务,但在这里我们希望通过选择不同类型的飞机(这是岗位中的“任务”)来最大化人员利用率。

在任何情况下,解决这些NP难的问题的方法是使用混合整数线性编程进行穷举搜索。请参阅Sandia survey of MILPMIT Aeronautics page on MILP

有一个包SYMPHONY,其中包括设置分区和打包求解器。