def update_skills_for_game(game, opening_skill_table, #player_skill_table ): teams = [] results = [] openings = [] dups = False for deck in game['decks']: opening = deck['turns'][0].get('buys', []) + \ deck['turns'][1].get('buys', []) opening.sort() open_name = 'open:' + '+'.join(opening) if open_name in openings: dups = True openings.append(open_name) nturns = len(deck['turns']) if deck['resigned']: vp = -1000 else: vp = deck['points'] results.append((-vp, nturns)) player_name = deck['name'] teams.append([open_name, player_name]) ranks = results_to_ranks(results) if not dups: team_results = [ (team, [0.5, 0.5], rank) for team, rank in zip(teams, ranks) ] ts.update_trueskill_team(team_results, opening_skill_table)
def update_skills_for_game(game_dict, opening_skill_table, #player_skill_table ): teams = [] results = [] openings = [] dups = False game = Game(game_dict) for deck in game.player_decks: opening = game.get_opening(deck) open_name = 'open:' + '+'.join(map(str, opening)) if open_name in openings: dups = True openings.append(open_name) nturns = deck.num_turns() if deck.Resigned(): vp = -1000 else: vp = deck.Points() results.append((-vp, nturns)) player_name = deck.name() teams.append([open_name, player_name]) ranks = results_to_ranks(results) if not dups: team_results = [ (team, [0.5, 0.5], rank) for team, rank in zip(teams, ranks) ] ts.update_trueskill_team(team_results, opening_skill_table)
def main(): games = common.parse_games() table = ts.SkillTable() for g in games: if random.random() < .5: continue scores_names = zip([g.margin, 0], g.names) scores_names.sort(reverse = True) print scores_names[0][1], ':', table.get_mu(scores_names[0][1]), ':', print scores_names[1][1], ':', table.get_mu(scores_names[1][1]), ':', team_results = [([n], [1.0], idx) for idx, (s, n) in enumerate(scores_names)] prob = ts.update_trueskill_team(team_results, table) print prob, ':', ','.join(g.supply)