Exemple #1
0
 def test_lineup_building(self):
     def create_players(positions_list):
         players = []
         for i, positions in enumerate(positions_list):
             players.append(
                 Player(player_id=i, first_name=i, last_name=i, positions=positions.split('/'), team=str(i),
                        salary=10, fppg=10)
             )
         return players
     optimizer = get_optimizer(Site.DRAFTKINGS, Sport.BASKETBALL)
     optimizer._build_lineup(create_players(['PG', 'SG', 'SF', 'PF', 'C', 'SG', 'SF', 'SF']))
     optimizer._build_lineup(create_players(['PG/SG', 'SG/SF', 'SF/PF', 'PF/C', 'C/PG', 'SG/SF', 'SF/PF', 'SF/PF']))
     optimizer._build_lineup(create_players(['PG', 'PG', 'C', 'C', 'SG/SF', 'SF/PF', 'SF/PF', 'PG/SG']))
     optimizer._build_lineup(create_players(['C', 'SG/SF', 'PG/SG', 'SG/SF', 'SG/SF', 'C', 'SF/PF', 'PG']))
     optimizer._build_lineup(create_players(['SG', 'PF', 'C', 'C', 'PF', 'PG/SF', 'PG/SG', 'PG/SG']))
     optimizer._build_lineup(create_players(['PG', 'PG/SG', 'PG/SG/SF', 'PG/SF/PF', 'PG/PF/C', 'PG', 'PG/SF/PF',
                                             'PG/SG']))
     with self.assertRaises(LineupOptimizerException):
         optimizer._build_lineup(create_players(['PG', 'SG', 'SF', 'PF', 'C', 'SG', 'C', 'C']))
     optimizer = get_optimizer(Site.DRAFTKINGS, Sport.FOOTBALL)
     optimizer._build_lineup(create_players(['QB', 'WR', 'WR', 'WR', 'WR', 'RB', 'RB', 'TE', 'DST']))
     with self.assertRaises(LineupOptimizerException):
         optimizer._build_lineup(create_players(['QB', 'WR', 'WR', 'WR', 'WR', 'WR', 'RB', 'RB', 'TE']))
     optimizer = get_optimizer(Site.DRAFTKINGS, Sport.HOCKEY)
     optimizer._build_lineup(create_players(['LW', 'RW', 'LW', 'RW', 'C', 'C', 'D', 'D', 'G']))
     with self.assertRaises(LineupOptimizerException):
         optimizer._build_lineup(create_players(['LW', 'RW', 'LW', 'RW', 'LW', 'C', 'D', 'D', 'G']))
     optimizer = get_optimizer(Site.DRAFTKINGS, Sport.BASEBALL)
     optimizer._build_lineup(create_players(['P', 'P', 'C', '1B', '2B', '3B', 'SS', 'OF', 'OF', 'OF']))
     with self.assertRaises(LineupOptimizerException):
         optimizer._build_lineup(create_players(['P', 'C', 'C', '1B', '2B', '3B', 'SS', 'OF', 'OF', 'OF']))
     optimizer = get_optimizer(Site.FANTASY_DRAFT, Sport.BASKETBALL)
     optimizer._build_lineup(create_players(['PG', 'PG', 'PG', 'SF', 'SF', 'SF', 'SF', 'SF']))
     with self.assertRaises(LineupOptimizerException):
         optimizer._build_lineup(create_players(['PG', 'PG', 'SF', 'SF', 'SF', 'SF', 'SF', 'SF']))
