ELO Zahl in der Panzerliga

Ja, was wollen denn die User haben?

Moderator: PanzerLiga-Team

Antworten
Gwaylare
Bildleser
Beiträge: 17
Registriert: Fr 14. Okt 2011, 20:38
Kontaktdaten:

ELO Zahl in der Panzerliga

Beitrag von Gwaylare »

Auch auf die Gefahr hin ein altes, bereits langdiskutiertes Thema erneut auf den Tisch zu bringen:

An english section will follow below

Die Aufsummierung der Punkte aller Spiele in der Rangliste gibt
leider kaum einen Aufschluss über die Spielstärke eines Gegners. Man
muss schon in die Statistik schauen und hoffen, dass er gegen bekannte
Gegner gespielt hat. Das funktioniert weil die Panzerliga für Panzer Corps noch recht
übersichtlich ist, aber trotzdem erlebt man immer mal wieder
Überraschungen.
Die Panzer Corps Liga is jung und vielleicht lassen sich Dinge leichter verändern, da nicht eine jahrelange Historie daran hängt.

Was ich mir hier wünschen würde wäre ein System ähnlich der ELO-Zahl
für Schachspieler, welches die Spielstärke eines Spielers bewertet und
eine Aussage darüber macht, mit welcher Wahrscheinlichkeit Spieler
A gegen Spieler B gewinnen wird.
Das kann sehr nützlich sein, um jeweils immer möglichst
ähnlich starke Gegner zu finden oder in einem Tunier Spieler nach Stärke zu
setzen. Das kann aber auch nur ein zusätzliches Feature sein, um neue
Spieler anzulocken, die gerne so bewertet werden wollen.

Hier gibt es die Theorie dazu: http://de.wikipedia.org/wiki/Elo-Zahl
Das Prinzip ist, dass man aus den ELO Zahlen den Erwartungswert für
Sieg und Niederlage ablesen kann. Ein Unterschied von 200 Punkten bedeuted eine 75% Chance ein Spiel zu gewinnen. Punkte für ein Spiel gewinnt oder verliert man in Relation zur Abweichung von diesem Erwartunswert.

Ein paar Beispiele:

Zwei gleich starke Spieler spielen unentschieden. Das ist exakt der
Erwartungswert, also gibt es auch keine Punkte.
Spielt ein starker Spieler gegen einen schwächeren Spieler
unentschieden, so bekommt der schwächere Punkte und der stärkere verliert genauso viele Punkte.

Gewinnt ein Spieler so bekommt er Punkte für die Abweichung vom Erwartungswert. Hier kann man die in der Panzerliga
üblichen Punkte wie unterschiedliche Spiele werteten. Das heißt ein
5:2 wird als 5 gewonnene und 2 verlorene Spiele gewertet.
Je nach Unterschied der Spielstärke kann so ein sehr viel schwächerer Spieler selbst noch Punkte bekommen, wenn er knapp
verliert.

So eine Bewertung dient ausschließlich für ein Ranking zur Bestimmung der Stärke
eines Spielers. Es kann und soll nicht irgendwie die Punktewertungen
für Tuniere oder die Meisterschaften ablösen. Nur nach einer ganzen
Reihe von Spielen hat soetwas überhaupt Aussagekraft und wird mit
zunehmender Zeit besser. Dasselbe gilt für neue Spieler, die mit einem gewählten Startwert beginnen und sich dann erst durch einige Spiele einordnen müssen.

Wenn Ihr Interesse an so einem System habt, dann lasst es uns hier diskutieren.
-----------------------------------------------------------------------------------------------------

To sum up all the points in a ranking does not really allow to guess about the ability of a player. It is necessary to lookup the statistics, hopping to find results against well known opponents. This works fine because Panzerliga is quite small, but suprises may happen of cause.

What I would like to have is a ranking like the ELO number used by chess palyers. The ELO number gives an information about the chance to win a game against an opponent. This is quite usefull to find opponents with a balanced skill or to have seeded palyers in a tournament. As well this could be just a feature to be attractive for new players enjoying a rating like this.

Here is some theory to read about ELO numbers: http://en.wikipedia.org/wiki/Elo_rating_system
The idea is to get the expected value to win a game directly from the difference of the ELO numbers. A difference of 200 point means a 75% chance to win a game. The numbers will change after the game in relation to the fulfillment of this expectation.

