Fantasy-GA est un module Python et un outil de ligne de commande qui utilise l'algorithme génétique pour automatiser la génération de gammes de sports fantastiques. Les plates-formes et ligues actuellement prises en charge sont les suivantes.
NBA | NFL | MLB | Dans la LNH | |
---|---|---|---|---|
Drabings | ✅ | ✅ | ✅ | ✅ |
Dépendances: numpy
pip install Fantasy-Ga
La classe LineupGenerator
prend en charge les fichiers CSV exportés à partir de plates-formes sportives fantastiques quotidiennes pour un concours donné.
De Fantasy_ga Import LineUpGeneratorFrom Fantasy_ga.Configs Import Site, League, ModelConfig, ContestConfigData_Path = "Exemples / DraftKings / NBA / dksalaries.csv" CC = ContestConfig (Site.dk, ligue. NBA) MC = ModelConfig (# Population initiale de gamme aléatoire LINEUPSN_POP = 1000 # Nombre d'évolutions pour itérer la reproduction et la mutation forn_gen = 16 # Nombre de gammes d'enfants à choisir parmi deux meilleures lineupsn_breed = 30 # Nombre de mutations aléatoires pour chaque évolutionn_mutate = 30 # Nombre d'évolutions composées avec un modèle aléatoire supplémentaire aléatoire_compound = 5) modèle = lineupGenerator (cc, mc) modèle.read_csv (data_path) Model.Fit () # Si top_n n'est pas spécifié, il enregistrera Max (500, nombre de lines totales) Traté par scoresmodel.export_csv (export_path, top_n = 3) lineups, scores = Model.get_top_n_lineups (1) imprimer (f "" "[Meilleure gnatique] Players: {[Model.id_to_name [id] pour id in lineups [0]] } Total salarial: {sum ([Model.id_to_salary [id] pour ID dans les gammes [0]])} FPTS attendus: {scores [0]} "" ")
numpy.array
personnalisé.array pour les données des joueurs Alternativement, vous pouvez fournir un numpy.array
Par exemple, les colonnes correspondent à id,salary,fpts,PG,SG,SF,PF,C,G,F,UTIL
pour DraftKings Fantasy Basketball.
Si vous souhaitez utiliser un tableau Numpy personnalisé pour la matrice de données au lieu des fichiers CSV, vous pouvez le faire à l'aide de la méthode set_matrix()
. Par exemple
cc = concoursConfig (site.dk, ligue.nba) mc = modelconfig () # use 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], ]] ) modèle = lineupGenerator (CC, MC) Model.Set_Matrix (M) Model.Fit ()
La classe LineupGenerator
a deux méthodes de base qui renvoient les alignements optimisés. breed()
Method choisit les deux meilleures alignements en fonction de la somme des points fantastiques avec des positions valides et échangez des joueurs au hasard (créant des gammes d'enfants ). La méthode mutate()
échange au hasard les joueurs le cas échéant. La méthode fit()
s'enroule autour de ces méthodes telles que ces opérations sont effectuées pour plusieurs générations avec des gammes aléatoires supplémentaires.
En tant que module Python
$ 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
ou une commande 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
qui génère
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