Exemple #2
0
 def test_lineup_building(self):
     optimizer = get_optimizer(Site.DRAFTKINGS, Sport.BASKETBALL)
     optimizer._build_lineup(
         create_players(['PG', 'SG', 'SF', 'PF', 'C', 'SG', 'SF', 'SF']))
     optimizer._build_lineup(
         create_players([
             'PG/SG', 'SG/SF', 'SF/PF', 'PF/C', 'C/PG', 'SG/SF', 'SF/PF',
             'SF/PF'
         ]))
     optimizer._build_lineup(
         create_players(
             ['PG', 'PG', 'C', 'C', 'SG/SF', 'SF/PF', 'SF/PF', 'PG/SG']))
     optimizer._build_lineup(
         create_players(
             ['C', 'SG/SF', 'PG/SG', 'SG/SF', 'SG/SF', 'C', 'SF/PF', 'PG']))
     optimizer._build_lineup(
         create_players(
             ['SG', 'PF', 'C', 'C', 'PF', 'PG/SF', 'PG/SG', 'PG/SG']))
     optimizer._build_lineup(
         create_players([
             'PG', 'PG/SG', 'PG/SG/SF', 'PG/SF/PF', 'PG/PF/C', 'PG',
             'PG/SF/PF', 'PG/SG'
         ]))
     with self.assertRaises(LineupOptimizerException):
         optimizer._build_lineup(
             create_players(['PG', 'SG', 'SF', 'PF', 'C', 'SG', 'C', 'C']))
     optimizer = get_optimizer(Site.DRAFTKINGS, Sport.FOOTBALL)
     optimizer._build_lineup(
         create_players(
             ['QB', 'WR', 'WR', 'WR', 'WR', 'RB', 'RB', 'TE', 'DST']))
     with self.assertRaises(LineupOptimizerException):
         optimizer._build_lineup(
             create_players(
                 ['QB', 'WR', 'WR', 'WR', 'WR', 'WR', 'RB', 'RB', 'TE']))
     optimizer = get_optimizer(Site.DRAFTKINGS, Sport.HOCKEY)
     optimizer._build_lineup(
         create_players(['LW', 'RW', 'LW', 'RW', 'C', 'C', 'D', 'D', 'G']))
     with self.assertRaises(LineupOptimizerException):
         optimizer._build_lineup(
             create_players(
                 ['LW', 'RW', 'LW', 'RW', 'LW', 'C', 'D', 'D', 'G']))
     optimizer = get_optimizer(Site.DRAFTKINGS, Sport.BASEBALL)
     optimizer._build_lineup(
         create_players(
             ['SP', 'SP', 'C', '1B', '2B', '3B', 'SS', 'OF', 'OF', 'OF']))
     with self.assertRaises(LineupOptimizerException):
         optimizer._build_lineup(
             create_players(
                 ['P', 'C', 'C', '1B', '2B', '3B', 'SS', 'OF', 'OF', 'OF']))
     optimizer = get_optimizer(Site.FANTASY_DRAFT, Sport.BASKETBALL)
     optimizer._build_lineup(
         create_players(['PG', 'PG', 'PG', 'SF', 'SF', 'SF', 'SF', 'SF']))
     with self.assertRaises(LineupOptimizerException):
         optimizer._build_lineup(
             create_players(
                 ['PG', 'PG', 'SF', 'SF', 'SF', 'SF', 'SF', 'SF']))
def LoadOptimizer(filename):
    global optimizer
    if (selected_sport.get() == 1):
        optimizer = get_optimizer(Site.DRAFTKINGS, Sport.FOOTBALL)
    elif (selected_sport.get() == 2):
        optimizer = get_optimizer(Site.DRAFTKINGS, Sport.HOCKEY)
    try:
        optimizer.load_players_from_csv(filename)
    except:
        sys.exit('Invalid csv file format')
