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)
Exemple #3
0
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)