コード例 #1
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'),
     ])
コード例 #2
0
 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.load_players(create_players(positions))
     with self.assertRaises(LineupOptimizerException):
         next(optimizer.optimize(1))
     positions.append('1B')
     optimizer.load_players(create_players(positions))
     next(optimizer.optimize(1))
コード例 #3
0
 def test_not_repeating_players(self):
     total_lineups = 5
     custom_players = create_players(
         ['PG', 'SG', 'SF', 'PF', 'C', 'PG', 'SF'])
     for player in custom_players:
         player.fppg = 1000
     self.lineup_optimizer.extend_players(custom_players)
     custom_players_in_lineup = []
     for lineup in self.lineup_optimizer.optimize(total_lineups):
         custom_players_in_lineup.append(
             sum(1 for player in lineup.players
                 if player in custom_players))
     self.assertListEqual(custom_players_in_lineup, [7] * total_lineups)
     self.lineup_optimizer.set_max_repeating_players(3)
     custom_players_in_lineup = []
     for lineup in self.lineup_optimizer.optimize(total_lineups):
         custom_players_in_lineup.append(
             sum(1 for player in lineup.players
                 if player in custom_players))
     self.assertListEqual(custom_players_in_lineup,
                          [7] + [3] * (total_lineups - 1))
     with self.assertRaises(LineupOptimizerException):
         self.lineup_optimizer.set_max_repeating_players(8)
     with self.assertRaises(LineupOptimizerException):
         self.lineup_optimizer.set_max_repeating_players(0)
コード例 #4
0
 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)
コード例 #5
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
     )
コード例 #6
0
 def test_add_player_with_many_positions(self):
     players = create_players(
         ['PG/SG', 'PG', 'PG', 'PG', 'PG/SG/SF', 'SF', 'SF'])
     self.lineup_optimizer.extend_players(players)
     self.lineup_optimizer.add_player_to_lineup(players[0])
     self.lineup_optimizer.add_player_to_lineup(players[1])
     self.lineup_optimizer.add_player_to_lineup(players[2])
     self.lineup_optimizer.add_player_to_lineup(players[3])
     lineup = next(self.lineup_optimizer.optimize(1))
     self.assertTrue(all([p in lineup.players for p in players[:4]]))
     self.lineup_optimizer.add_player_to_lineup(players[4])
     lineup = next(self.lineup_optimizer.optimize(1))
     self.assertTrue(all([p in lineup.players for p in players[:5]]))
     num_of_selected_by_optimizer = len(
         list(
             filter(lambda p: 'C' in p.positions or 'PF' in p.positions,
                    lineup.players)))
     self.assertEqual(num_of_selected_by_optimizer, 2)
コード例 #7
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']))
コード例 #8
0
ファイル: player-tests.py プロジェクト: dgoodwin/rounder
 def setUp(self):
     self.player = create_players([100])[0]