To have some examples:
To players with the same ELO numbers does get a draw result in a game. This was exactly the expectation, so ELO numbers will not change.
In the case a player with a higher ELO number having a draw result against a player with a lower one, the lower ELO number will be raised and the higher will be lowered.
Does a player win a game his number gets raised in the relation to the expectation value. The number of the other player will be lowered with the same amount. To reflect the points given within Panzerliga it is possible to interpret a 5:2 victory as 5 wins and 2 losses to calcualte the new ELO number.
Because of this a player with a much lower ELO number may even raise his ELO number, if he looses scarcely.

A ranking like this should just reflect the skills of the players. It is not possible to use this within a championship or tournament. In addition it will take a lot of games till the ranking will reflect anything, but will getting better over time. Same thing for a new player who starts with a choosen value and then have to fit into the ranking with a couple of games.

If you are interested in a ranking system like this, just let us discuss about.

(If some native speaker is able to correct a lot of errors I did for sure, just let me know)

Benutzeravatar
Amadeus
Moderator
Beiträge: 1866
Registriert: Di 24. Aug 2004, 06:31
Kontaktdaten:

Re: ELO Zahl in der Panzerliga

Beitrag von Amadeus »

Vertue dich mal nicht mit unserer Historie, wir sind in den älteren Spielen schon 2 stellig (10 Jahre)

Grundsätzlich würde ich eine neue Punkteform schon begrüßen, insbesondere wenn es eine offizielle Methode ist. Dennoch erscheint mit die Ergebnisfindung eher theoretisch. Ich meine, man muss erst nachschauen wie viel ein Spiel "wert" ist. Vielleicht könnte man ja z. B. die Ergebnisse aus Panzercorps mal umrechnen um zu sehen, ob es etwas bringt und wie dann ein konkreter Vergleich aussieht.

Aus Adminsicht muss sich eine neue Methode aber zu allererst an der Praktikabilität messen. Soll heißen, wenn es am Ende nicht automatisierbar wäre, können wir es nicht machen. Anders gesagt, die Spieler müssen Spiele leicht reporten können und dadurch wird automatisch die Rangliste aktualisiert.
“Die Größe eines Menschen zeigt sich nicht an seinem Reichtum, sondern an seiner Integrität und seiner Fähigkeit, seine Umwelt positiv zu beeinflussen.“ - Bob Marley

Gwaylare
Bildleser
Beiträge: 17
Registriert: Fr 14. Okt 2011, 20:38
Kontaktdaten:

Re: ELO Zahl in der Panzerliga

Beitrag von Gwaylare »

Amadeus hat geschrieben:Vertue dich mal nicht mit unserer Historie, wir sind in den älteren Spielen schon 2 stellig (10 Jahre)
Deshalb habe ich mich ja auch auf die Panzer Corps Liga bezogen ;-)
Amadeus hat geschrieben: Grundsätzlich würde ich eine neue Punkteform schon begrüßen, insbesondere wenn es eine offizielle Methode ist. Dennoch erscheint mit die Ergebnisfindung eher theoretisch. Ich meine, man muss erst nachschauen wie viel ein Spiel "wert" ist. Vielleicht könnte man ja z. B. die Ergebnisse aus Panzercorps mal umrechnen um zu sehen, ob es etwas bringt und wie dann ein konkreter Vergleich aussieht.
Es tut mir leider aber ein bisschen Theorie tut leider not. Ich versuche aber mal das ein wenig konkreter zu machen und zu erleutern wie ich die Theorie auf die Panzerliga anwenden würde:

Bild
Das ist die Formel für den Erwartungswert, der Dreh- und Angelpunkt des ganzen Systems. Es fällt leichter das als Black Box zu betrachten und sich zu merken: "Wenn jemand 200 Elo Punkte mehr hat als sein Gegner, so ist der Erwartungswert für einen Sieg 0,75. Das heisst er gewinnt mit 75% Wahrscheinlichkeit oder anders gesagt 3 von 4 Spielen.

Wie sollen nun aus Spielergebnissen eine ELO Zahl werden? Dazu müssen wir ein paar Annahmen machen und das System modifizieren:
Jeder Spieler beginnt mit 1300, das ist frei festgesetz und wir können auch jede andere Zahl nehmen. Unterschiedlich Startpunkte wären denkbar, würden aber eine Bewertung durch eine neutrale Stelle benötigen. Die Idee ist, das das System sich selbst einstellt, ohne viel Vorgaben hineinzustecken.

