【发布时间】:2016-12-24 11:07:12
【问题描述】:
我在尝试在 previous question 的基础上构建时遇到了麻烦
我想优化,至少有 3 名球员来自同一支球队,但我不在乎是哪支球队。
在下面的代码中,我可以强制它从熊队(或我指定的另一支球队)中挑选 3 名球员。您将如何选择来自同一支球队的 3 名球员的最佳阵容?
library(Rglpk)
DF <- data.frame(Team=c(rep("Bears",5), rep("Jets",5), rep("49ers", 5)), Player=c("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O"), Role=c(rep(c("WR", "RB", "TE"),5)), Avgpts=c(22, 19, 30, 25, 20, 21, 26, 14, 21, 13, 11, 8, 4, 3, 5), Salary=c(930, 900, 1300, 970, 910, 920, 980, 720, 650, 589, 111, 1239, 145, 560, 780))
obj = DF$Avgpts
con = rbind(as.numeric(DF$Role=="WR"), as.numeric(DF$Role=="RB"), as.numeric(DF$Role=="TE"), as.numeric(DF$Team == "Bears"), DF$Salary)
dir = c("==","==","==","==","<=")
rhs = c(1,1,1,3,100000)
sol <- Rglpk_solve_LP(obj = obj
, mat = con
, dir = dir
, rhs = rhs
, types = rep("B", length(DF$Team))
, max=TRUE)
solution <- DF[sol$solution==1,]
【问题讨论】:
-
一般来说,有链接是可以的,但你的代码应该自己运行。这意味着创建
DF并调用library(lpSolve)等等。 -
抱歉,我更改了示例以便它运行。目前硬编码的条件是从熊队中挑选 3 名球员,但我想同时挑选出最好的 3 名球员,无论是哪支球队。
标签: r optimization solver knapsack-problem lpsolve