Il s'agit d'une calculatrice de notation ELO spécifiquement modifiée pour les matchs de football.
Il peut calculer une note d'équipe donnée basée sur une histoire de matchs répartis sur différentes saisons / lieues, vous donne la probabilité que l'équipe bat l'équipe B de battre B, les données d'importation et d'exportation font des fichiers JSON, personnalisent l'algorithme et bien d'autres fonctionnalités.
De Wikipedia:
Le système de notation ELO est une méthode pour calculer les niveaux de compétences relatifs des joueurs dans les jeux concurrents contre concurrents tels que les échecs. Il porte le nom de son créateur Arpad Elo, professeur de physique américain d'origine hongroise.
Cette implémentation a quelques ajustements pour s'adapter aux matchs de football, plus particulièrement, l'ajout d'une variable qui modifie les points répartis dans un match donné en fonction de la différence d'objectifs.
Pour des informations détaillées sur les formules et un peu plus de théorie, veuillez visiter la page Wikipedia.
La valeur de notation initiale est de 1500 points, tandis que le K par défaut est de 20 (mais il est facilement modifiable).
De plus, après chaque saison, vous pouvez régresser les points de toutes les équipes par 1/3 à la moyenne en définissant True la variable RegressTomean . Cela est particulièrement utile dans les ligues compétitives où il y a beaucoup de transferts et de nouveaux joueurs à la mendicité de chaque nouvelle saison (la valeur par défaut est vraie).
Les équipes de classement plus élevé auront toujours un avantage, mais ce sera plus compétitif.
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 ();Vous pouvez l'enregistrer (et le charger plus tard, vous n'avez donc pas besoin de recalculer).
try {
calculator . saveTeamsJSONFile ( "C: \ Soccer \ Ratings_Jan_2017.json" );
} catch ( IOException ex ) {
Logger . getLogger ( MainClass . class . getName ()). log ( Level . SEVERE , null , ex );
}Ou vous pouvez obtenir vos données directement. Dans cet exemple, nous imprimons uniquement la note dans l'ordre descendant.
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
}
]Quelques choses que j'ai en tête pour l'avenir ...
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.