Loading...
  OR  Zero-K Name:    Password:   

Post edit history

Balancer broken?

To display differences between versions, select one or more edits in the list using checkboxes and click "diff selected"
Post edit history
Date Editor Before After
4/26/2016 1:57:22 AMDErankBrackman before revert after revert
4/26/2016 1:52:06 AMDErankBrackman before revert after revert
4/26/2016 1:49:04 AMDErankBrackman before revert after revert
4/26/2016 1:47:05 AMDErankBrackman before revert after revert
4/26/2016 1:46:16 AMDErankBrackman before revert after revert
4/26/2016 1:32:59 AMDErankBrackman before revert after revert
4/26/2016 1:27:02 AMDErankBrackman before revert after revert
Before After
1 My 2^8-th post: If I wanted to consider synergy, I would not store values for every pair of players, but give every player an elo for his cooperation with low elo players and one for his cooperation with high elo players and then always use a weighted average of both, where the weigthings depend on the average elo of the rest of the team.[spoiler] {{{ player's high elo cooperation elo weighting = chance that the rest of the team wins vs elo 1500 team = 1/(10^((1500-rest of team's elo avg)/400)) 1 My 2^8-th post: If I wanted to consider synergy, I would not store values for every pair of players, but give every player an elo for his cooperation with low elo players and one for his cooperation with high elo players and then always use a weighted average of both, where the weigthings depend on the average elo of the rest of the team.[spoiler] {{{ player's high elo cooperation elo weighting = chance that the rest of the team wins vs elo 1500 team = 1/(10^((1500-rest of team's elo avg)/400))
2 player's low elo cooperation elo weighting = chance that the rest of the team looses vs elo 1500 team = 1/(10^((rest of team's elo avg-1500)/400)) }}} [/spoiler]But actually I think that this is too complicated for little use. What I would really do is giving every player a small teams elo (maybe including 1v1) and a big teams elo and then always use a weighted average of both depending on team size.[spoiler] {{{ player's small team elo weighting = 2/number of all players in the game 2 player's low elo cooperation elo weighting = chance that the rest of the team looses vs elo 1500 team = 1/(10^((rest of team's elo avg-1500)/400)) }}} [/spoiler]But actually I think that this is too complicated for little use. What I would really do is giving every player a small teams elo (maybe including 1v1) and a big teams elo and then always use a weighted average of both depending on team size.[spoiler] {{{ player's small team elo weighting = 2/number of all players in the game
3 player's big team elo weighting = 1-player's small team elo weighting }}} [/spoiler] 3 player's big team elo weighting = 1-player's small team elo weighting }}} [/spoiler]
4 @TheEloIsALie is right that my rather new formulas in [url=http://zero-k. info/Forum/Thread/20208]this thread[/url] don't consider elo deviation and don't make a difference as long as elo difference is 0, but also quoted my old formula that does consider it. Probably minimizing deviation is just too complicated. I guess the computational expensiveness is rather due to going through all player compositions than calculating the objective function. It can be drastically reduced by using a Markov chain ( a powerfull method to calculate NP-problems efficiently, maybe sacrificing too much accuracy for this relatively simple problem. It only makes sense for very high player numbers, otherwise use bruteforce) : [spoiler] n players have to be distributed to N teams. Go through all teams again and again until all players are distributed and always do the following: If there are more than N players left to distribute, assign the best and the worst of the players not distributed yet to the current team. If there are less players left, assign any of them to the current team. If there are no players left, use this as start configuration and calculate its objective function value "E" ( my formula that @TheEloIsALie quoted) . Always swap a random pair of players ( ="test configuration") between different teams and then calculate the new objective function by using this: [quote]If you only ever swap out two players when mutating your team composition, then you only need to subtract their elo difference from one team and add it to the other. ( . . . ) With variance/standard deviation, the change in the mean means ( no pun intended) that you definitely need to recalculate the entire function. [/quote]I tried to apply this principle to deviation calculation by using the average of simple differences to mean instead of variance. ( Let's call this "1-deviation" and std deviation "2-deviation". p-deviation would be the p-norm of the difference of a team's elo vector with the vector that has the avg team elo in all its components) . With 1-deviation you could use this principle by storing an additional vector with 1, -1 or in some cases more special components, but you could also calculate 1-deviation the normal way or just use 2-deviation. Anyway, if the test configuration is better than the start configuration ( which means lower E) , use it as new start configuration. Otherwise only do so with a probability of { { { exp( constant*( old E - new E) ) . } } } Do that until E is smaller or = a certain limit. My formula for E is maybe not correctly generalized for team FFA, because I didn't know the [url=http://zero-k. info/Forum/Thread/20712]correct team FFA solution[/url] at that time ( which is sadly still not implemented!) . I have no idea at which player number this will be profitable. For this it would be usefull to know if really all configurations are calculated currently or only a portion until the elo difference is small enough. [/spoiler] 4 @TheEloIsALie is right that my rather new formulas in [url=http://zero-k. info/Forum/Thread/20208]this thread[/url] don't consider elo deviation and don't make a difference as long as elo difference is 0, but also quoted my old formula that does consider it. Probably minimizing deviation is just too complicated. I guess the computational expensiveness is rather due to going through all player compositions than calculating the objective function. It can be drastically reduced by using a Markov chain ( a powerfull method to calculate NP-problems efficiently, maybe sacrificing too much accuracy for this relatively simple problem. It only makes sense for very high player numbers, otherwise use bruteforce) : [spoiler] n players have to be distributed to N teams. Go through all teams again and again until all players are distributed and always do the following: If there are more than N players left to distribute, assign the best and the worst of the players not distributed yet to the current team. If there are less players left, assign any of them to the current team. If there are no players left, use this as start configuration and calculate its objective function value "E" ( my formula that @TheEloIsALie quoted) . Always swap a random pair of players ( ="test configuration") between different teams and then calculate the new objective function by using this: [quote]If you only ever swap out two players when mutating your team composition, then you only need to subtract their elo difference from one team and add it to the other. ( . . . ) With variance/standard deviation, the change in the mean means ( no pun intended) that you definitely need to recalculate the entire function. [/quote]I tried to apply this principle to deviation calculation by using the average of simple differences to mean instead of variance. ( Let's call this "1-deviation" and std deviation "2-deviation". p-deviation would be the p-norm of the difference of a team's elo vector with the vector that has the avg team elo in all its components) . With 1-deviation you could use this principle by storing an additional vector with 1, -1 or in some cases more special components, but you could also calculate 1-deviation the normal way or just use 2-deviation. Anyway, if the test configuration is better than the start configuration ( which means lower E) , use it as new start configuration. Otherwise only do so with a probability of { { { exp( constant*( old E - new E) ) . } } } ( This "tunnel effect" is needed in thermodynamical annealing to get out of local minima and find global equilibrium. ) Do that until E is smaller or = a certain limit. My formula for E is maybe not correctly generalized for team FFA, because I didn't know the [url=http://zero-k. info/Forum/Thread/20712]correct team FFA solution[/url] at that time ( which is sadly still not implemented!) . I have no idea at which player number this will be profitable. For this it would be usefull to know if really all configurations are calculated currently or only a portion until the elo difference is small enough. [/spoiler]
5 There is a much newer system that does consider deviation without an additional formalism, the [url=http://zero-k.info/Forum/Thread/21102]"teamstrength system"[/url]. @Sprung had the initial idea and I formalized it. It is currently my favourite system. But it gives teams with high elo deviation better win chances. Balancing with it does not increase nor decrease deviations! There are 2 ways to apply this system to team FFA. The easier, but more different from the current system, makes it more difficult to consider deviation. The principles of teamstrength, [url=http://zero-k.info/Forum/Thread/7402?postID=89751#89751]minimizing deviation[/url], using Markov chains for high player numbers and [url=http://zero-k.info/Forum/Thread/20208]making win chances more distinct in dependence of player number[/url] can all be combined to create an ultimative system.[spoiler]In fact I have already combined team strength and distinctivity modificator [url=http://zero-k.info/Forum/Thread/21102?postID=152586#152586]here[/url].[/spoiler] 5 There is a much newer system that does consider deviation without an additional formalism, the [url=http://zero-k.info/Forum/Thread/21102]"teamstrength system"[/url]. @Sprung had the initial idea and I formalized it. It is currently my favourite system. But it gives teams with high elo deviation better win chances. Balancing with it does not increase nor decrease deviations! There are 2 ways to apply this system to team FFA. The easier, but more different from the current system, makes it more difficult to consider deviation. The principles of teamstrength, [url=http://zero-k.info/Forum/Thread/7402?postID=89751#89751]minimizing deviation[/url], using Markov chains for high player numbers and [url=http://zero-k.info/Forum/Thread/20208]making win chances more distinct in dependence of player number[/url] can all be combined to create an ultimative system.[spoiler]In fact I have already combined team strength and distinctivity modificator [url=http://zero-k.info/Forum/Thread/21102?postID=152586#152586]here[/url].[/spoiler]