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?

Respuestas a la pregunta(1)

Su respuesta a la pregunta