mirror of
https://github.com/AJMicke/KickerELO.git
synced 2026-03-11 13:31:02 +01:00
Update 2 vs 2 Elo calculation
This commit is contained in:
@@ -39,10 +39,27 @@ public class EloCalculationService {
|
||||
* @param toreVerlierer The number of goals of the losing teams
|
||||
*/
|
||||
public void updateElo2vs2(Spieler gewinnerVorn, Spieler gewinnerHinten, Spieler verliererVorn, Spieler verliererHinten, short toreVerlierer) {
|
||||
gewinnerVorn.setElo2vs2(gewinnerVorn.getElo2vs2() + 10 - toreVerlierer);
|
||||
gewinnerHinten.setElo2vs2(gewinnerHinten.getElo2vs2() + 10 - toreVerlierer);
|
||||
verliererVorn.setElo2vs2(verliererVorn.getElo2vs2() - 10 + toreVerlierer);
|
||||
verliererHinten.setElo2vs2(verliererHinten.getElo2vs2() - 10 + toreVerlierer);
|
||||
final float baseK = 100;
|
||||
final double adjustedK = baseK * (1 - (0.1 * toreVerlierer));
|
||||
var totalWinnerElo = gewinnerVorn.getElo2vs2() + gewinnerHinten.getElo2vs2();
|
||||
var totalLoserElo = verliererVorn.getElo2vs2() + verliererHinten.getElo2vs2();
|
||||
var eloDifference = totalWinnerElo - totalLoserElo;
|
||||
var winnerProbability = 1 / (1 + Math.pow(10, -eloDifference / 500));
|
||||
|
||||
var winner1Contribution = gewinnerVorn.getElo2vs2() / totalWinnerElo;
|
||||
var winner2Contribution = gewinnerHinten.getElo2vs2() / totalWinnerElo;
|
||||
var loser1Contribution = verliererVorn.getElo2vs2() / totalLoserElo;
|
||||
var loser2Contribution = verliererHinten.getElo2vs2() / totalLoserElo;
|
||||
|
||||
var winner1EloChange = adjustedK * winner1Contribution * (1 - winnerProbability);
|
||||
var winner2EloChange = adjustedK * winner2Contribution * (1 - winnerProbability);
|
||||
var loser1EloChange = adjustedK * loser1Contribution * (0 - (1 - winnerProbability));
|
||||
var loser2EloChange = adjustedK * loser2Contribution * (0 - (1 - winnerProbability));
|
||||
|
||||
gewinnerVorn.setElo2vs2((float) (gewinnerVorn.getElo2vs2() + winner1EloChange));
|
||||
gewinnerHinten.setElo2vs2((float) (gewinnerHinten.getElo2vs2() + winner2EloChange));
|
||||
verliererVorn.setElo2vs2((float) (verliererVorn.getElo2vs2() + loser1EloChange));
|
||||
verliererHinten.setElo2vs2((float) (verliererHinten.getElo2vs2() + loser2EloChange));
|
||||
}
|
||||
|
||||
public float getInitialElo1vs1() {
|
||||
|
||||
Reference in New Issue
Block a user