Fantasy-Ga adalah modul Python dan alat baris perintah yang menggunakan algoritma genetika untuk mengotomatiskan generasi lineup olahraga fantasi. Platform dan liga yang didukung saat ini adalah sebagai berikut.
NBA | NFL | MLB | NHL | |
---|---|---|---|---|
DraftKings | ✅ | ✅ | ✅ | ✅ |
Ketergantungan: numpy
Pip Instal Fantasy-Ga
LineupGenerator
Class mendukung file CSV yang diekspor dari platform olahraga fantasi harian untuk kontes tertentu.
dari fantasy_ga impor lineupgenerator dari fantasy_ga.configs situs impor, liga, modelconfig, contestConfigData_path = "Contoh/DraftKings/nba/dksalaries.csv" export_path = "Contoh/DraftKings/NBA/Export.csv" CCC = Contest CC = CONTESCCONCON. Nba) mc = ModelConfig (# Populasi awal lineupsn_pop = 1000# Jumlah evolusi untuk pemuliaan itererasi dan mutasi for_gen = 16# Jumlah barisan anak -anak untuk memilih dari dua lineupsn_breed terbaik = 30# Jumlah mutasi acak untuk setiap evolutionN_MUTATE = 30# Jumlah evolusi senyawa dengan lineupsn_compound acak tambahan = 5) model = lineupgenerator (cc, mc) model.read_csv (data_path) model.fit ()# if Top_n tidak ditentukan, itu akan menghemat maks (500, jumlah lineups) lineups) lineups) diurutkan berdasarkan skoresmodel.export_csv (export_path, top_n = 3) lineups, skor = model.get_top_n_lineups (1) print (f "" "" [lineup terbaik] Pemain: {[model.id_to_name [ID] untuk ID di lineup [0]]] } Total gaji: {sum ([model.id_to_salary [id] untuk id dalam barisan [0]])} diharapkan fpts: {skor [0]} "" ")
numpy.array
untuk data pemain Atau, Anda dapat memberikan numpy.array
di mana 3 kolom pertama sesuai dengan ID pemain, gaji, poin fantasi (FPT), diikuti oleh informasi posisi. Misalnya, kolom sesuai dengan id,salary,fpts,PG,SG,SF,PF,C,G,F,UTIL
untuk Basket Fantasi DraftKings.
Jika Anda ingin menggunakan array numpy khusus untuk matriks data alih -alih file CSV, Anda dapat melakukannya dengan menggunakan metode set_matrix()
. Misalnya
CC = ContestConfig (Situs.dk, liga.nba) mc = modelconfig () # gunakan 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 ()
Kelas LineupGenerator
memiliki dua metode inti yang mengembalikan lineup yang dioptimalkan. Metode breed()
memilih dua lineup terbaik sesuai dengan jumlah poin fantasi dengan posisi yang valid dan menukar pemain secara acak (membuat barisan anak -anak ). Metode mutate()
secara acak bertukar pemain jika berlaku. Metode fit()
membungkus metode -metode tersebut sehingga operasi tersebut dilakukan untuk beberapa generasi dengan lineup acak tambahan.
Sebagai modul 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
atau perintah 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
yang menghasilkan
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