Exemple #4
0
def optimize_lineup(df, good_list, alright_list, meh_list):
    optimizer = get_optimizer(Site.FANDUEL, Sport.BASKETBALL)
    optimizer.load_players_from_csv("fanduel.csv")

    df['name'] = df.apply(lambda row: (str.split(row['name'], ' Jr.')[0]), axis=1)
    for player in optimizer.players:
        if player.full_name in df['name'].unique():
            projected_score = df.loc[
                (df['name'] == player.full_name) & (df['team'] == NBA_TEAMS.find_NBA_abrev(player.team))][
                'Projected Score'].tolist()
            if len(projected_score) > 0:
                player.fppg = projected_score[0]
            else:
                player.fppg = 0

            # print(f"{player.full_name:}{projected_score}")
        else:
            player.fppg = 0

    optimizer.set_min_salary_cap(60000)
    optimizer.set_max_repeating_players(2)
    optimizer.add_stack(TeamStack(2, for_teams=good_list))
    optimizer.add_stack(TeamStack(2, for_teams=alright_list))
    optimizer.add_stack(TeamStack(1, for_teams=meh_list))
    # for lineup in optimizer.optimize(n=50):
    #     print(lineup)
    #     print(lineup.players)  # list of players
    #     print(lineup.fantasy_points_projection)
    #     print(lineup.salary_costs)

    exporter = CSVLineupExporter(optimizer.optimize(n=50))
    exporter.export('lineups.csv')
    print("Lineups optimized and exported!")
 def setUp(self):
     self.small_salary_player = Player('1', 'p1', 'p1', ['PG'], 'team1', 1, 200)
     self.players = load_players()
     self.players.append(self.small_salary_player)
     self.lineup_optimizer = get_optimizer(Site.DRAFTKINGS, Sport.BASKETBALL)
     self.lineup_optimizer.load_players(self.players)
     self.min_salary_cap = self.lineup_optimizer.settings.budget
 def setUp(self):
     first_game_info = GameInfo('HOU', 'BOS', datetime.now(), False)
     second_game_info = GameInfo('CHI', 'NY', datetime.now(), False)
     self.players = [
         Player('1', '1', '1', ['SP', 'RP'], 'HOU',
                3000, 15, game_info=first_game_info),
         Player('2', '2', '2', ['SP', 'RP'], 'BOS',
                3000, 15, game_info=first_game_info),
         Player('3', '3', '3', ['C'], 'HOU', 3000,
                15, game_info=first_game_info),
         Player('4', '4', '4', ['1B'], 'BOS', 3000,
                15, game_info=first_game_info),
         Player('5', '5', '5', ['2B'], 'HOU', 3000,
                15, game_info=first_game_info),
         Player('6', '6', '6', ['3B'], 'BOS', 3000,
                15, game_info=first_game_info),
         Player('7', '7', '7', ['SS'], 'HOU', 3000,
                15, game_info=first_game_info),
         Player('8', '8', '8', ['OF'], 'BOS', 3000,
                15, game_info=first_game_info),
         Player('9', '9', '9', ['OF'], 'HOU', 3000,
                15, game_info=first_game_info),
         Player('10', '10', '10', ['OF'], 'BOS',
                3000, 15, game_info=first_game_info),
         Player('11', '11', '11', ['SP', 'RP'], 'CHI',
                3000, 5, game_info=second_game_info),
         Player('12', '12', '12', ['SP', 'RP'], 'NY',
                3000, 5, game_info=second_game_info),
     ]
     self.optimizer = get_optimizer(Site.DRAFTKINGS, Sport.BASEBALL)
     self.optimizer.load_players(self.players)
 def setUp(self):
     self.players = [
         Player('1', 'Golf Player 1', '', [
                'G'], '', 5000, 200, projected_ownership=0.95),
         Player('2', 'Golf Player 2', '', [
                'G'], '', 5000, 20, projected_ownership=0.7),
         Player('3', 'Golf Player 3', '', [
                'G'], '', 5000, 20, projected_ownership=0.7),
         Player('4', 'Golf Player 4', '', [
                'G'], '', 5000, 20, projected_ownership=0.7),
         Player('5', 'Golf Player 5', '', [
                'G'], '', 5000, 5, projected_ownership=0.5),
         Player('6', 'Golf Player 6', '', [
                'G'], '', 5000, 5, projected_ownership=0.5),
         Player('7', 'Golf Player 7', '', [
                'G'], '', 5000, 5, projected_ownership=0.5),
         Player('8', 'Golf Player 8', '', [
                'G'], '', 5000, 5, projected_ownership=0.5),
         Player('9', 'Golf Player 9', '', [
                'G'], '', 5000, 5, projected_ownership=0.5),
         Player('10', 'Golf Player 10', '', [
                'G'], '', 5000, 5, projected_ownership=0.5),
     ]
     self.optimizer = get_optimizer(Site.DRAFTKINGS, Sport.GOLF)
     self.optimizer.load_players(self.players)
 def setUp(self):
     self.players = load_players()
     self.player_with_max_exposure = [
         Player('1',
                'p1',
                'p1', ['PG', 'SG'],
                'DEN',
                10,
                200,
                max_exposure=0.3),
         Player('2', 'p2', 'p2', ['PF', 'SF'], 'DEN', 10, 200),
         Player('3', 'p3', 'p3', ['C'], 'DEN', 100, 2, max_exposure=0.35),
         Player('4', 'p4', 'p4', ['PG'], 'DEN', 100, 2),
         Player('5', 'p5', 'p5', ['PF'], 'DEN', 100, 2, max_exposure=0),
         Player('6', 'p6', 'p6', ['SF'], 'DEN', 1, 2001, max_exposure=0),
     ]
     self.players_with_min_exposure = [
         Player('7',
                'p7',
                'p7', ['PG', 'SG'],
                'SAS',
                1000,
                0,
                min_exposure=0.3),
         Player('8', 'p8', 'p8', ['C'], 'SAS', 1000, 0, min_exposure=0.35),
         Player('9', 'p9', 'p9', ['C'], 'SAS', 1000, 0, min_exposure=1),
     ]
     self.lineup_optimizer = get_optimizer(Site.DRAFTKINGS,
                                           Sport.BASKETBALL)
     self.lineup_optimizer.load_players(self.players)
 def setUp(self):
     self.players = load_players()
     self.optimizer = get_optimizer(Site.DRAFTKINGS, Sport.BASKETBALL)
     self.optimizer.settings.max_from_one_team = 4
     self.test_team = 'TEST'
     self.spacing_players = [
         Player('1',
                '1',
                '1', ['PG'],
                self.test_team,
                100,
                40,
                roster_order=1),
         Player('2',
                '2',
                '2', ['SG'],
                self.test_team,
                100,
                30,
                roster_order=2),
         Player('3',
                '3',
                '3', ['SF'],
                self.test_team,
                100,
                50,
                roster_order=3),
     ]
     self.optimizer.load_players(self.players + self.spacing_players)
