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

Post edit history

math bork 2nd try

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
5/3/2016 5:04:54 PMDErankBrackman before revert after revert
Before After
1 Indeed the teamstrength system is currently my favourite system as I said [url=http://zero-k.info/Forum/Thread/22345?postID=156359#156359]here[/url] recently. In my above posts I explained that there are 2 possibilities to generalize teamstrength for FFA (the matrix approach and the teamstrength proportional one) and that I don't know which of them is correct. It seems like @Sprung has figured it out now. The elo->infinity argument makes it fairly convincing. 1 Indeed the teamstrength system is currently my favourite system as I said [url=http://zero-k.info/Forum/Thread/22345?postID=156359#156359]here[/url] recently. In my above posts I explained that there are 2 possibilities to generalize teamstrength for FFA (the matrix approach and the teamstrength proportional one) and that I don't know which of them is correct. It seems like @Sprung has figured it out now. The elo->infinity argument makes it fairly convincing.
2 \n 2 \n
3 Now I'm happy that I didn't find the time to implement the matrix solution for the current system (even though this would have been much better than the current implementation and the teamstrength system needs further consideration, because it makes a difference even for 2 teams). The teamstrength proportional system will also be easier to implement. 3 Now I'm happy that I didn't find the time to implement the matrix solution for the current system (even though this would have been much better than the current implementation and the teamstrength system needs further consideration, because it makes a difference even for 2 teams). The teamstrength proportional system will also be easier to implement.
4 {{{ playerstrength = g(elo) 4 {{{ playerstrength = g(elo)
5 teamstrength = ( sum of team's playerstrength) *h( n) } } } Should teams with higher elo deviation really get a higher win probability prediction? Note that this is a consequence of g being convex and if we only assume teamstrength proportional probabilities with any g and the invariance to shifts in the elo scale, we already get g( elo) =B^( elo-eloShift) , which is convex. Btw the condition that all players' elo average must be 1500 is equivalent to the product of all playerstrengths being 1 only if eloShift=1500. [spoiler]Generally the ( number of all players) -th root of the product of all playerstrengths = 10^( ( 1500-eloShift) /400) . [/spoiler] 5 teamstrength = ( sum of team's playerstrength) *h( n) } } } Should teams with higher elo deviation really get a higher win probability prediction? Note that this is a consequence of g being convex and if we only assume teamstrength proportional probabilities with any g and the invariance to shifts in the elo scale, we already get g( elo) =B^( elo-eloShift) , which is convex. From the condition "no change for 1v1" we can conclude B=10^( 1/400) . Btw the condition that all players' elo average must be 1500 is equivalent to the product of all playerstrengths being 1 only if eloShift=1500. [spoiler]Generally the ( number of all players) -th root of the product of all playerstrengths = 10^( ( 1500-eloShift) /400) . [/spoiler]
6 The teamstrength function does not really fulfill the conditions of a norm. The effect of different team sizes is indeed the biggest remaining question now, though. This is described by the function h. In the easiest case we use h=1/teamsize. Additionally we can multiply factors to consider extra com advantage and extra com player weighting as described [url=http://zero-k.info/Forum/Thread/21102?postID=152660#152660]here[/url], but I think this would only make it unnecessarily complicated, because those factors would be nearly 1 anyway. What I would really try is using h=sqrt(average size of all teams)/teamsize to make win chances more distinct for bigger teams like [url=http://zero-k.info/Forum/Thread/20208]this[/url]. For example a 3 player team in a 2v3 would have h=sqrt(2.5)/3. [spoiler]Note that bigger teams are not rated better here, but only more distinct. 6 The teamstrength function does not really fulfill the conditions of a norm. The effect of different team sizes is indeed the biggest remaining question now, though. This is described by the function h. In the easiest case we use h=1/teamsize. Additionally we can multiply factors to consider extra com advantage and extra com player weighting as described [url=http://zero-k.info/Forum/Thread/21102?postID=152660#152660]here[/url], but I think this would only make it unnecessarily complicated, because those factors would be nearly 1 anyway. What I would really try is using h=sqrt(average size of all teams)/teamsize to make win chances more distinct for bigger teams like [url=http://zero-k.info/Forum/Thread/20208]this[/url]. For example a 3 player team in a 2v3 would have h=sqrt(2.5)/3. [spoiler]Note that bigger teams are not rated better here, but only more distinct.
7 \n 7 \n
8 Furthermore I would delete the factor "Math.Sqrt(sumCount / 2.0)" in [url=https://github.com/ZeroK-RTS/Zero-K-Infrastructure/blob/fb41815993843f0facae823206ea0bbf5bbee90d/ZkData/Ef/SpringBattle.cs#L146]SpringBattle.cs[/url], which is exaclty the factor I would multiply to h instead as explained in the 3rd paragraph of [url=http://zero-k.info/Forum/Thread/20208?postID=148318#148318]this post[/url] (where D(n)/n=h(n)). 8 Furthermore I would delete the factor "Math.Sqrt(sumCount / 2.0)" in [url=https://github.com/ZeroK-RTS/Zero-K-Infrastructure/blob/fb41815993843f0facae823206ea0bbf5bbee90d/ZkData/Ef/SpringBattle.cs#L146]SpringBattle.cs[/url], which is exaclty the factor I would multiply to h instead as explained in the 3rd paragraph of [url=http://zero-k.info/Forum/Thread/20208?postID=148318#148318]this post[/url] (where D(n)/n=h(n)).
9 \n 9 \n
10 Additionally I would fix 1v1 XP in SpringBattle.cs to use 1v1 elo instead of team elo. 10 Additionally I would fix 1v1 XP in SpringBattle.cs to use 1v1 elo instead of team elo.
11 \n 11 \n
12 In order to fix balance the function "public static double GetTeamsDifference(List<BalanceTeam> t)" in line 111 of Balancer.cs would have to give the following result: {{{ E = sum from k=1 to N (teamsize_k*(1/N - p_k)² + c*Var_k) }}} , where N is the number of teams, p_k team k's teamstrength proportional win probability and Var_k its elo variance, maybe even with c=0. 12 In order to fix balance the function "public static double GetTeamsDifference(List<BalanceTeam> t)" in line 111 of Balancer.cs would have to give the following result: {{{ E = sum from k=1 to N (teamsize_k*(1/N - p_k)² + c*Var_k) }}} , where N is the number of teams, p_k team k's teamstrength proportional win probability and Var_k its elo variance, maybe even with c=0.
13 \n 13 \n
14 Finally I would give 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. {{{ player's small team elo weighting = 2/number of all players in the game 14 Finally I would give 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. {{{ player's small team elo weighting = 2/number of all players in the game
15 player's big team elo weighting = 1-player's small team elo weighting }}} [/spoiler] 15 player's big team elo weighting = 1-player's small team elo weighting }}} [/spoiler]