Can some one please give a high level description of how the (arena) matchmaking works?
I understand it's running this code, but I struggle to understand all the details that go into it.
https://github.com/ornicar/lila/tree/master/modules/tournament/src/main/arena
Also sorry, if this is the wrong place to ask, and if I should just open a ticket on github and thanks in advance.
Can some one please give a high level description of how the (arena) matchmaking works?
I understand it's running this code, but I struggle to understand all the details that go into it.
https://github.com/ornicar/lila/tree/master/modules/tournament/src/main/arena
Also sorry, if this is the wrong place to ask, and if I should just open a ticket on github and thanks in advance.
Probably in the off-topic would be better. this isn't necessarily about chess
Probably in the off-topic would be better. this isn't necessarily about chess
From the page that appears before an arena begins:
"How does the pairing work?
At the beginning of the tournament, players are paired based on their rating.
As soon as you finish a game, return to the tournament lobby: you will then be paired with a player close to your ranking. This ensures minimum wait time, however you may not face all other players in the tournament.
Play fast and return to the lobby to play more games and win more points."
From the page that appears before an arena begins:
"How does the pairing work?
At the beginning of the tournament, players are paired based on their rating.
As soon as you finish a game, return to the tournament lobby: you will then be paired with a player close to your ranking. This ensures minimum wait time, however you may not face all other players in the tournament.
Play fast and return to the lobby to play more games and win more points."
Seems like I can't just delete the thread and reopen, so I guess it's better to leave it instead of having two instances? But agreed and no hard feelings if an admin removes this ;-).
Seems like I can't just delete the thread and reopen, so I guess it's better to leave it instead of having two instances? But agreed and no hard feelings if an admin removes this ;-).
From the page that appears before an arena begins:
Well I guess I'm looking for something a bit more detailed, but not quite as detailed as the code ;-).
> From the page that appears before an arena begins:
Well I guess I'm looking for something a bit more detailed, but not quite as detailed as the code ;-).
OK, I dived into the code a bit more. Here's my understanding:
Arena matchmaking computes a minimum weight matching in the sense of graph theory.¹
https://en.wikipedia.org/wiki/Matching_(graph_theory)
Nodes are the seeking players and edge-weights are given by
abs(a.rank-b.rank)*[300 + 1700 * (maxRank - min(a.rank, b.rank)) / maxRank ] + abs(a.rating - b.rating)²
So essentially, the algo finds players a,b for which this number is small, or more accurately finds matchings where the corresponding numbers have minimal sum.
There's some additional logic that ensures that colors match and that immediate repetitions are discouraged. Also there's some timing logic that dictates how long the system waits before assigning matches.
¹ https://github.com/ornicar/lila/blob/master/modules/tournament/src/main/arena/PairingSystem.scala
² https://github.com/ornicar/lila/blob/442da0c86a9d54c3cff5645e14d67dfe269a9d0b/modules/tournament/src/main/arena/AntmaPairing.scala#L24
OK, I dived into the code a bit more. Here's my understanding:
Arena matchmaking computes a minimum weight matching in the sense of graph theory.¹
> https://en.wikipedia.org/wiki/Matching_(graph_theory)
Nodes are the seeking players and edge-weights are given by
> abs(a.rank-b.rank)*[300 + 1700 * (maxRank - min(a.rank, b.rank)) / maxRank ] + abs(a.rating - b.rating)²
So essentially, the algo finds players a,b for which this number is small, or more accurately finds matchings where the corresponding numbers have minimal sum.
There's some additional logic that ensures that colors match and that immediate repetitions are discouraged. Also there's some timing logic that dictates how long the system waits before assigning matches.
----
¹ https://github.com/ornicar/lila/blob/master/modules/tournament/src/main/arena/PairingSystem.scala
² https://github.com/ornicar/lila/blob/442da0c86a9d54c3cff5645e14d67dfe269a9d0b/modules/tournament/src/main/arena/AntmaPairing.scala#L24