Ranking de jogadores usando Elo com mais de dois jogadores

16

Gostaria de usar o Elo para rastrear a classificação dos jogadores entre as partidas de um determinado jogo, no entanto, o jogo pode ser jogado com até quatro jogadores em uma partida. Vi jogos como Carcassonne usar Elo com mais de dois jogadores jogando, mas não estou familiarizado com Elo além de uma partida por 1 x 1.

No artigo da wikipedia, as equações para dois jogadores que eu gostaria de estender são:

E a = 1 / (1 + 10 (R b - R a ) / 400 )

E b = 1 / (1 + 10 (R um - R b ) / 400 )

R x novo = R x antigo + 32 * (L - E x ), em que W = 1 se X vencer e W = 0 se X perder.

Como o cálculo de E x e W mudaria se houvesse mais de dois jogadores?

fbrereto
fonte
Eu seria cauteloso ao usar um sistema no estilo Elo para jogos com mais de dois jogadores, pois muitos fatores podem conspirar para torná-los menos do que jogos puros de habilidade - jogadores se juntando a jogadores mais fortes, etc. Se você misturar pontuações nas partidas com diferentes números de jogadores, sugiro reduzir os pesos (ou seja, o '32' na fórmula de atualização para R) para jogos com mais jogadores.
Steven Stadnicki
@StevenStadnicki obrigado pela recomendação. No entanto, não estou claro como a queda da constante de peso aborda os problemas mencionados. Você pode elaborar?
fbrereto
Ao diminuir o peso das partidas multiplayer, você está inerentemente dizendo que elas não são tão importantes para a classificação de um jogador quanto as partidas de dois jogadores; essencialmente, você está dizendo que eles são menos representativos de quão bom o jogador realmente é. Magic faz algo semelhante a isso com sua estrutura de torneio, onde diferentes níveis de torneio têm valores K diferentes para representar quanto peso eles devem receber na determinação da classificação de um jogador.
Steven Stadnicki

Respostas:

10

Conforme sugerido pelo link superior na minha pesquisa no Google (link pod removido, site ainda disponível no WayBackMachine em http://web.archive.org/web/20130308190719/http://elo.divergentinformatics.com/ ), você pode calcule as alterações individuais na classificação Elo de um jogador (seus valores de R) e, em seguida, some-as para fornecer a alteração total a ser aplicada à classificação de cada jogador.

ou seja, se você tem 4 jogadores (A, B, C, D), calcule a alteração na classificação de A (R-sub-a-sub-nova) das pontuações contra B, C e D e ajuste a classificação de A o total dos valores R calculados.

fnord
fonte
Eu segui esse caminho e parece estar funcionando bem até agora, obrigado.
Fbrereto
Infelizmente, o link parece não ser mais válido.
Petr Pudlak
3
Parece que aqui estão as fórmulas para essa idéia: sradack.blogspot.ru/2008/06/…
dbf
1

Encontrei um artigo com código-fonte PHP de um método semelhante à resposta do fnord aqui: http://elo-norsak.rhcloud.com/3.php Criei uma implementação php de propósito mais geral aqui: https://github.com/ FigBug / Multiplayer-ELO Estou usando-o com meu grupo de jogos de tabuleiro e, até agora, parece estar funcionando bem.

O cálculo de Ex e W permaneceria o mesmo. Em vez de usar um K de 32, use um K de 32 / (#players - 1). Então, observe cada permutação de 2 jogadores e calcule (32 / (#jogadores - 1) * (W - Ex)). Então RxNew é igual a RxOld + Soma de todos os valores que você acabou de calcular.

FigBug
fonte
2
Geralmente, é uma boa prática incluir um resumo do seu método / recomendação no corpo de uma resposta, em vez de confiar inteiramente em links externos. Os links têm o hábito de quebrar com o tempo, o que pode deixar sua resposta sem detalhes cruciais quando alguém tenta procurar nos próximos anos.
DMGregory
Obrigado pelo seu código de prática, é útil! Apenas uma sugestão para sua realização - talvez seja melhor não arredondar resultados intermediários, eloChange += round($K * ($S - $EA));mas faça o arredondamento somente após todos os cálculos ao definireloPost
FlameStorm