Exemple #10
0
 def test_positions_from_same_team(self):
     optimizer = get_optimizer(Site.YAHOO, Sport.BASKETBALL)
     players = [
         Player(1, 'p1', 'p1', ['PG'], 'team1', 10, 200),
         Player(2, 'p2', 'p2', ['SG'], 'team2', 10, 200),
         Player(3, 'p3', 'p3', ['SF'], 'team3', 10, 200),
         Player(4, 'p4', 'p4', ['PF'], 'team4', 10, 200),
         Player(5, 'p5', 'p5', ['C'], 'team5', 10, 200),
         Player(6, 'p6', 'p6', ['PG', 'SG'], 'team6', 10, 200),
         Player(7, 'p7', 'p7', ['SF', 'PF'], 'team7', 10, 200),
         Player(8, 'p8', 'p8', ['PG', 'SG', 'SF'], 'team8', 10, 200),
         Player(9, 'p9', 'p9', ['C'], 'team1', 10, 5),
         Player(10, 'p10', 'p10', ['SF'], 'team1', 10, 2),
         Player(11, 'p11', 'p11', ['PF', 'C'], 'team1', 10, 2),
     ]
     optimizer.load_players(players)
     lineup = next(optimizer.optimize(1))
     self.assertEqual(len(set([p.team for p in lineup.lineup])), 8)
     optimizer.set_positions_for_same_team(['PG', 'C'])
     lineup = next(optimizer.optimize(1))
     self.assertEqual(len(set([p.team for p in lineup.lineup])), 7)
     self.assertTrue(all(players[i] in lineup.lineup for i in [0, 8]))
     optimizer.set_positions_for_same_team(['PG', 'SF', 'C'])
     lineup = next(optimizer.optimize(1))
     self.assertEqual(len(set([p.team for p in lineup.lineup])), 6)
     self.assertTrue(all(players[i] in lineup.lineup for i in [0, 8, 9]))
     optimizer.set_positions_for_same_team(['PG', 'SF', 'C', 'C'])
     lineup = next(optimizer.optimize(1))
     self.assertEqual(len(set([p.team for p in lineup.lineup])), 5)
     self.assertTrue(all(players[i] in lineup.lineup for i in [0, 8, 9, 10]))
     # Test reset
     optimizer.set_positions_for_same_team(None)
     lineup = next(optimizer.optimize(1))
     self.assertEqual(len(set([p.team for p in lineup.lineup])), 8)