Die nächste Hürde sind die Punkte der Panzerliga. Wie bereits erwähnt wäre es ein plausibler Ansatz jeden Punkt einfach als ein gewonnenes Spiel darzustellen. Das hat ein paar Ecken und Kanten, aber ich denke das funktioniert.
Wir benötigen 4 Größen für die Berechnung, jeweils wieviel Punkte ein Spieler bekommen hat und wieviel ELO Punkte er hat: Punkte1, Punkte2, ELO1, ELO2
Für die Veränderung der ELO Zahl gilt dann die Formel:

ELO1NEU = ELO1ALT + k * (Punkte1 - (Punkte1 + Punkte2) * EA)

k ist hierbei einfach eine Konstante die die Veränderung des Systems beschleunigt oder bremst. Üblich sind hier Werte zwischen 15 und 30. Da wir ein Spiel schon durch die Punkte als mehrere Siege interpretieren, habe ich mal nur k = 2 angesetzt. Das ist aber ein Größe mit der man experimentieren müsste.

Hier ein paar Spiele aus dem Januar:

Bild

So schauen wir uns mal das erste Spiel an und schauen was passiert ist. Blücher spielt gegen Aragorn 10 zu 1. Beide haben noch die selbe ELO-Zahl also ist der Erwartungswert EA = 0,5, das ist einfach ;-)
1309 = 1300 + 2 * ( 10 - ( 10 + 1 ) * 0,5)
Ich lese das ungefähr so:
Es waren 11 im Jackpot. Der Erwartungswert war 0,5. Also muss ich 5,5 Punkte erreichen, um der Erwartungshaltung gerecht zu werden. Bekomme ich mehr gibts Punkte, bekomme ich weniger, gibts welche abgezogen. Mit 10 Punkten liegt Blücher jetzt also 4,5 Punkte über der Erwartung und das gibt dann 2 * 4,5 Punkte (hier kommt der k Faktor ins Spiel.)

Schauen wir uns das dritte Spiel an: Aragorn gewinnt 10 : 1 gegen Longstreet. Eigentlich genau das selbe, aber Aragorn hat aus dem ersten Spiel nur noch 1291 ELO Punkte. Eine Differenz von 9 ELO Punkten ist nicht die Welt, aber es verändert den Erwartungswert. Er ist jetzt 0,487.
1300,28 = 1291 + 2 * ( 10 - ( 10 + 1 ) * 0,487)
Also die Differenzen sind hier minimal, aber das verändert sich mit der Zeit. Hier sind mehrere 10:1 oder 8:1 Siege und unterschiedlich bepunkted.

Für die Panzer Corps Spiele dieses Jahres habe ich das mal durchlaufen lassen (Stand 03.03.). Die ELO-Zahlen sehen dann ungefähr so aus:
Bild

Bei wenigen Spielen hat das kaum eine Bedeutung, ich denke ab 30 Spielen kann man eine erste Tendenz erkennen. Wirklich gut wird die Aussage nur dann, wenn man gegen viele unterschiedliche Gegner spielt. Zwei Gegner die hauptsächlich gegeneinander Spielen, können ein Subsystem bilden welches sich unabhängig vom Rest entwickeln kann. Das ist aber ein Nachteil mit dem man gut leben kann, bedeuted es nur, dass man jede Aussage trotzdem immer hinterfragen muss und keine absolut korrekten Aussagen erwarten darf.

Der größte und häufig genannte Nachteil ist, dass ein Spieler mit einem hohen ELO-Wert diesen konservieren kann, in dem er nicht spielt. Deshalb macht diese Rechnung keinen Sinn für eine Meisterschaft oder ein Tunier. Ein System welches einen davon abhält zu spielen ist ein schlechtes System. Deshalb gefällt mir der Gedanke ganz gut das jetzige Liga System mit soetwas zu kombinieren. Zwei Listen mit unterschiedlichen Zielen und Aussagen.

Grüße
Gwaylare

Gwaylare
Bildleser
Beiträge: 17
Registriert: Fr 14. Okt 2011, 20:38
Kontaktdaten:

Re: ELO Zahl in der Panzerliga

