我正在使用R包lpSolveAPI对幻想足球进行阵容优化。
现在,我能够根据不同的限制条件(最低和最高薪水,位置(1QB,2RB,3WR等))生成阵容。但是我希望能够生成多个阵容并手动设置某些球员的曝光率。假设我要创建100个阵容,我希望Tom Brady出现在整个阵容中至少20%,最多40%。我希望亚伦·罗杰斯(Aaron Rodgers)出现在总阵容中至少20%,最多50%。在不违反位置限制(仅允许1个QB)的情况下该怎么做?
一些代码来创建一个阵容:
qb <- ifelse(train$pos1 == "QB", 1, 0)
wr <- ifelse(train$pos1 == "WR", 1, 0)
te <- ifelse(train$pos1 == "TE", 1, 0)
rb <- ifelse(train$pos1 == "RB", 1, 0)
dst <- ifelse(train$pos1 == "DST", 1, 0)
lp <- make.lp(0, nrow(train))
set.objfn(lp, train$projected_pts)
set.type(lp, seq(1, nrow(train)), type = c("binary"))
add.constraint(lp, qb, "=", 1)
add.constraint(lp, wr, ">=", 3)
add.constraint(lp, wr, "<=", 4)
add.constraint(lp, rb, ">=", 2)
add.constraint(lp, rb, "<=", 3)
add.constraint(lp, te, ">=", 1)
add.constraint(lp, te, "<=", 2)
add.constraint(lp, rb+te+wr, "=", 7)
add.constraint(lp, dst, "=", 1)
add.constraint(lp, train$salary, "<=", cap_max)
add.constraint(lp, train$salary, ">=", cap_min)