Esempio n. 1
0
def test_respects_locked():
    pool = filter_pool(mock_player_pool,
                       PlayerPoolSettings(
                           locked=['A2'],
                           min_proj=31,
                       ))
    ntools.assert_equals(pool, [p_b, p_c])
Esempio n. 2
0
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
Esempio n. 3
0
def test_randomize():
    random.seed(1)
    pool = filter_pool(mock_player_pool, PlayerPoolSettings(randomize=0.1, ))
    ntools.assert_equals(pool[0].proj, 18.537456976449604)
Esempio n. 4
0
def test_respects_banned():
    pool = filter_pool(mock_player_pool,
                       PlayerPoolSettings(banned=['A1', 'A2']))
    ntools.assert_equals(pool, [p_c])
Esempio n. 5
0
def test_respects_max_cost():
    pool = filter_pool(mock_player_pool, PlayerPoolSettings(max_salary=7001))
    ntools.assert_equals(pool, [p_a, p_b])
Esempio n. 6
0
def test_respects_max_proj():
    pool = filter_pool(mock_player_pool, PlayerPoolSettings(max_proj=50))
    ntools.assert_equals(pool, [p_a, p_b])
Esempio n. 7
0
def test_no_settings():
    pool = filter_pool(mock_player_pool, PlayerPoolSettings())
    ntools.assert_equals(pool, mock_player_pool)
Esempio n. 8
0
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