-
Notifications
You must be signed in to change notification settings - Fork 54
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
split noobs balance algorithm (party support) #369
Merged
L-e-x-o-n
merged 15 commits into
beyond-all-reason:master
from
jauggy:jauggy/split-noobs
Aug 14, 2024
Merged
split noobs balance algorithm (party support) #369
L-e-x-o-n
merged 15 commits into
beyond-all-reason:master
from
jauggy:jauggy/split-noobs
Aug 14, 2024
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Undo add combination library
Fix unused imports
jauggy
changed the title
split noobs balance algorithm
split noobs balance algorithm (party support)
Jul 22, 2024
This PR is dependant on brute_force algo so it would be easier to merge this first: Then this PR becomes simpler. |
Brute force has been merged |
Thanks Lexon. I'll clean this one up. |
jauggy
force-pushed
the
jauggy/split-noobs
branch
2 times, most recently
from
August 13, 2024 09:29
b7285ff
to
a73c679
Compare
Remove cheeky and split_one_chevs as options Fix dialyzer
jauggy
force-pushed
the
jauggy/split-noobs
branch
from
August 13, 2024 10:05
a73c679
to
02804c9
Compare
@L-e-x-o-n this is now ready for review and merge. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Context
This PR adds a new balance algorithm
split_noobs
that does the following:split_one_chevs
andcheeky_switcher_smart
has been removed as options for players assplit_noobs
has better party supportsplit_noobs algo
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
Experienced: Everyone else
Then behaviour will depend on the following uses cases:
If there are parties
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 lower uncertainty.
If there are no parties
There's no need to use brute force. Just do a normal draft. Teams will prefer experienced players with high rating. If there are no more experienced players, prefer high rank and low uncertainty; this is because we don't trust the rating of new players.
brute_force algo
This algorithm only supports two teams. It will call Teifion's algo for FFA. 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
Broken party penalty = num broken parties * broken party multiplier
broken party multiplier = 7
It will then pick the combination with the lowest score.
It takes 5ms to run 7v7 but 20-40ms to run 8v8
Testing
This is best tested by going to integration server and selecting a match then examining the output from the balance tab. Select the balance algorithm as
split_noobs
. To get matchids with one chevs use thisGo to this url replacing the match id as appropriate