如果标题不能准确地描述我正在做的事情,我很抱歉。
我正试图为一个幻想的体育比赛构建每一个可能的假想团队。这意味着将所有可用的球员组合在一起,每个球员都有各自的特点,比如他们所在的球队、他们的位置和他们的薪水,这就限制了他们在一支球队中的数量。我遇到的麻烦是找到了一种有效的记忆方法来把它们结合起来。
我制作了一个示例数据集:
player_pool <- data.frame(id = seq(1,30), salary = seq(1,30), team = rep(LETTERS[seq(from=1, to=5)],6), position = rep(LETTERS[seq(from=1, to=5)],6))在这30名球员中,我想选择每支8人的球队,其中至少有1名球员来自所有5个角色,不超过3名球员来自同一支球队,工资加起来不到50名。
例如,这将是一个有效的团队:
id salary team position
1 1 A A
2 2 B B
3 3 C C
4 4 D D
5 5 E E
6 6 A A
7 7 B B
8 8 C C每支球队不超过两名球员,每个职位中至少有一名球员,工资总额不超过36名。
我一直试图实现一个公式,通过所有的~6毫米组合逐步使用包iterpc,查找和计算每个步骤的工资/团队号码。这让我在每一步都能把所有的东西都放进内存中,但是速度非常慢,效率很低--这相当于创建每一个可能的团队,并连续地应用规则。
任何替代的方法都会很棒!
发布于 2015-07-22 20:12:19
安装加起来七个最低收入的球员,你得到28.这意味着任何一个工资超过22的人都不能加入球队。
pool <- subset(player_pool,salary<=22)从这里寻找combos,我会选择显而易见的方法,而不是寻找效率:
结果它运行得足够快(不到一秒钟),我看到了339个匹配的组合
length(which(good_rs))
# [1] 339https://stackoverflow.com/questions/31572497
复制相似问题