Exemple #11
0
 def setUp(self):
     self.future_game_info = GameInfo(
         home_team='H',
         away_team='A',
         game_started=False,
         starts_at=datetime.now(timezone('EST')) + timedelta(days=1))
     self.finished_game_info = GameInfo(
         home_team='H',
         away_team='A',
         game_started=False,
         starts_at=datetime.now(timezone('EST')) - timedelta(days=1))
     self.lineup_optimizer = get_optimizer(Site.DRAFTKINGS,
                                           Sport.BASKETBALL)
     positions = ['PG', 'SG', 'SF', 'PF', 'C', 'PG/SG', 'SF/PF', 'C']
     self.active_players = create_players(positions,
                                          game_info=self.future_game_info,
                                          salary=5000,
                                          fppg=20)
     self.inactive_players = create_players(
         positions, game_info=self.finished_game_info, salary=4500, fppg=10)
     self.lineup_optimizer.load_players(self.active_players +
                                        self.inactive_players)
     self.lineup = Lineup([
         LineupPlayer(self.active_players[0], 'PG'),
         LineupPlayer(self.inactive_players[1], 'SG'),
         LineupPlayer(self.active_players[2], 'SF'),
         LineupPlayer(self.inactive_players[3], 'PF'),
         LineupPlayer(self.active_players[4], 'C'),
         LineupPlayer(self.inactive_players[5], 'G'),
         LineupPlayer(self.active_players[6], 'F'),
         LineupPlayer(self.inactive_players[7], 'UTIL'),
     ])
 def setUp(self):
     self.players = load_players()
     self.starters = [
         Player('1', '1', '1', ['PG', 'SG'], '1', 1000, 0, is_confirmed_starter=True),
         Player('2', '2', '2', ['SF', 'PF'], '2', 1000, 0, is_confirmed_starter=True),
     ]
     self.lineup_optimizer = get_optimizer(Site.DRAFTKINGS, Sport.BASKETBALL)
     self.lineup_optimizer.player_pool.load_players(self.players + self.starters)
 def setUp(self):
     self.max_from_one_team = 1
     self.test_team = 'TEST'
     self.players = load_players()
     self.effective_players = create_players(['PG/SG', 'SF/PF', 'C'], salary=10, fppg=200, team=self.test_team)
     self.lineup_optimizer = get_optimizer(Site.DRAFTKINGS, Sport.BASKETBALL)
     self.lineup_optimizer.settings.max_from_one_team = self.max_from_one_team
     self.lineup_optimizer.load_players(self.players + self.effective_players)
 def test_unique_player_rule(self):
     optimizer = get_optimizer(Site.DRAFTKINGS, Sport.GOLF)
     players = create_players(['G'] * 10)
     high_fppg_player = Player('1', 'High FPPG', 'Player', ['G'], '', 50, 200)
     players.extend([high_fppg_player] * 2)
     optimizer.load_players(players)
     lineup = next(optimizer.optimize(1))
     self.assertEqual(len([p for p in lineup if p == high_fppg_player]), 1)
 def setUp(self):
     self.players = load_players()
     self.high_fppg_players = create_players(
         ['PG', 'SG', 'SF', 'PF', 'C', 'PG', 'SF'], fppg=1000)
     self.lineup_optimizer = get_optimizer(Site.DRAFTKINGS,
                                           Sport.BASKETBALL)
     self.lineup_optimizer.load_players(self.players +
                                        self.high_fppg_players)
 def test_exact_number_of_players_for_position(self):
     optimizer = get_optimizer(Site.DRAFTKINGS, Sport.BASEBALL)
     positions = ['OF', 'OF', '2B', '3B', 'SP', 'OF/SS', 'SP', '1B/OF', 'C', 'RP']
     optimizer.player_pool.load_players(create_players(positions))
     with self.assertRaises(GenerateLineupException):
         next(optimizer.optimize(1))
     positions.append('1B')
     optimizer.player_pool.load_players(create_players(positions))
     next(optimizer.optimize(1))
 def test_projected_ownership_constraint_for_user_without_ownership(self):
     optimizer = get_optimizer(Site.DRAFTKINGS, Sport.GOLF)
     players = deepcopy(self.players)
     for player in players[1:]:
         player.projected_ownership = None
     optimizer.load_players(players)
     optimizer.set_projected_ownership(max_projected_ownership=0.9)
     lineup = next(optimizer.optimize(n=1))
     self.assertTrue(self.players[0] not in lineup.players)
