AllegSkill - Player's ranking

From FreeAllegiance Wiki
Revision as of 15:29, 24 November 2008 by Sgt_baker (talk | contribs)
Jump to navigationJump to search

What follows is the method for updating a two-team game with an arbitrary number of players.

From a population of n players <math>\{1,...,n\}</math> let <math>k</math> teams compete in a match. Teams are defined by <math>k</math> non-overlapping subsets, <math>T_{j}\subset \{1,...,n\}</math>, of the player population, <math>T_{i}\cap T_{j}=0</math> if <math>i\ne j</math>.

In layman's terms, this means that no player can appear on more than one team at the same time.

Each player, n, has three variables associated with them:

<math>\mu _{n}</math>, their average skill.

<math>\sigma _{n}</math>, their uncertainty about <math>\mu _{n}</math>.

<math>f_{n}</math>, the fraction of the total game played for their team.

Each team, j, has a mu and sigma derived from the ratings of it's players, n, thus:

<math>\mu _{j}=\sum\limits_{\mu _{n}\in T_{j}}{\mu _{n}f_{n}}</math>

<math>\sigma _{j}=\sqrt{\left( \sum\limits_{\sigma _{n}\in T_{j}}{\left( \sigma _{n}^{2}f_{n}+\beta ^{2}+\gamma ^{2} \right)} \right)-\beta ^{2}-\gamma ^{2}}</math>

Henceforth each team is designated according to whether they won or lost the game. We now calculate a new mu and sigma for each team using the standard Trueskill update formulae:

<math>\mu '_{w}=\mu _{w}+\frac{\sigma _{w}^{2}}{c}\cdot V_{win}\left( \frac{\mu _{w}-\mu _{l}}{c},\frac{\varepsilon }{c} \right)</math>

<math>\sigma '_{w}=\sqrt{\sigma _{w}^{2}\left( 1-\frac{\sigma _{w}^{2}}{c^{2}}\cdot W_{win}\left( \frac{\mu _{w}-\mu _{l}}{c},\frac{\varepsilon }{c} \right) \right)+\gamma ^{2}}</math>

<math>\mu '_{l}=\mu _{l}-\frac{\sigma _{l}^{2}}{c}\cdot V_{win}\left( \frac{\mu _{w}-\mu _{l}}{c},\frac{\varepsilon }{c} \right)</math>

<math>\sigma '_{l}=\sqrt{\sigma _{l}^{2}\left( 1-\frac{\sigma _{l}^{2}}{c^{2}}\cdot W_{win}\left( \frac{\mu _{w}-\mu _{l}}{c},\frac{\varepsilon }{c} \right) \right)+\gamma ^{2}}</math>


Now we calculate the total variance:

<math>\beta _{total}=\sum\limits_{j=1}^{k}{\left( \sum\limits_{\sigma _{n}\in T_{j}}{\left( \sigma _{n}^{2}f_{n}+\beta ^{2}+\gamma ^{2} \right)} \right)}</math>


Each team has a V and W factor:

<math>V_{j}=\frac{\sqrt{\beta _{total}}\left( \mu '_{w}-\mu _{w} \right)}{\sum\limits_{\sigma _{n}\in T_{j}}{\left( \sigma _{n}^{2}f_{n}+\beta ^{2}+\gamma ^{2} \right)}-\beta ^{2}}</math>


<math>W_{j}=\frac{\beta _{total}\left( 1-\frac{\sigma _{new}^{2}}{\sigma ^{2}} \right)}{\sum\limits_{\sigma _{n}\in T_{j}}{\left( \sigma _{n}^{2}f_{n}+\beta ^{2}+\gamma ^{2} \right)}-\beta ^{2}}</math>


Then each player, n, is updated using the values calculated for their team, j:


<math>\mu '_{n}=\mu _{n}+\frac{\sigma _{n}^{2}+\gamma ^{2}}{\sqrt{\beta _{total}}}f_{n}V_{j}</math>

<math>\sigma '_{n}=\sigma _{n}+\left( \left( \sigma _{n}\sqrt{1-W_{j}\frac{\sigma _{n}^{2}+\gamma ^{2}}{\beta _{total}}} \right)-\sigma _{n} \right)f_{n}</math>