这是什么类型的背包模拟?组建最佳团队

时间:2014-11-15 04:51:39

标签: algorithm optimization dynamic-programming

团队定义

一支球队由一群球员组成。每个玩家都有一个位置,团队必须包含每个位置的给定数字。例如在足球场上,可能有1个QB,2个WR,2个RB,1个TE和5个OL。

最佳团队的定义

每个玩家都有贡献和价格。最佳团队在保持最大价格(工资上限)的同时最大化贡献,但仍然填补每个角色。再次就足球而言,这可能意味着你必须完全 1 QB,3 WR,2 RB和1 TE。

我的问题

我需要考虑的球员数量并不是特别多。我试图建立的团队包括1个QB,3个WR,2个RB和1个TE,其中有20个QB,97个WR,60个RB和29个TE(总共206个玩家)。如果只是为了找到保持在一定价格之下的最高价值组,那么这将是0/1背包问题。

现在让我们说我需要找到最好的7名球员组合(保持总价)。这将使这与多维背包问题非常相似,因为每个玩家的权重可以为1,因此该组权重必须<= 7 价格应保持在最高价格。但是,完全 7个玩家的必要条件使事情复杂化。很有可能,如果你选择较少的玩家,你可以获得比完全 7名玩家更高的价值。

最后的约束使事情进一步复杂化。同样可以说它类似于多维背包问题,因为你可以为每个位置分配4个维度,然后多维权重将决定玩家的位置,例如, p(12, $10000, 0, 1,0,0)代表价值12的玩家;价格10,000美元;而且是一个WR。然后约束是团队的最终权重必须是<= w(MAX_PRICE, 1, 3, 2, 1)。除此之外,它应该完全等于确定谁在团队中的权重,不小于或等于这些限制。

那么我的问题是什么

我的问题仍然是这是什么类型的问题以及是否存在用于解决此类问题的“标准”算法。看起来这不是一个奇怪的古怪问题,它似乎非常类似于背包问题,因此我认为已经研究过。我正在寻找有关此问题的信息(首先,它叫做什么)和/或涵盖此类问题的研究论文。

1 个答案:

答案 0 :(得分:2)

你应该可以使用伪多项式背包近似的变体,假设没有玩家值得为两个可能的玩家类别中的每一个招聘。缩放并舍入值或成本值以将它们转换为整数。然后逐个查看播放器类。在每个阶段,您都要跟踪每个可能成本可实现的最高价值,或者每个可能的价值可实现的最低成本,具体取决于您是否已经缩放并舍入成本或价值 - 通过缩放和舍入确保在那里只是可管理的不同成本或价值。

你从0成本和零价值开始。在每个阶段结束时,您知道每个可能的成本可实现的最高价值,或每个可能的价值可实现的最低成本。通过考虑该球员级别的所有选项,为包含该级别指定数量的球员的球队制定新的最高价值/最低成本。最后,您可以获得每个成本的最高价值或每个价值的最低成本,您的答案是价格合理的。根据对该答案的了解,您可以使用先前存储的信息进行追踪,以确定整个团队的选择。