-
Notifications
You must be signed in to change notification settings - Fork 0
split_noobs balance algorithm
Balance algorithm split_noobs
does the following:
- Spreads noobs across teams and deprioritises them
- Supports parties
- Long term it can replace
split_one_chevs
algo as that algo is similar but doesn't support parties
In a lobby use this command
!balancealgorithm split_noobs
Now the algorithm will be used whenever you press the balance button. Visually you cannot tell what algorithm is being used so to look at logs use:
$explain
You can also check the current balance algorithm in a lobby by:
$status
This algo only supports two teams. It will call Teifion's algo for FFA.
First, separate the players into two types
Noobs: Anyone not in party AND either
- High uncertainty. (High uncertainty means at least 6.65. The lowest uncertainty one chev has roughly that uncertainty.)
- 0 match rating
Experienced: Everyone else
Then behaviour will depend on the following uses cases:
The top 14 experienced players are fed into the brute force algorithm to find the best two team combination. To determine the top 14, we prefer players in parties, then prefer higher rating. The brute force algo will try and keep parties together and keep both team ratings close.
Next the teams will draft the remaining experienced players preferring higher rating. Then the teams will draft the noobs preferring higher rank and then lower uncertainty if tied for rank.
There's no need to use brute force. Just do a normal draft. Teams will prefer experienced players with higher rating. If there are no more experienced players, pick noobs based on higher rank and then lower uncertainty if tied for rank.
This algorithm only supports two teams. It will go through each and every combination of possible teams and give each combination a score.
- Score = team rating diff penalty + broken party penalty
- Team rating diff penalty = ABS(sum of rating of players in Team 1 - sum of rating of players in Team 2)
- Broken party penalty = num broken parties * party importance
- party importance = 7
It will then pick the combination with the lowest score.
It takes 5ms to run 7v7 but 20-40ms to run 8v8. Because of that, it is advised to only feed into it no more than 14 players.
Parties are less likely to broken with my algorithm. However, if your goal is fairness, you should use the default algorithm created by Teifion instead. Teifion's algorithm tries to create counter parties whereas mine doesn't. So if you have an OP party and Teifion's algorithm cannot create a similar OP party, it splits the OP party up. My algorithm will not split them.
Example: Party = [50,50] Team 1: 50, 50, 1, 1 Team 2: 26, 26, 25, 25
My algorithm will allow this as parties are kept and team rating diff = 0. Teifion's algo will try and create a two-player counter party with mean of 50; it cannot find it, and therefore splits the 50,50 party up. The best counter party it can create will have a mean of 26 which is too far.