Estoy intentando optimizar mediante programación una lista de jugadores de Fantasy Baseball que requiere un número fijo de jugadores por posición (2 receptores, 5 jardineros, etc.) y tiene una restricción salarial (el precio total del draft no puede superar los n dólares). El éxito de la lista se basa en la producción combinada del equipo en las categorías de bateo (o lanzamiento).
Tengo proyecciones de las contribuciones estadísticas estimadas de cada jugador, a partir de las cuales puedo determinar (utilizando la puntuación estándar) su valor aproximado. Para este ejercicio, podemos suponer que he puesto el precio adecuado a cada jugador.
Para esta liga en particular, hay seis categorías de bateo (HR, RBI, Bases Robadas, etc)... y las proyecciones que tengo me permiten determinar cuánto contribuirá cada jugador dentro de cada categoría estadística.
Dados los 154 jugadores que se pueden draftear, y requiriendo 14 bateadores por equipo - da un asombroso número de 26.327.386.978.706.200.000 combinaciones diferentes. Obviamente, no quiero intentar un método de fuerza bruta para probar cada combinación posible de jugadores para determinar una lista óptima. (Tendría muchas listas demasiado caras, y muchas listas que valdrían 14 dólares (o menos)).
Está claro que tengo que ser más inteligente en esto y estoy buscando algún tipo de orientación para empezar.
Lo que he probado:
Mi primer intento de optimizar la lista fue seleccionar los MEJORES x jugadores (donde x = el número de jugadores necesarios en una posición). Una vez que tuve esos 14 jugadores, estaba MUY por encima del salario máximo, así que determiné en qué categoría era más fuerte y reduje al mejor jugador de esa categoría con el siguiente mejor jugador del grupo (sustituyendo, por ejemplo, a Miguel Cabrera por Evan Longoria). A continuación, volví a calcular el valor de la plantilla (que seguía estando muy por encima) y, de nuevo, determiné la categoría "más fuerte" y traté de sustituir al mejor jugador de esa categoría por el siguiente mejor jugador de la reserva no asignada.
El proceso se repite hasta que la suma total de la plantilla está justo por debajo del umbral salarial. Estoy LIGERAMENTE contento con los resultados... pero me pregunto si no hay una mejor manera de trabajar a través de posibles combinaciones de roster de una manera que:
Maximiza cada categoría constituyente (hay poco valor en añadir Home Runs por ejemplo, si ya tienes suficiente para ganar - y eres deficiente en Bases Robadas). Así que "nivelar" las categorías constituyentes es importante. Te mantiene lo más cerca posible (sin sobrepasar) el coste total de la plantilla. Una vez más - Estoy buscando dirección - alguien más competente en matemáticas para decir "esto es claramente un problema de mochila y aquí es cómo usted debe estar pensando a través de ...."
Soy programador... no matemático y cualquier ayuda que este grupo pudiera proporcionarme sería muy apreciada.
Saludos
[Nota: Movido de mathoverflow.net por indicación de la comunidad].