Exemple #18
0
def dk_lineup(request):
    import requests
    # check if most recent lineups were already created.
    from pydfs_lineup_optimizer import get_optimizer, Site, Sport, CSVLineupExporter
    project = os.environ["PROJECT_ID"]
    bucket = os.environ["BUCKET"]
    dataset_base = os.environ["DATASET_BASE"]
    dataset_dfs = os.environ["DATASET_DFS"]
    today = (datetime.now() - timedelta(hours=4)).strftime('%Y-%m-%d')
    request_json = request.get_json(silent=True)

    starting_lineups = "https://us-central1-{}.cloudfunctions.net/starting_lineups"
    r = requests.post(starting_lineups.format(project))

    if request_json and "n_lineups" in request_json:
        n_lineups = int(request_json.get("n_lineups"))
        if n_lineups > 100:
            n_lineups = 100
    else:
        n_lineups = 100

    df = get_draftkings_predictions(project=project,
                                    dataset_base=dataset_base,
                                    dataset_dfs=dataset_dfs,
                                    dt=today.replace("-", ""))
    df.to_csv("/tmp/mlb_dk.csv", index=False)
    optimizer = get_optimizer(Site.DRAFTKINGS, Sport.BASEBALL)
    optimizer.load_players_from_csv("/tmp/mlb_dk.csv")
    exporter = CSVLineupExporter(optimizer.optimize(n_lineups))
    exporter.export("/tmp/lineups.csv")

    # lineups = pd.DataFrame()
    # cols = ["pos", "first", "last", "position", "team", "opp", "fppg", "salary"]
    # i=1
    # for lineup in optimizer.optimize(n=n_lineups):
    #     lineup_list = lineup.printer.print_lineup(lineup).split("\n")[0:10]
    #     lineup_df = pd.concat([pd.DataFrame(dict(zip(cols,re.split("\s{1,}",x.strip())[1:9])),index=[0])
    #                            for x in lineup_list], axis=0, ignore_index=True)
    #     lineup_df["lineup_number"] = i
    #     i+=1
    #     lineups = pd.concat([lineups, lineup_df], ignore_index=True)
    #
    # # lineups.columns = ["pos", "first", "last", "position", "team", "opp", "projection", "salary", "lineup_number"]
    # lineups.to_csv("/tmp/lineups.csv", index=False)
    upload_blob(bucket_name=bucket,
                source_file_name="/tmp/lineups.csv",
                destination_blob_name="lineups/daily_dk_lineups.csv")

    upload_blob(bucket_name=bucket,
                source_file_name="/tmp/lineups.csv",
                destination_blob_name="lineups/mlb/dk_lineups_{}.csv".format(
                    today.replace("-", "")))

    lineup_link = "https://storage.cloud.google.com/{bucket}/lineups/daily_dk_lineups.csv"

    return lineup_link.format(bucket=bucket, dt=today.replace("-", ""))
 def setUp(self):
     self.players = load_players()
     self.players_with_min_exposure = [
         Player('1', '1', '1', ['PG', 'SG'], '1', 1000, 0, min_exposure=0.3),
         Player('2', '2', '2', ['SF', 'PF'], '2', 1000, 0, min_exposure=0.35),
         Player('3', '3', '3', ['C'], '3', 1000, 0, min_exposure=0.95),
         Player('4', '4', '4', ['C'], '4', 1000, 0, min_exposure=0.93),
     ]
     self.lineup_optimizer = get_optimizer(Site.DRAFTKINGS, Sport.BASKETBALL)
     self.lineup_optimizer.player_pool.load_players(self.players + self.players_with_min_exposure)
 def setUp(self):
     self.players = load_players()
     self.test_team = 'TEST'
     self.high_fppg_players = [
         Player('1', '1', '1', ['PG'], self.test_team, 3000, 100),
         Player('2', '2', '2', ['SG'], self.test_team, 3000, 100),
         Player('3', '3', '3', ['SF'], self.test_team, 3000, 100),
     ]
     self.high_fppg_players_positions = ['PG', 'SG', 'SF']
     self.optimizer = get_optimizer(Site.DRAFTKINGS, Sport.BASKETBALL)
     self.optimizer.load_players(self.players + self.high_fppg_players)
 def process(self):
     data = self._import_data("AFLDFSUniverses.csv")
     lineup_list = list()
     for i in [100, 800, 1500, 2200, 2900, 3600, 4300, 5000, 5700, 6400, 7100, 7800, 8500, 9200, 9900]:
         print("Processing lineup " + str(i))
         optimizer = get_optimizer(Site.DRAFTSTARS, Sport.AFL)
         players = self._create_player_list(data, i)
         optimizer.load_players(players)
         lineup = optimizer.optimize(n=1)
         lineup_list.append(lineup)
     return lineup_list
 def setUp(self):
     self.players = [
         Player('1', '1', '1', ['T1'], 'HOU', 0, 30),
         Player('2', '2', '2', ['T1'], 'BOS', 0, 30),
         Player('3', '3', '3', ['T2'], 'BOS', 0, 30),
         Player('4', '4', '4', ['T2'], 'HOU', 0, 30),
         Player('5', '5', '5', ['T3'], 'HOU', 0, 30),
         Player('6', '6', '6', ['T3'], 'HOU', 0, 30),
     ]
     self.optimizer = get_optimizer(Site.DRAFTKINGS_TIERS, Sport.BASEBALL)
     self.optimizer.player_pool.load_players(self.players)
 def process(self):
     data = self._import_data("UNIVERSES.csv")
     lineup_list = list()
     for i in range(201):
         print("Processing lineup " + str(i))
         optimizer = get_optimizer(Site.DRAFTSTARS, Sport.BASKETBALL)
         players = self._create_player_list(data, i)
         optimizer.load_players(players)
         lineup = optimizer.optimize(n=1)
         lineup_list.append(lineup)
     return lineup_list
