I'm trying to write a chess simulation where entity's ratings are emergent out of pairings where the results are based on comparison of various statistics.
Here is an example that covers the issue I'm running into:
player_1 has a strength attribute strength_1
player_2 has a strength attribute strength_2
I want the expected score [(# of wins + 1/2 * # of draws) / (number of games)] to equal strength_1 / (strength_1 + strength_2)
So far so good. The issue is when I include draws.
Arbitrarily (not exactly arbitrary, but tl;dr) I want the distribution of wins///draws///losses to stick to wins///GM(wins,losses)///losses, where GM is the geometric mean
It's not as simple as strength_1///GM(strength_1, strength_2)///strength_2 because this actually skews things in favor of the weaker player.
So it has to be reverse engineered algebraically.
We need to find x, y, and z, such that ((x + (1/2)*y) / (x + y + z) = strength_1/(strength_1 + strength_2) <- we can treat the righthand side here as a constant since we know strength_1 and strength_2
And we also have that y = sqrt(x*z)
And finally we have the same equation as above but inverted for the other player: (z + (1/2)*y)/(x+y+z) = strength_2/(strength_1 + strength_2)
A) equations are incredibly difficult to solve
B) they might not even count as two equations/two variables because I'm not sure if the two main formulas are linearly independent. (same denominator and the constants in question add up to 1) This might not preclude their linear independence, but I'm not very experienced in this type of math so I don't know.