Programación lineal de fútbol de fantasía en R con RGLPK
Hace mucho tiempo que escucho por primera vez a S.O ... Estoy haciendo una pregunta que se ha hecho de manera muy similar antes, sin embargo, no creo que sea lo suficientemente inteligente como para descifrar cómo implementar la solución, por esto me disculpo. Aquí está el enlace a la pregunta que encontré:Restricciones en la programación lineal de enteros múltiples de R
Estoy maximizando mis puntos de fantasía proyectados (FPTS_PREDICT_RF), sujetos a un límite salarial de 50,000, mientras minimizo un cálculo de 'riesgo' que se me ocurrió.
Ahora, el problema radica en la posición "flex". El equipo debe estar compuesto por 9 posiciones, 1 QB 2 RB 3 WR 1 TE 1 DEF 1 FLEX
El flex puede ser un RB, WR o TE.
Entonces, podemos tener: 1 QB 2-3 RB 3-4 WR 1-2 TE 1 DEF
Estoy tratando de implementar la restricción que #RB + #WR + #TE == 7.
Aquí está el código relevante:
library(Rglpk)
# number of variables
num.players <- length(final$PLAYER)
# objective:
obj <- final$FPTS_PREDICT_RF
# the vars are represented as booleans
var.types <- rep("B", num.players)
# the constraints
matrix <- rbind(as.numeric(final$position == "QB"), # num QB
as.numeric(final$position == "RB"), # num RB
as.numeric(final$position == "WR"), # num WR
as.numeric(final$position == "TE"), # num TE
as.numeric(final$position == "DEF"),# num DEF
diag(final$riskNormalized), # player's risk
final$Salary) # total cost
direction <- c("==",
"<=",
"<=",
"<=",
"==",
rep("<=", num.players),
"<=")
rhs <- c(1, # Quartbacks
3, # Running Backs
2, # Wide Receivers
1, # Tight Ends
1, # Defense
rep(10, num.players), #HERE, you need to enter a number that indicates how
#risk you are willing to be, 1 being low risk,
# 10 being high risk. 10 is max.
50000) # By default, you get 50K to spend, so leave this number alone.
sol <- Rglpk_solve_LP(obj = obj, mat = matrix, dir = direction, rhs = rhs,
types = var.types, max = TRUE)
sol #Projected Fantasy Points
¿Alguien puede ayudarme a implementar esta restricción? Cualquier ayuda es muy, muy apreciada!
EDITAR: El enlace al conjunto de datos 'final' es formato csv:https://www.dropbox.com/s/qp35wc4d380hep1/final.csv?dl=0
PREGUNTA SECUNDARIA: para cualquiera de ustedes, futbolistas de fantasía, estoy calculando mi factor de 'riesgo' directamente del S.D. de los puntos de fantasía históricos del jugador, y normalizando este número con el apoyo de [0,10]. ¿Se te ocurre una mejor manera de calcular el riesgo de un jugador determinado?