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

Balancer broken?

41 posts, 1528 views
Post comment
Filter:    Player:  
Page of 3 (41 records)
sort
avarage values are *OK*, but... you know what i mean...
+0 / -0
Skasi
Tell DErankBrackman to finally create a PR for his improved magic balancing system. Chances are he already analyzed the impact of average elo differences between players of a single team.
+1 / -0
So... who is favored in this match according to various theories?

Also, if I'm reading DErankBrackman 's more recent post correctly, then any elo difference of 0 will still be optimal (because, as he shows, it gets multiplied with his newly introduced factor. Or, well, it's obvious by just inputting an eloDiff of 0).
Edit: I'm talking about his "distinctivity modificator", as introduced in the post linked by Skasi . The general ELO business has been discussed here, or (if you can't stomach that) see further below.
So his new system would not penalize this particular team balance in any way. It would remain the best solution.

Whatever change we make to the balancer system, it would have to clearly define whether team "high elo variance" (HEV) or team "low elo variance" (LEV) are better off. Because, as shown above, if neither are considered better off, you'll keep getting these balancer outputs.

From what I remember, people seem to agree that it's obvious which team is favored. But then it turns out that they don't agree which one is favored.

PS: Who broke apostrophes after @<PlayerName>?
+0 / -0


8 years ago
It is not about any team being favored. It is about creating games that are bad to play for the team with high elo difference.
+2 / -0
It's not just about equal chances. It's also about minimizing standard deviation. And by minimizing the ELO deviation of each team, you also minimize the "randomness" of the outcome.

So I'll agree that the current balancing might be optimal for equalizing chances, but fails at making good games. Because for good games, you need to minimize the deviation.
+2 / -0
Well then we need to define a new objective function.

This new objective function would define the tradeoff between elo variance (is that the standard deviation? The variance? Or the sum of absolute differences of team average and individual elos?) and team imbalance.

To illustrate this, consider these situations that share this (current) optimum:
- Elo difference 0, Elo variance 100

If you get to choose between the above and each of the following individually (i.e. you're only comparing with one at a time), which one is to be taken in each case?

- Elo difference 1, Elo variance 0
- Elo difference 10, Elo variance 0
- Elo difference 100, Elo variance 0
- Elo difference 1, Elo variance 10
- Elo difference 10, Elo variance 10
- Elo difference 100, Elo variance 10

Note also that, as explained in posts way back in the day, the current balance optimization function makes heavy use of the "simpleness" of the current objective function. By the sound of it, it would be prohibitively expensive to calculate something fancy like a standard deviation for every considered team composition. (Keep in mind that the problem we're solving is a variance of an NP-hard problem.)

In other words, be prepared that even if we find an objective function that people agree on, it might still not be implementable.

Reverse TL;DR: This post summarized (in simpler terms) what DErankBrackman did/concluded here.

PS: Well fuck it, zero-width spaces don't do the job for apostrophes after @<Playername> either. This stuff used to work fine!
+0 / -0
Doesn't the current implementation just brute force some magic combinations and select the best? (I'm just guessing here)

Either way, doing this should be possible for any function that is quick to evaluate and give approximately good results. Calculating standard deviation is just as easy as taking the average.
+0 / -0
quote:
just brute force some magic combinations and select the best?

Yes.

quote:
This should be possible for any function that is quick to evaluate.

Exactly. Or where changing the function arguments makes it easy to evaluate the resulting function value (which is true for the current one).

quote:
And calculating standard deviation is just as easy as taking the average.

Well, sadly it's not about being "hard" or "easy" but about "computationally expensive". Which the standard deviation (if you calculate it on the go, it's still many sums, squares and a square root) undeniably is compared to adding/subtracting a few numbers.
+0 / -0
Both are O(n).. I call that easy. You can do addition and multiplication in the same cycle btw.

Even though I agree that in praxis, the current method will be a bit faster, would this new calculation method really be too slow to use?
+0 / -0
quote:
Both are O(n)

...anything higher would simply blow up for the objective function of a (semi?-)brute-forced NP problem.

I haven't looked into the code (well, recently enough), but I'd wager a guess that the current cost function is below O(n) in the grand scheme of things because you don't actually evaluate the full function for every combination.

What I mean: 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. I'm not currently in the state of mind to investigate whether you can cover all combinations with this efficiently, but if you can, then you can calculate the cost functions of N team compositions in O(N), not O(N * n) with n being the amount of players.

With variance/standard deviation, the change in the mean means (no pun intended) that you definitely need to recalculate the entire function.

quote:
You can do addition and multiplication in the same cycle btw

I know about FMA, but that's not the type of cost reduction I'm talking about.