Exemple #24
0
 def test_with_injured_optimize(self):
     optimizer = get_optimizer(Site.DRAFTKINGS, Sport.BASKETBALL)
     cool_player = Player(1, 'P1', 'P1', ['PG'], 'team1', 1, 200)
     optimizer.load_players(self.players)
     optimizer.extend_players([cool_player])
     lineup = next(optimizer.optimize(1))
     self.assertIn(cool_player, lineup)
     cool_player.is_injured = True
     lineup = next(optimizer.optimize(1))
     self.assertNotIn(cool_player, lineup)
     lineup = next(optimizer.optimize(1, with_injured=True))
     self.assertIn(cool_player, lineup)
 def setUp(self):
     self.players = load_players()
     self.first_team = 'TEST 1'
     self.second_team = 'TEST 2'
     self.high_fppg_players = [
         Player('1', '1', '1', ['PG'], self.first_team, 3000, 100),
         Player('2', '2', '2', ['SG'], self.first_team, 3000, 100),
         Player('3', '3', '3', ['SF'], self.second_team, 3000, 100),
         Player('3', '3', '3', ['PF'], self.second_team, 3000, 100),
     ]
     self.optimizer = get_optimizer(Site.DRAFTKINGS, Sport.BASKETBALL)
     self.optimizer.load_players(self.players + self.high_fppg_players)
 def setUp(self):
     self.players = load_players()
     self.group = [
         Player('1', '1', '1', ['PG'], '1', 3000, 1),
         Player('2', '2', '2', ['SG'], '2', 3000, 1),
     ]
     self.high_fppg_group = [
         Player('3', '3', '3', ['SF'], '3', 30, 100),
         Player('4', '4', '4', ['PF'], '4', 30, 100),
     ]
     self.optimizer = get_optimizer(Site.DRAFTKINGS, Sport.BASKETBALL)
     self.optimizer.load_players(self.players + self.group + self.high_fppg_group)
