Fantasy-GA es un módulo de Python y una herramienta de línea de comandos que utiliza el algoritmo genético para automatizar la generación de alineaciones de deportes de fantasía. Las plataformas y ligas actualmente compatibles son las siguientes.
NBA | NFL | MLB | NHL | |
---|---|---|---|---|
Drogadictos | ✅ | ✅ | ✅ | ✅ |
Dependencias: numpy
PIP Instale Fantasy-GA
La clase LineupGenerator
admite archivos CSV exportados desde plataformas de deportes de fantasía diarios para un concurso determinado.
Desde Fantasy_GA Import LineUpGenerator de fantasy_ga.configs Import Site, League, ModelConfig, ComportCigData_Path = "Ejemplos/DraftKings/NBA/Dksalaries.CSV" Export_Path = "Ejemplos/DraftKings/NBA/Export.CSV" CC = Comportconfig (Site.dk, League. NBA) MC = ModelConfig (# Población inicial de alineaciones aleatorias de alineación = 1000# Número de evoluciones a la cría iterada y mutación FORN_GEN = 16# Número de alineaciones de niños para elegir entre dos mejores alineaciones_breed = 30# Número de mutaciones aleatorias para cada evolución_mutate = 30# Número de evoluciones compuestas con línea aleatoria adicional de línea_compound = 5) model = LineupGenerator (CC, MC) Model.Read_CSV (data_path) Model.Fit ()# Si no se especifica Top_N, guardará max (500, número de alineaciones totales) ordenado por storesModel.export_csv (export_path, top_n = 3) alineaciones, stores = model.get_top_n_lineups (1) imprime (f "" "[mejor línea] reproductores: {[model.id_to_name [id] para id en las líneas [0]]] } Salario total: {sum ([model.id_to_salary [id] para id en las alineaciones [0]])} esperado fpts: {standes [0]} "" ")
numpy.array
Custom.Array para los datos del jugador Alternativamente, puede proporcionar una numpy.array
donde las primeras 3 columnas corresponden a ID de jugador, salario, puntos de fantasía (FPT), seguido de información de posición. Por ejemplo, las columnas corresponden a id,salary,fpts,PG,SG,SF,PF,C,G,F,UTIL
para Basketball de fantasía de Draftkings.
Si desea utilizar la matriz Numpy personalizada para la matriz de datos en lugar de los archivos CSV, puede hacerlo utilizando el método set_matrix()
. Por ejemplo
cc = concursycig (sitio.dk, liga.nba) mc = modelconfig () # usa defaultm = np.Array ( [ [0, 6600, 36.46503, 0, 0, 0, 1, 1, 0, 1, 1], [1, 4200, 26.760368, 0, 0, 1, 1, 0, 0, 1, 1], [2, 3000, 4.38538, 1, 1, 0, 0, 0, 1, 0, 1], [3, 5000, 27.175564, 0, 0, 0, 0, 1, 0, 0, 1], [4, 3400, 16.734577, 0, 1, 1, 0, 0, 1, 1, 1], [5, 5900, 3.4382372, 0, 1, 1, 0, 0, 1, 1, 1], [6, 3000, -0.18490964, 1, 1, 0, 0, 0, 1, 0, 1], [7, 3000, 11.075589, 0, 0, 1, 1, 0, 0, 1, 1], [8, 3000, 6.469783, 0, 0, 0, 0, 1, 0, 0, 1], [9, 3000, 8.459954, 0, 0, 0, 0, 1, 0, 0, 1], [10, 5700, 33.98281, 0, 0, 0, 1, 1, 0, 1, 1], ] ) Model = LineupGenerator (CC, MC) Model.set_matrix (M) Model.fit ()
La clase LineupGenerator
tiene dos métodos centrales que devuelven alineaciones optimizadas. El método breed()
elige las dos mejores alineaciones de acuerdo con la suma de los puntos de fantasía con posiciones válidas y intercambia a los jugadores al azar (creando alineaciones de niños ). El método mutate()
intercambia a los jugadores al azar cuando corresponda. El método fit()
envuelve esos métodos de manera que esas operaciones se realicen para múltiples generaciones con alineaciones aleatorias adicionales.
Como módulo de pitón
$ python -m fantasy_ga --data_path=examples/DraftKings/NBA/DKSalaries.csv --export_path=examples/DraftKings/NBA/lineups.csv --site=DraftKings --league=NBA --n_pop=100 --n_gen=5 --n_breed=100 --n_mutate=100 --n_compound=10 --top_n_lineups=3
o un comando CLI
$ fantasy-ga --data_path=examples/DraftKings/NBA/DKSalaries.csv --export_path=examples/DraftKings/NBA/lineups.csv --site=DraftKings --league=NBA --n_pop=100 --n_gen=5 --n_breed=100 --n_mutate=100 --n_compound=10 --top_n_lineups=3
que genera
Saved top 3 lineups into "examples/DraftKings/NBA/lineups.csv". [Best Lineup] Players: ['Reggie Jackson', 'Max Strus', 'Anthony Edwards', "Royce O'Neale", 'Nikola Jokic', 'Dejounte Murray', 'John Collins', 'Jarrett Allen'] Salary Total: 50000 Expected FPTS: 268.13