For the record: This is the function we're essentially talking about here.
quote:
sum_(k=1)^(N)(sum_(l=1)^(N)((avg_(w, X_k)(T_k)-avg_(w, X_l)(T_l))² + c(sqrt(Var_(w, X_k)(T_k)) - sqrt(Var_(w, X_l)(T_l)))²)).
(quoted from the DErankBrackman post)

And all this is only for the "easy" case of two teams.
(And no, this type of discussion is actually not why I chose this name...)
+0 / -0
No matter what system you use, producing games like this *occasionally* does not make it broken.
+1 / -0

8 years ago
quote:
No matter what system you use, producing games like this occasionally does not make it broken.

But it was whole evening.
In the first game the high elo players rushed to porced critical chokepoints, and team with smaller std.deviation of elo lost.
In the second game 1 of the highest elo player resigned or went afk and team with smaller std.deviation of elo won.
:<
+1 / -0

8 years ago
Well, in that case is it not producing balanced games?

The only real solution to high elo variance in games is more players.
+0 / -0
8 years ago
Seen also something similar for smaller games, and I think there it is even worse. Like highest elo with 2 people with ELO-s of 1100 and then opposite team with 3 people ~1700. We exited game as it seemed basically as 1v3. (based on previous games the low ELO was playing as low ELO).

Did not follow all the algorithms/ideas, it would be nice if the algorithm could be time limited (like: improve balance for X seconds, and then just use the best result). This way maybe for games with less people it will give "nicer" results, and if it is really 10v10 it will not become extremely slow.
+0 / -0
What nicer results? You have a 2000 elo guy, two 1700s and a 1100. There are two ways to split them into teams: 2000+1100 vs 1700+1700 which is lopsided and 2000+1700 vs 1700+1100 which is even more lopsided and practically unwinnable.

The balancer isn't going to turn the 1100 guy into a 1500 even if you give it all the time in the world.
+1 / -0
If you want example of strange balance in small game there is this: Multiplayer B410326 9 on Archers_Valley_v6

Teams:
2270 + 2060 + 1110 + 1100 (average 1635)
vs
1850 + 1850 + 1640 + 1440 + 1360 (average 1628)

Elo values taken from ingame widget, so these are the values players had at the time of the game.

Maybe there was really no better balance but it seems strange to me that the second top elo player (me) gets put in the same team as first elo one ( SKrankSvatopluk ) who is far above all others there.
+0 / -0


8 years ago
The only alternate balance I can think of would be:

Teams:
2270 + 1850 + 1360 + 1100 (average 1645)
vs
2060 + 1850 + 1640 + 1440 + 1110 (average 1620)

Which gives us slighty bigger difference of average elo, but much smaller variance, and better distribution of elo-levels among both teams.
I think it should be preferable.

+3 / -0


8 years ago
Ok there is one last possibility:

Teams:
2270 + 1640 + 1440 + 1110 (average 1615)
vs
2060 + 1850 + 1850 + 1360 + 1100 (average 1644)

But it has even higher elo difference, and imho makes it too hard for the highest elo player.
+0 / -0
Maybe you might get better balances by seeing the "elo" of two players on the same team and using that as a single 'elo'. For instance sprung might have Avg{brofessional=2085,nub2=1555,blah3=1920,yada8=1928} (here sprung's elo is effectively 2085 when brofessional is on the same team, 1555 when nub2 is on the same team [might be a new player he hasnt worked with], 1920 when blah3 is present, and 1928 when yada8 is present) = effective elo of 1872 with this team. Averaging the average of the elo with players might yield some interesting results maybe? Like if I were to lose all the time with playerX, he'd bring down my effective elo (average of the pairs with everyone else on the team) which causes the average elo of the team to go down. In essence, this would create pairs of players and if they work well together, they'd have higher elo than if they don't work well together. It would also take into account of the 'working with stranger' yields less effective vs working with known partner. These values would go up when a player is present on the same tema and you win, and down when a player is present on the same team and you lose. It would also probably really work well in 2v2 balancing maybe.

As an additional benefit, it would also mean that playing bad to lower elo would take a LOT longer to happen because it only lowers your elo with certain players on your team, effectively deincentizing the firepluk problem.

Cons: - Takes slightly longer to balance bigger teams (maybe?)

But that's just an unsubstantiated idea.
+0 / -0

8 years ago
Team elo sounds nice if you consider the whole team a single entity, so it would work well with premade matchmaker teams. If you want it to be made from average of pairwise averages then you need to (get DErankBrackman to) figure out whether the Elo constraints (like 0 sum) are kept.
+0 / -0
Page of 3 (41 records)