R的RGLPK库中的条件约束
在使用excel多年后,我的脚陷入了R,我有一个问题。R的速度给我留下了深刻的印象,过去Excel需要一个多小时才能完成10000次模拟,R在4分钟内完成了25000次模拟。太棒了 这是与幻想足球有关的,因为我试图在R中创建一个阵容优化程序,并发现RGLPK库是一个不错的选择。还有很多其他的问题帮助我达到了今天的水平,但是我遇到了一个障碍。以下是一些其他主题 这是我的股票优化器R的RGLPK库中的条件约束,r,optimization,constraints,R,Optimization,Constraints,在使用excel多年后,我的脚陷入了R,我有一个问题。R的速度给我留下了深刻的印象,过去Excel需要一个多小时才能完成10000次模拟,R在4分钟内完成了25000次模拟。太棒了 这是与幻想足球有关的,因为我试图在R中创建一个阵容优化程序,并发现RGLPK库是一个不错的选择。还有很多其他的问题帮助我达到了今天的水平,但是我遇到了一个障碍。以下是一些其他主题 这是我的股票优化器 #stock optimal linups solver name <- myData$Name pos
#stock optimal linups solver
name <- myData$Name
pos <- myData$Pos
pts <- myData$Projection
cost <- myData$Salary
team <- myData$Team
opp <- myData$Opp
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=="K")
, as.numeric(pos=="D")
,cost)
dir <- c("=="
,"=="
,"=="
,"=="
,"=="
,"=="
,"<=")
b <- c(1
, 2
, 3
, 1
, 1
, 1
, 60000)
library(Rglpk)
sol <- Rglpk_solve_LP(obj = f
, mat = A
, dir = dir
, rhs = b
, types = var.types
, max=TRUE)
myData[sol$solution == 1,]
sprintf('Cost is:$%i', sum(cost[sol$solution > 0]))
sprintf('Projected Points is: %f', sol$optimum)
#库存最优排队解算器
name尝试做类似的事情,您只需要修改它以适应您的情况。我直接从我自己的代码中获取了这一点,但基本上,输入我想要的播放器,并用它们创建一个单独的数据帧。然后,我优化剩余的位置和rbind一起创建最终阵容。这将循环并提供用户想要的任意多个列表
Inclusions<-readline("Enter players to include into optimal lineups: ")
Inclusions <- as.character(unlist(strsplit(Inclusions, ",")))
Inclusions_table<-Data[ Data$Player.Name %in% Inclusions, ]
Inclusions_no<-nrow(Inclusions_table)
Data<-Data[ ! Data$Player.Name %in% Inclusions, ]
Lineup_no<-readline("How many lineups to be generated?: ")
num.players <- length(Data$Player.Name)
obj<-Data$fpts
var.types<-rep("B",num.players)
subscore<-1000
Lineups <- list()
for(i in 1:Lineup_no)
{
matrix <- rbind(as.numeric(Data$Position == "QB"), # num QB
as.numeric(Data$Position == "RB"), # num RB
as.numeric(Data$Position == "RB"), # num RB
as.numeric(Data$Position == "WR"), # num WR
as.numeric(Data$Position == "WR"), # num WR
as.numeric(Data$Position == "TE"), # num TE
as.numeric(Data$Position == "TE"), # num TE
as.numeric(Data$Position %in% c("RB", "WR", "TE")), # Num RB/WR/TE
as.numeric(Data$Position == "DEF"),# num DEF
Data$Salary,Data$fpts)
direction <- c("==",
">=",
"<=",
">=",
"<=",
">=",
"<=",
"==",
"==",
"<=","<")
opt_var<-subscore-0.01
rhs<-c(1-sum(Inclusions_table$Position=="QB"),max(0,2-sum(Inclusions_table$Position=="RB")),4-sum(Inclusions_table$Position=="RB"),max(0,2-sum(Inclusions_table$Position=="WR")),4-sum(Inclusions_table$Position=="WR"),max(0,1-sum(Inclusions_table$Position=="TE")),2-sum(Inclusions_table$Position=="TE"),7-sum(Inclusions_table$Position=="RB")-sum(Inclusions_table$Position=="WR")-sum(Inclusions_table$Position=="TE"),1-sum(Inclusions_table$Position=="DEF"),100000-sum(Inclusions_table$Salary),opt_var)
sol <- Rglpk_solve_LP(obj = obj, mat = matrix, dir = direction, rhs = rhs,
types = var.types, max = TRUE)
Lineup<-data.frame(Data[sol$solution==1,])
subscore<-sum(Lineup$fpts)
Lineup<-rbind(Lineup,Inclusions_table)
Lineup<-Lineup[order(Lineup$Position),]
Salary<-sum(Lineup$Salary)
Score<-sum(Lineup$fpts)
print(Lineup)
print(Salary)
print(Score)
Lineups[[i]]<-Lineup
}
inclusion我想我可以为团队创建一个向量,即code
团队谢谢,我在这里找到了你的问题,并且已经用了很多问题作为我所做工作的基础。我可以锁定球员,但我更想知道是否有一种方法,让我告诉代码吐出最好的团队,其中DEF和K在同一个团队中。我已经能够循环查看每个DEF/K组合,以查看最佳球队,但不确定是否有更有效的方法。您是否希望每个球队都有相同的防守和踢球者的最佳阵容?或者您自己选择了K和DEf,然后想要看到最佳阵容?您不希望在开始时进行任何手动选择。i、 让代码给我最好的阵容,防守和K来自同一支球队。这应该很容易做到。通过所有其他位置(不是K和DEF)的优化程序循环,并将价格修改为减去K和DEF的成本。然后,您可以使用经过优化的配置组合重新绑定K和DEF。这将产生32支球队,每支NFL球队一支。
Position Player.Name Team Opponent Salary PPG fpts Pos_Rank upper lower Off_Snaps Pct_Off
1056 TE A.J. Derby Patriots Bills 5000 0 0.0000 82 0 0 NA <NA>
462 RB Aaron Ripkowski Packers Falcons 6000 1.8 1.3116 75 1.8852 0.01 22 25%
78 QB Aaron Rodgers Packers Falcons 19350 20.6 18.4292 1 19.9689 17.2 87 100%
1466 WR Adam Humphries Buccaneers Raiders 7650 8.1 9.4808 46 11.2125 7.5664 38 51%
1808 WR Albert Wilson Chiefs Colts 5000 4.3 5.6673 74 6.2438 4.78 11 21%
1252 WR Aldrick Robinson Falcons Packers 5000 3.8 2.9114 96 3.2836 2.0152 10 15%
636 RB Alex Collins Seahawks Saints 6000 2.7 1.5992 69 2.1513 0.41 1 2%