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)
예제 #2
0
 def setUpClass(cls):
     cls.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),
     ]
 def setUp(self):
     self.optimizer = get_optimizer(Site.YAHOO, Sport.BASKETBALL)
     self.first_team = 'TEST'
     self.second_team = 'TEST2'
     self.players = [
         Player('1', 'p1', 'p1', ['PG'], self.first_team, 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', ['SF', 'PF'], self.second_team, 10, 2),
         Player('10', 'p10', 'p10', ['PG', 'SG', 'SF'], self.second_team,
                10, 2),
         Player('11', 'p11', 'p11', ['C'], self.first_team, 10, 2),
         Player('12', 'p12', 'p12', ['SF'], self.first_team, 10, 2),
         Player('13', 'p13', 'p13', ['PF', 'C'], self.first_team, 10, 2),
     ]
     self.optimizer.load_players(self.players)
예제 #4
0
 def test_adding_player_with_salary_bigger_than_budget(self):
     self.lineup_optimizer.reset_lineup()
     player = Player(1, '1', '1', ['PG'], 'DEN', 100000, 2)
     with self.assertRaises(LineupOptimizerException):
         self.lineup_optimizer.add_player_to_lineup(player)
예제 #5
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)
 def setUp(self):
     self.players = [
         Player('1', '1', '1', ['P'], 'HOU', 3000, 10),
         Player('2', '2', '2', ['P'], 'BOS', 3000, 20),
         Player('3', '3', '3', ['C'], 'BOS', 3000, 30),
         Player('4', '4', '4', ['SS'], 'HOU', 3000, 30),
         Player('5', '5', '5', ['OF'], 'HOU', 3000, 30),
         Player('6', '6', '6', ['OF'], 'HOU', 3000, 30),
         Player('7', '7', '7', ['OF'], 'HOU', 3000, 30),
         Player('8', '8', '8', ['1B'], 'BOS', 3000, 30),
         Player('9', '9', '9', ['2B'], 'BOS', 3000, 5),
         Player('10', '10', '10', ['3B'], 'BOS', 3000, 5),
         Player('11', '11', '11', ['P'], 'ARI', 3000, 5),
         Player('12', '12', '12', ['SS'], 'NY', 3000, 5),
         Player('13', '13', '13', ['OF'], 'POR', 3000, 5),
     ]
     self.optimizer = get_optimizer(Site.FANDUEL, Sport.BASEBALL)
     self.optimizer.settings.min_teams = 3
     self.optimizer.settings.max_from_one_team = 5
     self.optimizer.load_players(self.players)
 def setUp(self):
     self.players = [
         Player('1', '1', '1', ['P'], 'HOU', 3000, 10),
         Player('2', '2', '2', ['P'], 'NY', 3000, 20),
         Player('3', '3', '3', ['C'], 'BOS', 3000, 30),
         Player('4', '4', '4', ['SS'], 'HOU', 3000, 30),
         Player('5', '5', '5', ['OF'], 'HOU', 3000, 30),
         Player('6', '6', '6', ['OF'], 'HOU', 3000, 30),
         Player('7', '7', '7', ['OF'], 'HOU', 3000, 30),
         Player('8', '8', '8', ['1B'], 'HOU', 3000, 30),
         Player('9', '9', '9', ['2B'], 'MIA', 3000, 5),
         Player('10', '10', '10', ['3B'], 'ARI', 3000, 5),
         Player('11', '11', '11', ['1B'], 'ARI', 3000, 5),
     ]
     self.optimizer = get_optimizer(Site.FANDUEL, Sport.BASEBALL)
     self.optimizer.load_players(self.players)
 def setUp(self):
     self.players = [
         Player('1', '1', '1', ['SP', 'RP'], 'HOU', 3000, 15, ),
         Player('2', '2', '2', ['SP', 'RP'], 'HOU', 3000, 15, ),
         Player('3', '3', '3', ['C'], 'HOU', 3000, 15, ),
         Player('4', '4', '4', ['SS'], 'HOU', 3000, 15, ),
         Player('5', '5', '5', ['OF'], 'MIL', 3000, 15, ),
         Player('6', '6', '6', ['OF'], 'MIL', 3000, 15, ),
         Player('7', '7', '7', ['OF'], 'MIL', 3000, 15, ),
         Player('8', '8', '8', ['1B'], 'BOS', 3000, 15, roster_order=1),
         Player('9', '9', '9', ['2B'], 'BOS', 3000, 20, roster_order=2),
         Player('10', '10', '10', ['3B'], 'BOS', 3000, 25, roster_order=3),
         Player('11', '11', '11', ['1B'], 'NY', 3000, 30, roster_order=4),
         Player('12', '12', '12', ['2B'], 'NY', 3000, 35, roster_order=5),
         Player('13', '13', '13', ['3B'], 'NY', 3000, 50, roster_order=6),
     ]
     self.players_dict = {player.id: player for player in self.players}
     self.positions = ['1B', '2B', '3B']
     self.optimizer = get_optimizer(Site.DRAFTKINGS, Sport.BASEBALL)
     self.optimizer.load_players(self.players)
 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)
예제 #10
0
 def test_min_exposure_error(self):
     self.lineup_optimizer.player_pool.extend_players([
         Player('5', '5', '5', ['C'], '5', 1000, 0, min_exposure=1)
     ])
     with self.assertRaises(LineupOptimizerException):
         list(self.lineup_optimizer.optimize(10))