我正在努力在R的一些代码,以优化我的幻想足球阵容,但我有一些困难,一个限制。我基本上有一个球员的名单,他们的位置,预期的分数,和成本。
名册必须包括:
1 QB 2 RB 2 WR 1 TE 1 FLEX ( RB,WR或TE)费用总额低于200美元
我的问题是,我的代码想要选择灵活的位置作为球员,它已经选择作为一个WR,RB或TE。下面是我使用的代码,我导入了一个表,其中包含了播放器、位置、点数和成本的列。在表中,任何RB、WR或TE都与该位置复制为FLEX。我试图将设置pos==" FLEX“的行更改为pos=="WR"||pos=="RB"||pos=="TE”,但这不起作用,我唯一的想法是运行代码,如果它复制了FLEX,我就从源表中删除它。不过,这有点痛苦。
任何想法都会受到极大的赞赏。
name <- mydata$name
pos <- mydata$pos
pts <- mydata$pts
cost <- mydata$cost
num.players <- length(name)
f <- pts
var.types <- rep("B", num.players)
A <- rbind(as.numeric(pos=="QB")
, as.numeric(pos=="RB")
, as.numeric(pos=="WR")
, as.numeric(pos=="TE")
, as.numeric(pos=="FLEX")
,cost)
dir <- c("=="
,"=="
,"=="
,"=="
,"=="
,"<=")
b <- c(1
, 2
, 2
, 1
, 1
, 200)
library(Rglpk)
sol <- Rglpk_solve_LP(obj = f
, mat = A
, dir = dir
, rhs = b
, types = var.types
, max=TRUE)
sol
name[sol$solution == 1]发布于 2014-10-01 21:09:19
你可以重写:
1 QB 2 RB 2 WR 1 TE 1 FLEX (either a RB, WR, or TE) 作为
num(QB) == 1
2 <= num(RB) <= 3
2 <= num(WR) <= 3
1 <= num(TE) <= 2
num(RB) + num(WR) + num(TE) == 6https://stackoverflow.com/questions/26150240
复制相似问题