Dies ist ein ELO -Bewertungsrechner, der speziell für Fußballspiele optimiert ist.
Es kann eine bestimmte Teambewertung berechnen, die auf einer Geschichte von Spielen basiert, die sich in verschiedenen Spielzeiten/Ligen verteilt, die Wahrscheinlichkeit eines Teams A -Schlachtteam B, Import- und Exportdaten für JSON -Dateien, personalisieren Sie den Algorithmus und viele weitere Funktionen.
Aus Wikipedia:
Das ELO-Bewertungssystem ist eine Methode zur Berechnung der relativen Fähigkeiten der Spieler in Wettkämpfe gegen Wettbewerber wie Schach. Es ist nach seinem Schöpfer Arpad Elo, einem in Ungarn geborenen amerikanischen Physikprofessor, benannt.
Diese Implementierung hat einige Änderungen, die sich an Fußballspiele einstellen können, insbesondere die Hinzufügung einer Variablen, die die in einem bestimmten Match verteilten Punkte entsprechend dem Zielunterschied ändert.
Ausführliche Informationen zu den Formeln und etwas mehr Theorie finden Sie auf der Wikipedia -Seite.
Der anfängliche Bewertungswert beträgt 1500 Punkte, während der Standard -K 20 beträgt (aber leicht veränderbar ist).
Außerdem können Sie nach jeder Saison die Punkte aller Teams um 1/3 auf den Mittelwert zurückführen, indem Sie die regresstomische Variable festlegen. Dies ist besonders nützlich in wettbewerbsfähigen Ligen, bei denen viele Transfers und neue Spieler beim Aufbinden jeder neuen Saison (Standard ist wahr).
Höhere Ranking -Teams werden immer noch einen Vorteil haben, aber es wird wettbewerbsfähiger sein.
EloCalculator calculator = new EloCalculator ();
try {
calculator = new EloCalculator . Builder ()
. setK ( 20 )
. setLeagues ( "C: \ Soccer \ Data.json" )
. setRegressTowardMean ( true )
. build ();
} catch ( IOException ex ) {
Logger . getLogger ( MainClass . class . getName ()). log ( Level . SEVERE , null , ex );
} calculator . calculateRatings ();Sie können es speichern (und später laden, damit Sie nicht neu berechnen müssen).
try {
calculator . saveTeamsJSONFile ( "C: \ Soccer \ Ratings_Jan_2017.json" );
} catch ( IOException ex ) {
Logger . getLogger ( MainClass . class . getName ()). log ( Level . SEVERE , null , ex );
}Oder Sie können Ihre Daten direkt erhalten. In diesem Beispiel drucken wir die Bewertung nur in absteigender Reihenfolge.
System . out . println ( "Ranking: " );
List < Team > teams = calculator . getTeams ( true );
for ( Team t : teams )
System . out . println ((( int ) t . getLastRating (). getRating ()) + " " + t . getName ()); [
{
"champion" : " Palmeiras " ,
"name" : " Campeonato Brasileiro 2016 " ,
"matches" : [
{
"home" : " Vitória " ,
"away" : " Palmeiras " ,
"homeGoals" : 1 ,
"awayGoals" : 2 ,
"date" : " Dec 11, 2016 12:00:00 AM "
},
{
"home" : " Palmeiras " ,
"away" : " Atlético-PR " ,
"homeGoals" : 4 ,
"awayGoals" : 0 ,
"date" : " May 14, 2016 12:00:00 AM "
}
],
"year" : 2016
}
]Ein paar Dinge, die ich für die Zukunft im Sinn habe ...
The MIT License (MIT)
Copyright (c) 2016 Victor Santiago
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.