def ts_update_error(x, rA1, rA2, rB1, rB2, scoreA): (beta, tau, dp) = x env = trueskill.TrueSkill(beta=beta, tau=tau, draw_probability=dp, backend='mpmath') tss = TrueSkillSystem('trueskill', env) (rAp, rBp) = tss.rate2p(rA1, rB1, scoreA) err = math.sqrt(distance(rAp, rA2)**2 + distance(rBp, rB2)**2) return err
(mu0, sigma0) = opt.x print() print('Error-minimizing Parameters:') print('mu0: %7.2f' % mu0) print('sigma0: %7.2f' % sigma0) print('beta: %7.2f' % beta) print('tau: %7.2f' % tau) print('draw_prob: %7.2f' % dp) # Test it on a third game goko_env = trueskill.TrueSkill(mu=mu0, sigma=sigma0, beta=beta, tau=tau, draw_probability=dp, backend='mpmath') goko_tss = TrueSkillSystem('Goko', goko_env) # Game data for two experienced players with similar ratings # Initial ratings print() print('Testing Parameters on Game 3...') rA1 = Rating(6789.036432492558, 262.8329415491707) rB1 = Rating(7108.43720451577, 266.9581590879031) scoreA = 1 # Post-game ratings rA2 = Rating(6822.354187108161, 262.6577478580567) rB2 = Rating(7074.076798465825, 266.6845904766116) (rAx, rBx) = goko_tss.rate2p(rA1, rB1, scoreA) error = distance(rA2, rAx)**2 + distance(rB2, rBx)**2 print('Initial ratings:')