def run_multi( iterations: int, rule_set: RuleSet, player_pool: list, constraints: LineupConstraints = LineupConstraints(), player_settings: PlayerPoolSettings = PlayerPoolSettings(), optimizer_settings: OptimizerSettings = OptimizerSettings(), verbose=False, exposure_bounds: List[dict] = list(), exposure_random_seed=None, ) -> [List[Roster], list]: # set the random seed globally for random lineup exposure random.seed(exposure_random_seed) rosters = [] for _ in range(0, iterations): exposure_dict = get_exposure_args( existing_rosters=optimizer_settings.existing_rosters, exposure_bounds=exposure_bounds, n=iterations, use_random=bool(exposure_random_seed), random_seed=exposure_random_seed, ) roster = run( rule_set=rule_set, player_pool=player_pool, optimizer_settings=optimizer_settings, player_settings=player_settings, exposure_dict=exposure_dict, constraints=constraints, verbose=verbose, ) if roster: optimizer_settings.existing_rosters += [roster] if roster: rosters.append(roster) else: break # clear ban/lock to reset exposure between iterations reset_player_ban_lock(player_pool) exposure_diffs = {} if rosters and verbose: print(get_exposure_table(rosters, exposure_bounds)) print() print(get_exposure_matrix(rosters)) print() exposure_diffs = check_exposure(rosters, exposure_bounds) for n, d in exposure_diffs.items(): if d < 0: print('{} is UNDER exposure by {} lineups'.format(n, d)) else: print('{} is OVER exposure by {} lineups'.format(n, d)) return rosters, exposure_diffs
def run_multi( iterations: int, rule_set: RuleSet, player_pool: list, player_settings=PlayerPoolSettings(), optimizer_settings=OptimizerSettings(), verbose=False, exposure_bounds=None, exposure_random_seed=None, ) -> [List[Roster], list]: # set the random seed globally for random lineup exposure if exposure_random_seed: random.seed(exposure_random_seed) rosters = [] for _ in range(0, iterations): if exposure_bounds: exposure_dct = get_exposure_args( existing_rosters=optimizer_settings.existing_rosters, exposure_bounds=exposure_bounds, n=iterations, use_random=bool(exposure_random_seed), random_seed=exposure_random_seed, ) player_settings.banned = exposure_dct['banned'] player_settings.locked = exposure_dct['locked'] roster = run( rule_set=rule_set, player_pool=player_pool, optimizer_settings=optimizer_settings, player_settings=player_settings, verbose=verbose, ) if roster: optimizer_settings.existing_rosters += [roster] if roster: rosters.append(roster) else: break exposure_diffs = {} if rosters and verbose: print(get_exposure_table(rosters, exposure_bounds)) print() print(get_exposure_matrix(rosters)) print() exposure_diffs = check_exposure(rosters, exposure_bounds) for n, d in exposure_diffs.items(): if d < 0: print('{} is UNDER exposure by {} lineups'.format(n, d)) else: print('{} is OVER exposure by {} lineups'.format(n, d)) return rosters, exposure_diffs
def run_multi( iterations: int, rule_set: RuleSet, player_pool: list, constraints: LineupConstraints = LineupConstraints(), player_settings: PlayerPoolSettings = PlayerPoolSettings(), optimizer_settings: OptimizerSettings = OptimizerSettings(), verbose=False, exposure_bounds: List[dict] = list(), exposure_random_seed=None, progress_recorder=None, locked_pos=None, locked=None, lowest_salary=None, ) -> [List[Roster], list]: if not isinstance(rule_set, RuleSet): raise Exception("RuleSet not defined. Please refer to the docs") # set the random seed globally for random lineup exposure random.seed(exposure_random_seed) rosters = [] for idx in range(0, iterations): progress_recorder.set_progress(idx, iterations) exposure_dict = get_exposure_args( existing_rosters=optimizer_settings.existing_rosters, exposure_bounds=exposure_bounds, n=iterations, use_random=bool(exposure_random_seed), random_seed=exposure_random_seed, locked_pos=locked_pos, constraints=constraints, rule_set=rule_set, locked=locked, ) roster = run( rule_set=rule_set, player_pool=player_pool, optimizer_settings=optimizer_settings, player_settings=player_settings, exposure_dict=exposure_dict, constraints=constraints, verbose=verbose, lowest_salary=lowest_salary, ) if roster: optimizer_settings.existing_rosters += [roster] if roster: rosters.append(roster) else: break # clear ban/lock to reset exposure between iterations reset_player_ban_lock(player_pool) exposure_diffs = {} if rosters and verbose: print(get_exposure_table(rosters, exposure_bounds)) print() print(get_exposure_matrix(rosters)) print() exposure_diffs = check_exposure(rosters, exposure_bounds) for n, d in exposure_diffs.items(): if d < 0: print('{} is UNDER exposure by {} lineups'.format(n, d)) else: print('{} is OVER exposure by {} lineups'.format(n, d)) return rosters, exposure_diffs