public sealed class BayesianRatingModelA Bayesian skill model of the TrueSkill family: a mean and a variance per player.
Remarks
What handles teams, parties, uneven sizes and new players honestly. A team's performance is the sum of its players' skills with a per-player performance variance, and a result moves each player in proportion to how uncertain they were — so a newcomer's rating converges in a handful of games while a veteran's barely moves.
⚠ Two teams, and a free-for-all is not supported. The full model handles any number of teams with a factor graph over the whole ranking; two teams is the closed form, it is what every queue in doc 28 needs, and shipping the closed form honestly is better than shipping an approximation of the general one that nobody can check. A queue with three sides is a real gap and the README says so.
⚠ A little uncertainty is added back before every update. Without it a rating converges to a variance of nearly nothing and then cannot move again, which means somebody who improves is stuck at what they used to be for ever.
Fields and properties (5)
public double BetaHow much a single performance varies from a player's skill.
public double TauHow much uncertainty is added back each game.
public double DrawProbabilityHow often two even sides draw.
public string NameWhat it is called, in a queue definition and in a report.
public Rating StartingWhat somebody starts on.
Methods (3)
public BayesianRatingModel(double mean = 25, double deviation = 8.333333333333334, double beta = 4.166666666666667, double tau = 0.08333333333333333, double drawProbability = 0.1)Makes one with the classical parameters.
public IReadOnlyList<Rating[]> Update(IReadOnlyList<Rating[]> teams, IReadOnlyList<int> ranks)Updates every team's ratings after a result.
public double Quality(IReadOnlyList<Rating[]> teams)How even a match would be, from zero to one.
Used by (1)
- BayesianTestsVixen.Live.Matchmaking.Tests