Beitrag von Gwaylare »

Hier möchte ich noch kurz etwas zur Machbarkeit sagen.
Wie oben bereits erwähnt benötigen wir zum Eintragen der Spielergebnisse vier Parameter: Punkte1, Punkte2, ELO1, ELO2
Das sind exakt die vier Parameter die die jetzige Rangliste ebenfalls benötigt nur findet hier die zugegeben etwas einfachere Operation statt da die Punkte nur addiert werden.
Einmal programmier ist es aber total egal ob wir addieren oder etwas komplexeres tun, es bleibt eine Operation die vier Inputparameter benötigt.

Für Interessierte, hier kurz den Prototyp den ich auf dem MS SQL-Server verwendet habe, um das zu berechnen:

ALTER PROCEDURE SpielErgebnisCalculateELO
AS
BEGIN

SET NOCOUNT ON;
DECLARE @Spieler1 varchar(50)
DECLARE @Spieler2 varchar(50)
DECLARE @SpielErgebnisPK int
DECLARE @Punkte1 int
DECLARE @Punkte2 int
DECLARE @EloPunkte1 decimal(15,2)
DECLARE @EloPunkte2 decimal(15,2)
DECLARE @DeltaELO1 decimal(15,2)
DECLARE @DeltaELO2 decimal(15,2)

DECLARE SpielErgebnisse CURSOR
FOR
SELECT [SpielErgebnisPK]
,[Spieler1]
,[Spieler2]
,[Punkte1]
,[Punkte2]
FROM [Panzerliga].[dbo].[SpielErgebnis]
WHERE Elopunkte1 IS NULL and Elopunkte2 IS NULL
AND Datum > '01.01.2012'
ORDER BY Datum

OPEN SpielErgebnisse

FETCH NEXT FROM SpielErgebnisse
INTO @SpielErgebnisPK, @Spieler1, @Spieler2, @Punkte1, @Punkte2

WHILE @@FETCH_STATUS = 0
BEGIN
BEGIN Transaction T1
SELECT @EloPunkte1 = EloPunkte
FROM [Panzerliga].[dbo].[Spieler]
WHERE SpielerName = @Spieler1

SELECT @EloPunkte2 = EloPunkte
FROM [Panzerliga].[dbo].[Spieler]
WHERE SpielerName = @Spieler2

SET @DeltaELO1 = 2 * (@Punkte1 - (@Punkte1 + @Punkte2) *(1/(1+POWER(1.00577306,((@EloPunkte2-@EloPunkte1))))))
SET @DeltaELO2 = 2 * (@Punkte2 - (@Punkte1 + @Punkte2) *(1/(1+POWER(1.00577306,((@EloPunkte1-@EloPunkte2))))))

UPDATE [Panzerliga].[dbo].[SpielErgebnis]
SET EloPunkte1 = @DeltaELO1,
EloPunkte2 = @DeltaELO2
WHERE SpielErgebnisPK = @SpielErgebnisPK

UPDATE [Panzerliga].[dbo].Spieler
SET ELOPunkte = ELOPunkte + @DeltaELO1
WHERE Spielername = @Spieler1

UPDATE [Panzerliga].[dbo].Spieler
SET ELOPunkte = ELOPunkte + @DeltaELO2
WHERE Spielername = @Spieler2

COMMIT Transaction T1

FETCH NEXT FROM SpielErgebnisse
INTO @SpielErgebnisPK, @Spieler1, @Spieler2, @Punkte1, @Punkte2
END

CLOSE SpielErgebnisse
DEALLOCATE SpielErgebnisse

END

Das ist eine Prozedur die auf zwei Tabellen zugreift und dann aus den Spielergebnissen wie sie jetzt bereits eingetragen werden die ELO-Zahlen berechnet.
Das ganze kann jederzeit zurückgesetzt und neuberechnet werden, wenn man erkennt, dass die gewählten Startparameter hätten besser gewählt werden können.
Die Berechnung dauert wenige Sekunden und es ich wahrscheinlich auch einfach möglich die Ergebniss der alten PG Ligen mal da durch laufen zu lassen.

Eine Datenbank zu haben wäre schön aber nicht notwendig, zur Not lässt sich das auch mit Textdateien machen. Das macht nur die Programmierung komplizierter.

Grüße
Gwaylare

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste