Calcul de variation de Elo
3 participants
Page 1 sur 1
Calcul de variation de Elo
Calcul de Elo:
Pour ceux qui aiment faire clignoter leurs neurones, voici un problème que j'ai lors d'un calcul de variation de Elo. Je me base sur
En utilisant ma méthode de calcul, voici les résultats :
Comme on peut le voir, ça se joue à pas grand chose, sauf pour le dernier joueur. Si je considère que le joueur avait moins de 100 parties avant de commencer le tournoi, j'arrive à une variation de -4. Mais voilà, en reregardant le nombre de parties cumulées, il en avait 119 ! (pour rappel quand on a moins de 100 parties, on a un bonus de Elo). C'est déjà arrivé à qqn ?
Voici mon code en Python pour ceux que ça intéresse:
def compute_var(res,tr,opr):
if tr >= 2240 : k=16
if (tr >= 1920) and (tr < 2240): k=20
if (tr >= 1560) and (tr < 1920): k=24
if (tr >= 1280) and (tr < 1560): k=28
if (tr >= 1040) and (tr < 1280): k=32
if (tr >= 720) and (tr < 1040): k=36
if tr < 720: k=40
d1 = k * (res - 1.0/(1.0+10.0**((opr - tr)/400.0)))
d2 = k * (opr - tr)/160.0
if (res == 1) and (d2 > d1):
d=d2
else:
d=d1
return d
# La matrice de résultats de la grille
Mat_resul = [[1695,1759,1483,1263,1001,979],
['4+','3+','2-','1-','6+','5-'],
['2+','1-','6+','5+','4-','3-'],
['3+','5+','1-','6+','2-','4-'],
['5+','6+','4+','3-','1-','2-'],
['6+','4+','5+','2-','3-','1-']]
# la matrice de nombre de parties jouées par les joueurs au début du tournoi
Mat_nb_scr = [321,493,297,126,11,119]
# La matrice de variation de Elo, tour par tour
Mat_elo = [[1695,1759,1483,1263,1001,979], [0,0,0,0,0,0], [0,0,0,0,0,0], [0,0,0,0,0,0], [0,0,0,0,0,0], [0,0,0,0,0,0]]
for r in range(1,len(Mat_resul)):
for i in range(0,len(Mat_resul[0])):
tr = Mat_elo[r-1][i]
res = Mat_resul[r][i]
res = res[-1]
if res == '+': res = 1
if res == '-': res = 0
if res == '=': res = 0.5
opponent = Mat_resul[r][i]
opponent = int(opponent[:-1])
opr = Mat_elo[r-1][opponent-1]
if opr < 400:
opr = 400
if Mat_nb_scr[i]<100:
bonus = (1800.0-tr)/200.0
else:
bonus = 0
Mat_nb_scr[i] += 1 # mise à jour du nombre de parties
Mat_elo[r][i]=compute_var(res,tr,opr)+tr+bonus # Mise à jour de la case de résultats
Mat_elo.append([])
for i in range(0,len(Mat_elo[0])):
Mat_elo[-1].append(round(Mat_elo[-2][i])) # ajout de la valeur arrondie
Mat_elo.append([])
for i in range(0,len(Mat_elo[0])):
Mat_elo[-1].append(Mat_elo[-2][i]-Mat_elo[0][i]) # ajout de la variation de Elo
Pour ceux qui aiment faire clignoter leurs neurones, voici un problème que j'ai lors d'un calcul de variation de Elo. Je me base sur
One day Shogi tournament in Kiev 2016-01-31
http://www.shogi.net/fesa/index.php?mid=4&dateid=Spring+2016&tournamentid=One+day+Shogi+tournament+in+KievEn utilisant ma méthode de calcul, voici les résultats :
Elo init | R1 | R2 | R3 | R4 | R5 | Rounded | Elo +/- |
1695 | 1696.84294 | 1711.10302 | 1716.11277 | 1716.54594 | 1716.8413 | 1717 | 22 |
1759 | 1763.06932 | 1748.80925 | 1749.16239 | 1749.40822 | 1750.79198 | 1751 | -8 |
1483 | 1478.25246 | 1479.61756 | 1473.77284 | 1480.43864 | 1482.33671 | 1482 | -1 |
1263 | 1260.54274 | 1267.00599 | 1271.68302 | 1264.06497 | 1262.21995 | 1262 | -1 |
1001 | 1021.85674 | 1018.47631 | 1021.85422 | 1025.0952 | 1026.52934 | 1027 | 26 |
979 | 962.138259 | 960.383126 | 955.121461 | 954.752714 | 954.309675 | 954 | -25 |
Voici mon code en Python pour ceux que ça intéresse:
def compute_var(res,tr,opr):
if tr >= 2240 : k=16
if (tr >= 1920) and (tr < 2240): k=20
if (tr >= 1560) and (tr < 1920): k=24
if (tr >= 1280) and (tr < 1560): k=28
if (tr >= 1040) and (tr < 1280): k=32
if (tr >= 720) and (tr < 1040): k=36
if tr < 720: k=40
d1 = k * (res - 1.0/(1.0+10.0**((opr - tr)/400.0)))
d2 = k * (opr - tr)/160.0
if (res == 1) and (d2 > d1):
d=d2
else:
d=d1
return d
# La matrice de résultats de la grille
Mat_resul = [[1695,1759,1483,1263,1001,979],
['4+','3+','2-','1-','6+','5-'],
['2+','1-','6+','5+','4-','3-'],
['3+','5+','1-','6+','2-','4-'],
['5+','6+','4+','3-','1-','2-'],
['6+','4+','5+','2-','3-','1-']]
# la matrice de nombre de parties jouées par les joueurs au début du tournoi
Mat_nb_scr = [321,493,297,126,11,119]
# La matrice de variation de Elo, tour par tour
Mat_elo = [[1695,1759,1483,1263,1001,979], [0,0,0,0,0,0], [0,0,0,0,0,0], [0,0,0,0,0,0], [0,0,0,0,0,0], [0,0,0,0,0,0]]
for r in range(1,len(Mat_resul)):
for i in range(0,len(Mat_resul[0])):
tr = Mat_elo[r-1][i]
res = Mat_resul[r][i]
res = res[-1]
if res == '+': res = 1
if res == '-': res = 0
if res == '=': res = 0.5
opponent = Mat_resul[r][i]
opponent = int(opponent[:-1])
opr = Mat_elo[r-1][opponent-1]
if opr < 400:
opr = 400
if Mat_nb_scr[i]<100:
bonus = (1800.0-tr)/200.0
else:
bonus = 0
Mat_nb_scr[i] += 1 # mise à jour du nombre de parties
Mat_elo[r][i]=compute_var(res,tr,opr)+tr+bonus # Mise à jour de la case de résultats
Mat_elo.append([])
for i in range(0,len(Mat_elo[0])):
Mat_elo[-1].append(round(Mat_elo[-2][i])) # ajout de la valeur arrondie
Mat_elo.append([])
for i in range(0,len(Mat_elo[0])):
Mat_elo[-1].append(Mat_elo[-2][i]-Mat_elo[0][i]) # ajout de la variation de Elo
Lelorrain- Chariot Volant
- Nombre de messages : 571
Age : 40
Localisation : Besancon
Date d'inscription : 10/04/2010
Re: Calcul de variation de Elo
As-tu envisagé de poser la question à Carl Johan Nilsson, le resp ELO, et Andreas Neumaier, le webmaster de la FESA?
Comme je sais qu'ils sont en train de chercher une solution pour proposer une interface web au système de calcul ELO, j'imagine qu'ils se sont eux-aussi confrontés au code?
Comme je sais qu'ils sont en train de chercher une solution pour proposer une interface web au système de calcul ELO, j'imagine qu'ils se sont eux-aussi confrontés au code?
Re: Calcul de variation de Elo
Je veux bien discuter avec eux, mais il y a peut être des gens ici qui se sont déjà cassé les dents dessus. Sais tu si ils ont une place forum pour en parler?
Lelorrain- Chariot Volant
- Nombre de messages : 571
Age : 40
Localisation : Besancon
Date d'inscription : 10/04/2010
Re: Calcul de variation de Elo
Bonjour,
Pour le nombre de parties cumulées ouvrant droit à un bonus, sauf erreur de ma part :
- les parties des premiers tournois du joueur (jusqu'à ce qu'il dépasse 18 parties) sont prises en compte d'une manière complétement différente (calcul global du ELO en fonction des performances dans ces tournois, pas de calcul de variation ELO pour chaque partie)
- seules les parties suivantes bénéficient du bonus ELO jusqu'à hauteur des 100 premières parties
Ceci explique peut-être le phénomène que tu as rencontré dans ce cas particulier...
Pour le nombre de parties cumulées ouvrant droit à un bonus, sauf erreur de ma part :
- les parties des premiers tournois du joueur (jusqu'à ce qu'il dépasse 18 parties) sont prises en compte d'une manière complétement différente (calcul global du ELO en fonction des performances dans ces tournois, pas de calcul de variation ELO pour chaque partie)
- seules les parties suivantes bénéficient du bonus ELO jusqu'à hauteur des 100 premières parties
Ceci explique peut-être le phénomène que tu as rencontré dans ce cas particulier...
christophew- Général d'Or
- Nombre de messages : 376
Date d'inscription : 14/12/2006
Re: Calcul de variation de Elo
Avec la fermeture de 81 square universe, je pense qu'ils n'ont plus de plateforme de ce type à leur disposition.Lelorrain a écrit:Sais tu si ils ont une place forum pour en parler?
Mais j'ai leurs adresses mail. Je te les envoie en privé et tu vois ce que tu en fais.
Sujets similaires
» Calcul du elo
» Calcul du Elo
» Code de calcul Elo en Python
» bonification Wiel dans le calcul du Elo
» Comment faire un Calcul de Elo sans rien n'y connaitre
» Calcul du Elo
» Code de calcul Elo en Python
» bonification Wiel dans le calcul du Elo
» Comment faire un Calcul de Elo sans rien n'y connaitre
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
Mer 23 Oct 2024 - 10:53 par bakashogi
» 2024 10 19 : Du shôgi + et des jeux :)
Sam 19 Oct 2024 - 23:37 par Fritz Bobun
» [Défi] Images sur ShogiWars !
Mar 8 Oct 2024 - 12:13 par Fritz Bobun
» 2024 10 05 : une famille japonaise en visite et des jeux
Dim 6 Oct 2024 - 18:58 par Fritz Bobun
» 2024 10 06 : NISHIYAMA vs YAMAKAWA exam pro partie 2
Dim 6 Oct 2024 - 18:37 par Fritz Bobun
» 2024 09 28 : 2 lyonnais à Colmar
Sam 5 Oct 2024 - 12:23 par Fritz Bobun
» OZASEN 2024
Sam 5 Oct 2024 - 12:05 par Fritz Bobun
» 28è Colmar Shogi Open - 28 & 29 septembre 2024
Jeu 3 Oct 2024 - 17:29 par bakashogi
» 2024 09 15 : FUJII vs NISHIYAMA NHK Cup
Sam 21 Sep 2024 - 22:27 par Fritz Bobun