def test_respects_locked(): pool = filter_pool(mock_player_pool, PlayerPoolSettings( locked=['A2'], min_proj=31, )) ntools.assert_equals(pool, [p_b, p_c])
def run(rule_set: RuleSet, player_pool: list, optimizer_settings=None, player_settings=None, roster_gen=None, verbose=False) -> Roster: players = pool.filter_pool( player_pool, player_settings, ) optimizer = Optimizer( players=players, rule_set=rule_set, settings=optimizer_settings, ) variables = optimizer.variables if optimizer.solve(): roster = None if roster_gen: roster = roster_gen() else: roster = RosterSelect().roster_gen(rule_set.league) for i, player in enumerate(players): if variables[i].solution_value() == 1: roster.add_player(player) if verbose: print('Optimal roster for: {}'.format(rule_set.league)) print(roster) return roster if verbose: print( ''' No solution found for command line query. Try adjusting your query by taking away constraints. Active constraints: {} Player count: {} ''' .format(optimizer_settings, len(players or [])) ) return None
def test_randomize(): random.seed(1) pool = filter_pool(mock_player_pool, PlayerPoolSettings(randomize=0.1, )) ntools.assert_equals(pool[0].proj, 18.537456976449604)
def test_respects_banned(): pool = filter_pool(mock_player_pool, PlayerPoolSettings(banned=['A1', 'A2'])) ntools.assert_equals(pool, [p_c])
def test_respects_max_cost(): pool = filter_pool(mock_player_pool, PlayerPoolSettings(max_salary=7001)) ntools.assert_equals(pool, [p_a, p_b])
def test_respects_max_proj(): pool = filter_pool(mock_player_pool, PlayerPoolSettings(max_proj=50)) ntools.assert_equals(pool, [p_a, p_b])
def test_no_settings(): pool = filter_pool(mock_player_pool, PlayerPoolSettings()) ntools.assert_equals(pool, mock_player_pool)
def run(rule_set: RuleSet, player_pool: list, constraints: LineupConstraints = LineupConstraints(), optimizer_settings: OptimizerSettings = OptimizerSettings(), player_settings: PlayerPoolSettings = PlayerPoolSettings(), exposure_dict: dict = dict(), roster_gen: Roster = None, verbose=False) -> Roster: players = pool.filter_pool( player_pool, player_settings, ) if rule_set.game_type == 'showdown': if optimizer_settings.no_offense_against_defense: print('WARNING:') print('no_offense_against_defense setting ignored for showdown') print('game types. Use no_defense_against_captain instead.') print() optimizer = Optimizer( players=players, rule_set=rule_set, settings=optimizer_settings, lineup_constraints=constraints, exposure_dict=exposure_dict, ) variables = optimizer.variables if optimizer.solve(): if roster_gen: roster = roster_gen() else: roster = RosterSelect().roster_gen(rule_set.league) for i, player in enumerate(players): if variables[i].solution_value() == 1: roster.add_player(player) if verbose: print('Optimal roster for: {}'.format(rule_set.league)) print(roster) return roster if verbose: print(''' No solution found. Try adjusting your query by taking away constraints. OPTIMIZER CONSTRAINTS: {} LINEUP CONSTRAINTS: {} PLAYER POOL SETTINGS: {} PLAYER COUNT: {} '''.format(optimizer_settings, constraints, player_settings, len(players or []))) return None