EGS
I changed the scenario a little bit:
- Tournament with 32 players;
- Players ι, β and γ have Elo 300, 200 and 100 respectively;
- All other playerâs Elo are evenly distributed between 0 and -2000;
- At each round, players are ordered by number of victories. Among players with the same number of victories, ordering is random. Then player 1 is paired with player 2, player 3 with player 4, player 5 with player 6, etc.
- I estimated the probability that after r rounds, players ι, β and γ get the first three places in that order with no ties (γ is not tied with any other player).
This doesnât converge to 1. I was surprised by that result at first but I think I understand the reason. If Îą is first and β is second, then they are paired together so β has less than 50% winrate, while Îł is paired with a weaker player and has more than 50% winrate. This continues until Îł (or maybe δ) becomes second and β becomes third, and then β starts to have a winrate over 50% again and can climb back to the second placeâŚ
Interesting. The numbers in the top graph are implausibly low. But then I realised youâre simulating the wrong thing. With your random matchups, you allow repeated pairings. So the top 3 players will be repeatedly playing each other, with gamma struggling to get above 50%, while the bottom 29 players will be repeatedly playing each other and frequently getting above 50% by luck.
In a real swiss, you would not ever play the same opponent twice (and a 32-player tournament couldnât go past 31 rounds). So if youâve got a top group who are much stronger than everyone else, then in a long enough tournament they would claim the top places by beating up on weaker opponents. Your simulations are missing the âbeat up on weaker opponentsâ factor, hence the numbers are too low! (My recollection of chess tournaments is that in amateur events, about a third of games were savage maulings on this basis. In go, weâre kinder and tend to use mcmahon to prevent this. Less rough, but you miss the thrill of the occasional accidental game with a grandmaster.)
And exploring a bit more: to my surprise, there seems to be no R or python library (or in fact any open source library) for calculating Swiss pairings correctly! There are plenty of âtournament helperâ apps with graphical interfaces, but nothing you can plug into a script for this kind of repeated simulations. And coding up a correct Swiss pairing algorithm from scratch is a fairly big piece of work. So of course youâve taken what looks like a reasonable shortcut. But I think it has a big impact on the results.
I just coded up the same scenario for a round-robin tournament, which is much much easier (about 20 lines of code in R). The probability of places 1-3 being correct is about 46%. Not 100% because a 300 elo player will only beat a 200 elo player around 64% of the time, not 100%, and similar for the other top pairings. And indeed your simulations seem to be converging on close to 46%.
I donât plan to code up a fully correct Swiss any time soon. But thanks for taking a look!
This thread fizzled out. IMO, the formula @xela points at is easy to implement and obviously better than the status quo. Do others agree?
What should we do in the short term?
One change possibility is to use the âChess Organizers Handbookâ suggestion, which is intuitive.
- Effectively, do an elimination tournament without eliminating any players
- If there are 3+ players, add two rounds to collect data on 2nd place
- Maybe: If there are âenoughâ players, add extra rounds to collect data on 3rd place
EDIT: deleted original poll to add @Samrakuâs option. The results look nice enough compared to the simple formula from the chess handbook.
- Chess handbook adds rounds in increments of 2. This gets better results for 1st place, per @jltâs graphs above in the thread.
- @Samrakuâs
*1.4
gives a progression of rounds that feels more natural.
I think either is fine and better than the status quo.
Should we make a change (new poll)?
P
is the number of playersfloor((P + 7*2)/5)
; Mr. Model; status quoceil(lg2(P)) + (2 or 4)
; Chess handbook; extra data for 2nd and/or 3rdceil(lg2(P) * 1.4)
; standard in chess
If we make a change to âChess handbookâ, whatâs the cutoff for collecting extra data on 3rd place? 4+ players? 8+?
- Never
- 4+ players (always)
- 8+ players
- 16+ players
- 32+ players
- 64+ players
(Whatever the choices, we can change in the future if someone does research and establishes a new consensusâŚ)
For reference, hereâs what the number of rounds looks like compared to Mr. Model:
Players | Mr Model | 3rd never | 3rd if 4+ | 3rd if 32+ | * 1.4 |
---|---|---|---|---|---|
2 | 2 | 1 | 1 | 1 | 1 |
3 | 3 | 4 | 4 | 4 | 2 |
4 | 3 | 4 | 6 | 4 | 3 |
8 | 4 | 5 | 7 | 5 | 5 |
16 | 6 | 6 | 8 | 6 | 6 |
32 | 9 | 7 | 9 | 9 | 7 |
64 | 15 | 8 | 10 | 10 | 9 |
128 | 28 | 9 | 11 | 11 | 10 |
IMO, just collecting data on 2nd place is fine. But maybe others want the extra rounds.
EDIT: Added poll to include @Samrakuâs âstandard from chessâ option. Also added to the table. The numbers look pretty nice to me. Iâve switched my vote to that.
I think ceil(lg2(P) * C)
where C
is a constant (1.4
is a popular value) deserves to be in the poll. Itâs the standard in chess afaik and itâs what Iâd vote for
Sure. It was too late to edit the old poll, but Iâve closed the old one and opened a new one.
Hmmm, usually we have a lot more people dropping out than in live tournaments. So maybe just using C=1 would be fine.
Three things I like about the *1.4
:
- Itâs standard somewhere
- The progression in the number of rounds âfeelsâ natural.
- Seems in practice to be pretty close to the âchess organizerâs handbookâ, which itself makes intuitive sense to me.
One thing I donât like:
- Number of rounds arenât always at the peaks from @jltâs graphs. The peaks happen at â# rounds for single eliminationâ plus âmultiple of 2â. This method only hits the peaks some of the time.
I think either is a good option.
Swiss doesnât mean correspondence. There are live Swiss tournaments too.
EDIT: or maybe by âliveâ you meant âin-personâ? In any case, doing the same number of rounds as single elimination seems like a more dramatic change. Maybe better to consider that later as a second step, after experience with something more standard.
I like having a bit more games than the bare minimum, which 1.0
gives. with 1.0
it just feels like an elimination Tournament in disguise
If you have a dropout rate of 20% per round you may easily end up in a situation where all players left in the final round have basically played all other players left, making it a round robin in disguise.
But I donât really care that much tbh.
If you have a dropout rate of 20% per round you may easily end up in a situation where all players left in the final round have basically played all other players left, making it a round robin in disguise.
You need a much higher factor for that to be a concern. And even if so, the problem with a Round Robin is not that itâs bad, itâs that it has too many rounds to be practical with large numbers of players: the exact situation where C = 1.4
will be far too small to cause that problem lg(16) * 1.4 = 5.6; ceil(5.6) = 6
a Round Robin for 16 players has 15 rounds, 2½ times as many
With a dropout rate of 20% there will be 5 players out of 16 left in round 6. That is my point. A 5 player round robin has 4 rounds, not 15.
20% dropping out per round!? who are you playing with!? even so, itâs highly unlikely to reduce to Round Robin, and even if it does, it didnât run into the main reason not to use round robin: obscene numbers of rounds
who are you playing with!?
Umm, with other OGS players. Hereâs a swiss tournament Iâm playing in: Make a decision that you will never stop learning! Rate is closer to 15% though, but still.
BTW: the entire discussion is entirely irrelevant, because the pairing logic in Swiss seems to be as broken as the one in McMahon. In the tournament linked I had 3 points before the current round, my opponent had 1, yet we were paired. Iâd strongly suggest to fix that first.
It still never got remotely near as few rounds as Round Robin would have, not to mention that Round Robin wouldnât have been able to predict how many people would drop, and so would have 52 rounds youâd be stuck playing
And to repeat, even if it got down to the same number of rounds as a prognosticating Round Robin would have had, and even if you take the completely unreasonable assumption that this would simulate a round robin (everyone would play eachother (or in this case those that are left) once, or at the very least would not play another player twice until they had played all other players once), it still isnât as big a problem as simulating elimination, because the problem with Round Robin is not that itâs a bad format, itâs that it has too many rounds, a situation which would not be the case here
Well, Iâm not arguing that swiss is bad with more rounds than I argue for. The discussion was about how many rounds do wee need, because we want to determine the winner (and maybe 2nd and 3rd). All Iâm saying is that because of dropout weâd need less that one might think. But again, itâs not much of an issue anyway.
Repeating my other point though (and not directed at you, @Samraku): without fixing the pairing we need n-1 round in swiss to determine a winner. Because the top 2 players might not be paired in the first n-2 rounds. So please fix that first.
The discussion was about how many rounds do wee need, because we want to determine the winner (and maybe 2nd and 3rd).
You have to assume 0 dropouts for this calculation. And if your goal is just to determine the top n players, n-le elimination or ceil(lg2(P))
for the top 1 case will be close to equivalent, but Elimination is likely to be preffered in that case as itâs easier to understand
However, if one picks Swiss, one does not just want to determine the top n players, so the calculations shouldnât be built around that beyond using lg2(P)
, the number of rounds necessary to find the top player, as a base point. The extra rounds beyond that are what makes Swiss swiss. If youâre trying to have only the number of rounds you need in order to find the top n players, Swiss is not what youâre looking for
Let Swiss be Swiss, donât coerce it into budget Elimination
You make it sound like Iâm fighting for something here. Really, all I wanted to point out is that people dropping out changes the math a bit. Iâm not advocating for anything (in that respect).
Let Swiss be Swiss
Yes, fully agreed with that. Letâs START doing that by pairing people with the same amount of points, which is NOT happening atm. We never had Swiss tournaments so far!