def init_new_players(teams, names, caps): players = [] for i in xrange(len(teams)): for j in xrange(len(teams[i])): player_type = teams[i][j] player_name = names[i][j] if player_type == "InitCapRatePlayer": init = io_cap.input_cap_file("10000init.csv") players.append(CapRatePlayer(player_name, caps=init)) elif player_type == "CapRatePlayer": players.append(player_type_to_class[player_type](player_name, caps=caps)) else: players.append(player_type_to_class[player_type](player_name)) return players
def run(games, turns_per_game, teams, cap_rate_file="5000cap.csv"): caps = io_cap.input_cap_file(cap_rate_file) (names, player_to_team) = init_player_names(teams) flat_names = [player for team in names for player in team] def run_n_games(num_games): stats = {player: 0 for player in flat_names} for i in xrange(num_games): players = init_new_players(teams, names, caps) m = Monopoly(players=players) m.run(turns_per_game) if m.winner: stats[m.winner.name] += 1 return stats thread_pool = ThreadPool(processes=NUM_THREADS) a = thread_pool.apply_async(run_n_games, (games / 4,)) b = thread_pool.apply_async(run_n_games, (games / 4,)) c = thread_pool.apply_async(run_n_games, (games / 4,)) d = thread_pool.apply_async(run_n_games, (games / 4,)) results = [a.get(), b.get(), c.get(), d.get()] return reduce_results_by_team(results, len(teams), player_to_team)
def main(): caps = io_cap.input_cap_file("100cap.csv") players = [BenchmarkPlayer(name="BenchmarkPlayer1"), CapRatePlayer(name="CapRatePlayer1", caps=caps)] m = Monopoly(players=players, debug_flag=True) m.run(10000)