Exemple #27
0
 def test_lineup_with_players_from_same_positions(self):
     optimizer = get_optimizer(Site.DRAFTKINGS, Sport.BASKETBALL)
     optimizer.load_players(
         create_players(['PG', 'SG', 'SF', 'PF', 'C', 'PG', 'SF', 'PF']))
     optimizer.extend_players([
         Player(1, 'p1', 'p1', ['C'], 'DEN', 1000, 2),
         Player(2, 'p2', 'p2', ['C'], 'DEN', 1000, 2),
     ])
     optimizer.set_players_with_same_position({'C': 1})
     lineup = next(optimizer.optimize(1))
     self.assertTrue(
         len(list(filter(lambda x: 'C' in x.positions, lineup.lineup))) >= 2
     )
 def setUp(self):
     self.players = load_players()
     self.first_team = 'TEST 1'
     self.second_team = 'TEST 2'
     self.game_info = GameInfo(self.first_team, self.second_team, datetime.now(), False)
     self.extra_players = [
         Player('1', '1', '1', ['PG'], self.first_team, 3000, 100, game_info=self.game_info),
         Player('2', '2', '2', ['SG'], self.first_team, 3000, 100, game_info=self.game_info),
         Player('3', '3', '3', ['SF'], self.second_team, 3000, 1, game_info=self.game_info),
         Player('4', '4', '4', ['PF'], self.second_team, 3000, 1, game_info=self.game_info),
     ]
     self.optimizer = get_optimizer(Site.DRAFTKINGS, Sport.BASKETBALL)
     self.optimizer.load_players(self.players + self.extra_players)
Exemple #29
0
 def setUpClass(cls):
     optimizer = get_optimizer(Site.YAHOO, Sport.BASKETBALL)
     cls.players = [
         Player('1', 'First Name 1', 'Last Name 1', ['PG'], 'Team1', 20, 20),
         Player('2', 'First Name 2', 'Last Name 2', ['SG'], 'Team2', 20, 20),
         Player('3', 'First Name 3', 'Last Name 3', ['SF'], 'Team3', 20, 20),
         Player('4', 'First Name 4', 'Last Name 4', ['PF'], 'Team4', 20, 20),
         Player('5', 'First Name 5', 'Last Name 5', ['C'], 'Team5', 20, 20),
         Player('6', 'First Name 6', 'Last Name 6', ['PG', 'SG'], 'Team6', 20, 20),
         Player('7', 'First Name 7', 'Last Name 7', ['SF', 'PF'], 'Team7', 20, 20),
         Player('8', 'First Name 8', 'Last Name 8', ['PG', 'SG', 'SF'], 'Team8', 20, 20),
     ]
     optimizer.load_players(cls.players)
     cls.lineups = list(optimizer.optimize(1))
Exemple #30
0
def optimize_by_date(
        optimization_input='baseball_optimization_actual_performance.csv'):
    # Inputs:
    # 1. location of the .CSV to be optimized

    # Outputs:
    # 1. For now this function prints the result.  May be able to enhance this later on

    optimizer = get_optimizer(Site.FANDUEL, Sport.BASEBALL)

    optimizer.load_players_from_csv(optimization_input)
    lineup_generator = optimizer.optimize(20)

    for lineup in lineup_generator:
        print(lineup)