As previously mentioned I want to update the division assignment rules for RAGL S13. The rules we have been using have proved to be fairly good at seeding players into the appropriate divisions so I intend to preserve the spirit of it. There are predominantly two views on what the system should achieve. Firstly the traditional aim is to move roughly 30% of players across each division boundary each season. The issue with this is that good players who have either skipped a season (e.g. Blackened in S11), or are completely new to RAGL (e.g. despro in S12), would have to start from the bottom division and this can lead to more one-sided games.
To avoid this issue we currently use the RAGL ladder ratings as a way to seed new players into divisions. There are a couple of potential issues with this though. Firstly we may have a large number of "new" good players in a season. The top twelve players from the ladder were not part of S12 and if they all signed up next season (very unlikely) then we'd potentially have no continuity in Masters at all. The second issue is that the top player from Minions may not end up in Masters. It turns out that this has been a possibility since at least S07 when most of the current rulebook was created. If the Masters division shrinks between seasons then the promoted players may fall outside the bottom of the division (or alternatively the promotion can be honoured, but it has a knock-on effect on the viability of the other divisions). This situation is exacerbated by allowing new players to jump straight to Masters. In short we should have a cap on how many new players can end up in Masters.
We already form the divisions from two lists and I will refer to them as Continuity Ordering and Ladder Ordering. Continuity Ordering can be determined at the end of a season and is based on performance in the league. Ladder Ordering is determined at the end of registrations and is based on RAGL ladder ratings.
Continuity Ordering
To achieve the sense of promotion and relegation (and importantly continuity for those players who wish to continue) then I've come up with the following algorithm.
Code: Select all
Sort all players within their divisions
Repeatedly:
* Take two players from Masters
* Take one player from Minions
When Masters is exhausted then repeatedly
* Take one player from Minions
* Take two players from Recruits
When Minions is exhausted then add all players from Recruits
Remove any players who season forfeit
It's important to be able to completely order all players so there needs to be a comprehensive tiebreaker:
- Season forfeits are placed last in their division
- Playoff/tiebreaker result (if relevant)
- Points
- Head-to-head results (recursively)
- Fewer strikes
- Win percentage (for parallel divisions)
- Length of current streak of completed RAGL seasons
- Forum id (lower is better)
Rating Ordering
This is already in use, but the significant change is to include returning players in this list too (so they appear in both lists). Anyone without a ladder rating will be placed at the end and sorted by their forum id (lower is better).
Combining the two lists
Starting with the Continuity Ordering then players are taken alternatively from the two lists. Once the lists are completely combined then the duplicate entries are removed (whichever is lower for each player). This effectively means that a returning player could escape relegation if they have an outstanding ladder rating (i.e. they are treated fairly when compared with a new player).
From various iterations of RAGL then I've found that 12 is a pretty ideal division size. It is also the original division size used in Seasons 1-6. Consequently the script aims to divide the participants into divisions of as close to 12 players as possible.
Example
If we had used this algorithm to draw up divisions for Season 12 (assuming the players who initially registered - i.e. Kaution and not Tailix) then we would have seen the following.
The left hand list is all the players from Season 11 sorted and then alternately taking two from Masters and one from Minions. The middle column is the same list restricted to those who didn't forfeit and who registered for Season 12. The right hand column is all the players who registered sorted by their RAGL ladder rating at the time of drawing up the divisions.
Combining the two lists together we would have got divisions looking very similar to what actually happened (the only difference is that TTTPPP and Azure are swapped).
Although despro was placed in Masters by the algorithm then it was quite close, but this was due to having a relatively low ladder rating. One simple way to fix this would be to include results from other 1v1 competitions in the RAGL ladder - for example the Kautious Kup was played with competitive settings and the results would have pushed despro's rating up quite a lot.
I'm currently working on evaluating the older seasons to see that it draws up reasonable divsions, and assuming everything looks good then it should be in use for Season 13.