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

在使用excel多年后,我的脚陷入了R,我有一个问题。R的速度给我留下了深刻的印象,过去Excel需要一个多小时才能完成10000次模拟,R在4分钟内完成了25000次模拟。太棒了

这是与幻想足球有关的,因为我试图在R中创建一个阵容优化程序,并发现RGLPK库是一个不错的选择。还有很多其他的问题帮助我达到了今天的水平,但是我遇到了一个障碍。以下是一些其他主题

这是我的股票优化器

#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%