Wie ein krosmarc in diesen Kommentar bemerkt hat, werden die Spiele zweier KIs, die eine ähnliche Taktik haben, meistens unentschieden ausgehen. Oft ist es dann nur davon abhängig, welche Steine von oben nachrutschen, die dann über Sieg oder Niederlage einer KI entscheiden.
Das bedeutet, dass es neben der bisherigen Wertung eine zusätzliche Wertung geben muss. Die aktuelle Wertung wird folgendermaßen berechnet:
- Jede KI muss gegen jede andere KI auf 100 Wettbewerbsfeldern antreten. Dabei fängt einmal KI 1, danach KI 2 auf dem gleichen Feld an.
- Gewinnt eine KI beide Spiele, zählt dies als Sieg, verliert sie beide, zählt es als Niederlage und gewinnt einmal KI 1, danach KI 2 (oder umgekehrt), ist das Spiel unentschieden.
- Für jeden Sieg einer KI gibt es 3 Punkte, für jedes Unentschieden einen Punkt.
- Spiele gegen sich selbst (die ja normalerweise in 100 Unentschieden enden), werden nicht gewertet.
Wenn zwei KIs gleich stark sind, ist oft die Ausführungszeit (vor allem für mich als Wettbewerbsleiter) wichtig. Aus diesem Grund soll diese auch mit eine Rolle spielen. Schnelle Programme werden also belohnt, langsame Berechnungen etwas bestraft. Da natürlich die verwendete Programmiersprache auch wichtig ist, soll die Wertung so moderat vorgenommen werden, dass keinem Programmierer in einer bestimmten Sprache ein Nachteil entsteht.
Aus diesem Grund soll folgendes Verfahren angewendet werden (n = Anzahl der KIs):
- Für jede KI wird aus der Zeit, die sie gegen die anderen KIs gespielt hat, der Mittelwert M_i berechnet, i=1,...,n.
- Von den Mittelwerten M_1 bis M_n wird
die Standardabweichungwieder der Mittelwert S berechnet. - Daraus wird ein Wert R = ROUND((S-M_i)/10) berechnet. Die Teilung durch 10 soll dabei für eine annähernde Gleichberechtigung verschiedenen Sprachen sorgen.
- Dieser Wert R wird zur erreichten Punktzahl addiert.
Auf diese Weise werden schnelle KIs etwas bevorzugt und langsame KIs etwas benachteiligt. Aber nur in so einem Maße, dass es das eigentliche Ergebnis (KI spielt gut oder schlecht, siehe oben, denn dies ist vorrangig von Bedeutung) nicht zu sehr verfälscht.
Wenn jemand eine bessere Idee für eine faire Wertung der Laufzeit hat, soll er sich bitte melden. Irgendeine Abstufung sollte es aber geben, um die Programmierer, die einen Algorithmus besser umgesetzt haben als andere, zu belohnen.