Calcul du Elo
5 participants
Page 1 sur 3
Page 1 sur 3 • 1, 2, 3
Calcul du Elo
Ou comment devenir dingo...
Pour répondre à une demande locale (ici à Besançon) nous aurions aimé calculer des Elo... Mais je dois avouer que j'ai beau reprendre les formules du PDF officiel, rien n'y fait, je n'arrive pas à retomber sur les résultats officiels. Je m'explique. Etape 1, j'identifie tous les paramètres de la formule :
le maximum de d et de d'. Si je prends l'exemple suivant : http://www.shogi.net/fesa/index.php?mid=4&dateid=Fall+2010&tournamentid=Colmar10 je suis le joueur 13.
Mon elo au début du tournoi est de 755, donc k=36.
res = 1 quand je gagne, 0 quand je perds.
tr=755
or = le elo de mon adversaire (j'ai pris le elo de l'adversaire au début du tournoi. Doije prendre le Elo recalculé à la ronde considérée suivant les résultats ?)
d=k x (res-1/(1+10^((or-tr)/400))
d’=k x (or – tr) / 160
Et là, je me suis amusé à faire un petit tableau excel pour calculer tout ça... Ca m'a permi de trouver quelques anomalies (sauf si je n'ai rien compris).
Max(d et d') d' d k res or tr
118,125 118,125 34,32832219 36 1 1280 755
-2,1952202997 0 -2,1952202997 36 0 1230 755
-1,7276050085 0 -1,7276050085 36 0 1274 755
11,6985527625 -28,575 11,6985527625 36 1 628 755
101,475 101,475 33,5021161507 36 1 1206 755
-3,2727272727 0 -3,2727272727 36 0 1155 755
-------------------------------------------------------------------------------
224,1030001816 191,025 72,3334385223 Somme
Première surprise, lorsque l'on gagne face à qqn de moins bien classé que sois, la formule d' est négative. Ce qui se traduit par j'ai gagné donc je perds du Elo. C'est, j'imagine, la raison de l'existence de la règle de prendre le max entre d et d'. Mais si je procède comme suit, et que je calcul la somme des Max (d & d') j'arrive à 224 au lieu de 198. Du coup, j'imagine que j'ai tord dans les "tr" et "or", il ne faut pas laisser le tr fixe mais le faire évoluer à chaque ligne, et concernant les or, j’imagine que cela correspond au elo de l'adversaire au moment de sa ronde. Par exemple, pour calculer le résultat lors de la troisième ronde, il faut prendre le or et tr évolués en fonction des résultats des deux premières rondes, c'est bien ça ?
Si quelqu'un pouvait me confirmer, ce serait top. Je continuerai de chercher ce soir.
Nb : un petit soft tout rapide pour calculer tout ça serait bienvenu je vais voir ce que je peux faire avec mes moyens
Pour répondre à une demande locale (ici à Besançon) nous aurions aimé calculer des Elo... Mais je dois avouer que j'ai beau reprendre les formules du PDF officiel, rien n'y fait, je n'arrive pas à retomber sur les résultats officiels. Je m'explique. Etape 1, j'identifie tous les paramètres de la formule :
le maximum de d et de d'. Si je prends l'exemple suivant : http://www.shogi.net/fesa/index.php?mid=4&dateid=Fall+2010&tournamentid=Colmar10 je suis le joueur 13.
Mon elo au début du tournoi est de 755, donc k=36.
res = 1 quand je gagne, 0 quand je perds.
tr=755
or = le elo de mon adversaire (j'ai pris le elo de l'adversaire au début du tournoi. Doije prendre le Elo recalculé à la ronde considérée suivant les résultats ?)
d=k x (res-1/(1+10^((or-tr)/400))
d’=k x (or – tr) / 160
Et là, je me suis amusé à faire un petit tableau excel pour calculer tout ça... Ca m'a permi de trouver quelques anomalies (sauf si je n'ai rien compris).
Max(d et d') d' d k res or tr
118,125 118,125 34,32832219 36 1 1280 755
-2,1952202997 0 -2,1952202997 36 0 1230 755
-1,7276050085 0 -1,7276050085 36 0 1274 755
11,6985527625 -28,575 11,6985527625 36 1 628 755
101,475 101,475 33,5021161507 36 1 1206 755
-3,2727272727 0 -3,2727272727 36 0 1155 755
-------------------------------------------------------------------------------
224,1030001816 191,025 72,3334385223 Somme
Première surprise, lorsque l'on gagne face à qqn de moins bien classé que sois, la formule d' est négative. Ce qui se traduit par j'ai gagné donc je perds du Elo. C'est, j'imagine, la raison de l'existence de la règle de prendre le max entre d et d'. Mais si je procède comme suit, et que je calcul la somme des Max (d & d') j'arrive à 224 au lieu de 198. Du coup, j'imagine que j'ai tord dans les "tr" et "or", il ne faut pas laisser le tr fixe mais le faire évoluer à chaque ligne, et concernant les or, j’imagine que cela correspond au elo de l'adversaire au moment de sa ronde. Par exemple, pour calculer le résultat lors de la troisième ronde, il faut prendre le or et tr évolués en fonction des résultats des deux premières rondes, c'est bien ça ?
Si quelqu'un pouvait me confirmer, ce serait top. Je continuerai de chercher ce soir.
Nb : un petit soft tout rapide pour calculer tout ça serait bienvenu je vais voir ce que je peux faire avec mes moyens
Lelorrain- Chariot Volant
- Nombre de messages : 571
Age : 40
Localisation : Besancon
Date d'inscription : 10/04/2010
Re: Calcul du Elo
En deux mots...
Laisse tomber.
Franchement c'est relou, le pdf est tellement mal expliqué qu'on a du demander à l'auteur des explications.
Pour le soft je travail dessu, donc quand il sera prêt je le communiquerais
Si tu veux pas perdre tes cheveux trop jeune laisse moi faire le boulot et épargne toi des heures de torture.
Laisse tomber.
Franchement c'est relou, le pdf est tellement mal expliqué qu'on a du demander à l'auteur des explications.
Pour le soft je travail dessu, donc quand il sera prêt je le communiquerais
Si tu veux pas perdre tes cheveux trop jeune laisse moi faire le boulot et épargne toi des heures de torture.
ezano- Général d'Or
- Nombre de messages : 242
Date d'inscription : 16/07/2008
Re: Calcul du Elo
ezano a écrit:Franchement c'est relou, le pdf est tellement mal expliqué qu'on a du demander à l'auteur des explications.
Pour le soft je travail dessu, donc quand il sera prêt je le communiquerais
Si tu veux pas perdre tes cheveux trop jeune laisse moi faire le boulot et épargne toi des heures de torture.
Ah, si tu as des explications meilleures que celles du PDF, je suis preneur ! Moi aussi j'avais commencé à programmer un 'tit truc, mais vu que j'ai rien capté à aux explications du PDF...
Kurogane- Général d'Or
- Nombre de messages : 119
Localisation : Caen, FR
Date d'inscription : 04/05/2011
Re: Calcul du Elo
Ah, c'est beau, les petits jeunes qui essayent de faire des trucs en croyant tout trouver sur internet .
Dites-vous que vous vous attaquez à un système monté par un norvégien, qui code en Lisp, il y a environ 15 ans, et qui a été validé par des personnes dont 4 joueurs français doivent connaître l'existence. Et bien sûr, aucune trace de tout ça.
Alors, les petits rigolos, si vous pensez pouvoir y arriver sans l'aide des semi-anciens qui connaissent les ficelles, vous vous fourrez le pion dans château jusqu'au général d'or !
Plus sérieusement, ça fait plaisir de voir autant de monde chercher, mais comme dit ezano, laissez lui le temps de peaufiner son code, et une fois qu'il aura fini et tout testé, il mettra ça sur shogi.fr. C'est un gars qui aime le libre, le ezano .
Dites-vous que vous vous attaquez à un système monté par un norvégien, qui code en Lisp, il y a environ 15 ans, et qui a été validé par des personnes dont 4 joueurs français doivent connaître l'existence. Et bien sûr, aucune trace de tout ça.
Alors, les petits rigolos, si vous pensez pouvoir y arriver sans l'aide des semi-anciens qui connaissent les ficelles, vous vous fourrez le pion dans château jusqu'au général d'or !
Plus sérieusement, ça fait plaisir de voir autant de monde chercher, mais comme dit ezano, laissez lui le temps de peaufiner son code, et une fois qu'il aura fini et tout testé, il mettra ça sur shogi.fr. C'est un gars qui aime le libre, le ezano .
nivlinch- Eisei forumeur
- Nombre de messages : 1737
Age : 37
Localisation : York, UK
Date d'inscription : 07/03/2007
Re: Calcul du Elo
Hug, me revoilà.
Bon j'ai testé différentes manières. La plus proche m'amène à 932 au lieu de 953, mais il y avait une partie à handicap qui est venue perturber un peu mes calculs, donc j'imagine que ça doit pas être trop loin.
En fait, je pense qu'il faut calculer le Elo de chacun après chaque ronde, et prendre ce dernier Elo pour calculer l'évolution au tour d'après. Je me suis amusé à programmer un petit soft pour calculer la variation de Elo match par match en fonction des règles établies dans le pdf (pour ceux que ça intéresse, je posterai mon code matlab dans le post d'après). Mais mon soft ne prends pas en considération les parties à handicap, ni les joueurs bye.
Du coup, Si on prends le joueur comme exemple :
Elo initial =755 -> 873 -> 869 -> 865 -> 872 -> 940 -> 932 le résultat officiel est 953.
Bon j'ai testé différentes manières. La plus proche m'amène à 932 au lieu de 953, mais il y avait une partie à handicap qui est venue perturber un peu mes calculs, donc j'imagine que ça doit pas être trop loin.
En fait, je pense qu'il faut calculer le Elo de chacun après chaque ronde, et prendre ce dernier Elo pour calculer l'évolution au tour d'après. Je me suis amusé à programmer un petit soft pour calculer la variation de Elo match par match en fonction des règles établies dans le pdf (pour ceux que ça intéresse, je posterai mon code matlab dans le post d'après). Mais mon soft ne prends pas en considération les parties à handicap, ni les joueurs bye.
Du coup, Si on prends le joueur comme exemple :
Elo initial =755 -> 873 -> 869 -> 865 -> 872 -> 940 -> 932 le résultat officiel est 953.
Lelorrain- Chariot Volant
- Nombre de messages : 571
Age : 40
Localisation : Besancon
Date d'inscription : 10/04/2010
Re: Calcul du Elo
Code Matlab pour calcul de Elo Il n'y a qu'à copier coller dans un fichier M et l’exécuter.
%----------------------------------
% Calculateur de Elo de Shogi
% Par lelorrain
% Le 17/01/2012
%----------------------------------
clear all
close all
clc
% ----------------Fenêtre d'interface pour rentrer les données
prompt1 = {'Elo du joueur 1 :','Elo du joueur 2 :','Qui a gagné le match ? (1 ou 2) :'};
title_window1 = 'Données Joueurs';
lines = 1;
def1 = {'','',''};
answer1 = inputdlg(prompt1,title_window1,lines,def1);
assignin('base','ELO01',answer1{1});
assignin('base','ELO02',answer1{2});
assignin('base','RES',answer1{3});
Elo01=str2num(ELO01);
Elo02=str2num(ELO02);
res=str2num(RES);
if res==1
res1=1;
else
res1=0;
end
% -------------------Joueur 1
if Elo01 < 720
k1=40;
elseif 720 <= Elo01 && Elo01 < 1040
k1=36;
elseif 1040 <= Elo01 && Elo01 < 1280
k1=32;
elseif 1280 <= Elo01 && Elo01 < 1560
k1=28;
elseif 1560 <= Elo01 && Elo01 < 1920
k1=24;
elseif 1920 <= Elo01 && Elo01 < 2240
k1=20;
elseif Elo01 >= 2240
k1=16;
end
%------------- Joueur 2
if res1==1
res2=0;
elseif res1==0
res2=1;
end
if Elo02 < 720
k2=40;
elseif 720 <= Elo02 && Elo02 < 1040
k2=36;
elseif 1040 <= Elo02 && Elo02 < 1280
k2=32;
elseif 1280 <= Elo02 && Elo02 < 1560
k2=28;
elseif 1560 <= Elo02 && Elo02 < 1920
k2=24;
elseif 1920 <= Elo02 && Elo02 < 2240
k2=20;
elseif Elo02 >= 2240
k2=16;
end
% calcul du Elo du joueur 1
d1=k1*(res1-1/(1+10^((Elo02-Elo01)/400)));
d11=k1*(Elo02-Elo01)/160;
if res1==1
d111=max(d1,d11);
else
d111=d1;
end
d1111=roundn(d111,0);
Elo11=Elo01+d1111;
% calcul du Elo du joueur 2
d2=k2*(res2-1/(1+10^((Elo01-Elo02)/400)));
d12=k2*(Elo01-Elo02)/160;
if res2==1
d112=max(d2,d12);
else
d112=d2;
end
d1112=roundn(d112,0);
Elo12=Elo02+d1112;
% Affichage des Résultats
P1=[Elo01 Elo11];
P2=[Elo02 Elo12];
disp ( ' Ancien Nouveau')
disp (['Nouveau Elo du joueur 1 ', num2str(P1)])
disp (['Nouveau Elo du joueur 2 ', num2str(P2)])
%----------------------------------
% Calculateur de Elo de Shogi
% Par lelorrain
% Le 17/01/2012
%----------------------------------
clear all
close all
clc
% ----------------Fenêtre d'interface pour rentrer les données
prompt1 = {'Elo du joueur 1 :','Elo du joueur 2 :','Qui a gagné le match ? (1 ou 2) :'};
title_window1 = 'Données Joueurs';
lines = 1;
def1 = {'','',''};
answer1 = inputdlg(prompt1,title_window1,lines,def1);
assignin('base','ELO01',answer1{1});
assignin('base','ELO02',answer1{2});
assignin('base','RES',answer1{3});
Elo01=str2num(ELO01);
Elo02=str2num(ELO02);
res=str2num(RES);
if res==1
res1=1;
else
res1=0;
end
% -------------------Joueur 1
if Elo01 < 720
k1=40;
elseif 720 <= Elo01 && Elo01 < 1040
k1=36;
elseif 1040 <= Elo01 && Elo01 < 1280
k1=32;
elseif 1280 <= Elo01 && Elo01 < 1560
k1=28;
elseif 1560 <= Elo01 && Elo01 < 1920
k1=24;
elseif 1920 <= Elo01 && Elo01 < 2240
k1=20;
elseif Elo01 >= 2240
k1=16;
end
%------------- Joueur 2
if res1==1
res2=0;
elseif res1==0
res2=1;
end
if Elo02 < 720
k2=40;
elseif 720 <= Elo02 && Elo02 < 1040
k2=36;
elseif 1040 <= Elo02 && Elo02 < 1280
k2=32;
elseif 1280 <= Elo02 && Elo02 < 1560
k2=28;
elseif 1560 <= Elo02 && Elo02 < 1920
k2=24;
elseif 1920 <= Elo02 && Elo02 < 2240
k2=20;
elseif Elo02 >= 2240
k2=16;
end
% calcul du Elo du joueur 1
d1=k1*(res1-1/(1+10^((Elo02-Elo01)/400)));
d11=k1*(Elo02-Elo01)/160;
if res1==1
d111=max(d1,d11);
else
d111=d1;
end
d1111=roundn(d111,0);
Elo11=Elo01+d1111;
% calcul du Elo du joueur 2
d2=k2*(res2-1/(1+10^((Elo01-Elo02)/400)));
d12=k2*(Elo01-Elo02)/160;
if res2==1
d112=max(d2,d12);
else
d112=d2;
end
d1112=roundn(d112,0);
Elo12=Elo02+d1112;
% Affichage des Résultats
P1=[Elo01 Elo11];
P2=[Elo02 Elo12];
disp ( ' Ancien Nouveau')
disp (['Nouveau Elo du joueur 1 ', num2str(P1)])
disp (['Nouveau Elo du joueur 2 ', num2str(P2)])
Lelorrain- Chariot Volant
- Nombre de messages : 571
Age : 40
Localisation : Besancon
Date d'inscription : 10/04/2010
Re: Calcul du Elo
Ton code ne prend pas en compte le bonus de participation, non décrit dans le pdf, car le pdf est vieux, et la réforme est appliquée depuis le 01.07.2010.
Il s'agit pour les 100 premières parties, depuis cette date là, d'additionner à chaque partie un certain nombre de point (1800-ELO)/200 au joueur. Si tu veux plus de détails, je te conseille le site de la FESA, qui a la source de ce calcul en anglais.
Il s'agit pour les 100 premières parties, depuis cette date là, d'additionner à chaque partie un certain nombre de point (1800-ELO)/200 au joueur. Si tu veux plus de détails, je te conseille le site de la FESA, qui a la source de ce calcul en anglais.
nivlinch- Eisei forumeur
- Nombre de messages : 1737
Age : 37
Localisation : York, UK
Date d'inscription : 07/03/2007
Re: Calcul du Elo
ha haaaa,
Bon, il faut que je reprenne tous mes calculs, mais dans ce cas, on s'en rapproche fortement en effet !!
Merci pour les tuyaux !!
Bon, il faut que je reprenne tous mes calculs, mais dans ce cas, on s'en rapproche fortement en effet !!
Merci pour les tuyaux !!
Lelorrain- Chariot Volant
- Nombre de messages : 571
Age : 40
Localisation : Besancon
Date d'inscription : 10/04/2010
Re: Calcul du Elo
Je pense que tu parles des joueurs non-classés et ceux ayant un ELO provisoire.Lelorrain a écrit:Mais mon soft ne prends pas en considération les parties à handicap, ni les joueurs bye.
Pour le calcul, tu fais exactement comme tu as du : du ronde par ronde, en prenant lors du premier loop le ELO initial de l'adversaire en «tr» et le ELO initial du joueur en «or». Une fois le loop fini, tu recommences avec le ELO final des adversaires en «tr» et le ELO initial du joueur en «or». Et tu ne t'arrêtes que lorsque les ELO finals correspondent entre le loop n et le loop n+1.
Quel français finira le premier un code open source permettant de calculer les évolutions ELO ? Première étape : un calcul sans nouveau, sans handicap et sans bye !
nivlinch- Eisei forumeur
- Nombre de messages : 1737
Age : 37
Localisation : York, UK
Date d'inscription : 07/03/2007
Re: Calcul du Elo
les ELO finals
ezano- Général d'Or
- Nombre de messages : 242
Date d'inscription : 16/07/2008
Re: Calcul du Elo
C'est pas toi qui était censé faire ce petit soft de rien du tout que même un mec qui fait une thèse en mécanique a réussi à finir avant toi ?ezano a écrit:les ELO finals
nivlinch- Eisei forumeur
- Nombre de messages : 1737
Age : 37
Localisation : York, UK
Date d'inscription : 07/03/2007
Re: Calcul du Elo
Pas de ma faute si c'est mal expliqué
Bref je viens de m'y remettre, je reprend tout depuis le début.
Bref je viens de m'y remettre, je reprend tout depuis le début.
ezano- Général d'Or
- Nombre de messages : 242
Date d'inscription : 16/07/2008
Re: Calcul du Elo
Bon, j'y suis presque. Il me reste une ou deux question auxquelles je n'ai pas forcément su répondre (nb Shogiban m'a envoyé des docs qu'il possédait sur le sujet, mais je n'ai pas encore eu le temps de les ouvrir. Si qqn les souhaite, qu'il me fasse suivre son mail en MP, je lui ferai suivre) :
- les points de bonifications, s'ajoutent-ils même si l'on perd le match ?
- pour calculer les points de bonifications avec la formule : bonus = (1800 - tr)/200, tr est bien le Elo d'avant Match ?
- si un joueur très bien classé gagen contre qqn qui a un élo trèèèès inférieur au sien, est-ce qu'il peut ne pas gagner de Elo ? Ou est-ce qu'il gagne au minimum un point ?
Pour un cas test, je vous recommande le lien suivant (pas de handicap, tous les elo son définitifs) :
http://www.shogi.net/fesa/index.php?mid=4&dateid=Spring+2011&tournamentid=Minsk+shogi+club%27s+tournament
- les points de bonifications, s'ajoutent-ils même si l'on perd le match ?
- pour calculer les points de bonifications avec la formule : bonus = (1800 - tr)/200, tr est bien le Elo d'avant Match ?
- si un joueur très bien classé gagen contre qqn qui a un élo trèèèès inférieur au sien, est-ce qu'il peut ne pas gagner de Elo ? Ou est-ce qu'il gagne au minimum un point ?
Pour un cas test, je vous recommande le lien suivant (pas de handicap, tous les elo son définitifs) :
http://www.shogi.net/fesa/index.php?mid=4&dateid=Spring+2011&tournamentid=Minsk+shogi+club%27s+tournament
Lelorrain- Chariot Volant
- Nombre de messages : 571
Age : 40
Localisation : Besancon
Date d'inscription : 10/04/2010
Re: Calcul du Elo
Oui / Oui / Oui.Lelorrain a écrit:- les points de bonifications, s'ajoutent-ils même si l'on perd le match ?
- pour calculer les points de bonifications avec la formule : bonus = (1800 - tr)/200, tr est bien le Elo d'avant Match ?
- si un joueur très bien classé gagen contre qqn qui a un élo trèèèès inférieur au sien, est-ce qu'il peut ne pas gagner de Elo ? Ou est-ce qu'il gagne au minimum un point ?
Si tu as d'autres questions, n'hésites pas. J'ai compris le système avec le handicap, et peux t'envoyer ça par mail .
nivlinch- Eisei forumeur
- Nombre de messages : 1737
Age : 37
Localisation : York, UK
Date d'inscription : 07/03/2007
Re: Calcul du Elo
Juste pour le 3eme point, c'est : ne gagne pas de Point ou gagne quand même un point ?
je valide et te redis pour la suite
je valide et te redis pour la suite
Lelorrain- Chariot Volant
- Nombre de messages : 571
Age : 40
Localisation : Besancon
Date d'inscription : 10/04/2010
Re: Calcul du Elo
Ne gagne pas de point.Lelorrain a écrit:Juste pour le 3eme point, c'est : ne gagne pas de Point ou gagne quand même un point ?
je valide et te redis pour la suite
nivlinch- Eisei forumeur
- Nombre de messages : 1737
Age : 37
Localisation : York, UK
Date d'inscription : 07/03/2007
Re: Calcul du Elo
D'après le point 8 de la page de la fesa sur le calcul du Elo :
Il me semble comprendre que le tr évolue après match joués, mais que le or reste le Elo d'avant tournoi de l'adversaire. Quelqu'un peut-il me confirmer la chose ? Parce qu'en essayant les deux méthodes, je n'arrive quand même pas au résultat exacte... cf ci après :
Cas 1: je fais évoluer tr et or après chaque match
Cas 2: je ne fais pas évoluer or
Cas 3: le résultat référence
des suggestions ?
When rating an established player the formula in (1) is used where tr is the players rating updated with the results so far in the tournament and or is the opponents post-event rating.
Il me semble comprendre que le tr évolue après match joués, mais que le or reste le Elo d'avant tournoi de l'adversaire. Quelqu'un peut-il me confirmer la chose ? Parce qu'en essayant les deux méthodes, je n'arrive quand même pas au résultat exacte... cf ci après :
Cas 1: je fais évoluer tr et or après chaque match
Cas 2: je ne fais pas évoluer or
Cas 3: le résultat référence
Cas 1 | Cas 2 | Résultat officiel |
3 | 3 | 6 | 53 | 51 | 49 | [/tr]
25 | 24 | 25 |
29 | 29 | 30 |
74 | 70 | 69 |
-18 | -19 | -12 |
-5 | -5 | -3 |
77 | 82 | 74 |
22 | 20 | 26 |
-43 | -42 | -43 |
des suggestions ?
Lelorrain- Chariot Volant
- Nombre de messages : 571
Age : 40
Localisation : Besancon
Date d'inscription : 10/04/2010
Re: Calcul du Elo
Rah, le serpent qui se mord la queue…
Pour faire simple (c'est impossible), or n'évolue pas à l'intérieur d'un même loop, mais tr évolue après chaque match à l'intérieur d'un même loop.
Exemple concret : A B C D joue ensemble deux rondes (AB puis AC). Tu calcules le tr de A avec les or de B, C et D (leur ELO de base), le tr de B avec les or de A, C et D, idem pour C et D.
Tu recalcules le tr de A, mais cette fois ci, avec les nouveaux or de B, C et D (les tr que tu viens de calculer avant). Idem pour B, C et D.
Et tu n'arrêtes le calcul que lorsque que le tr calculé de A au sein d'un loop correspond au or de A que tu as utilisé pour calculer le tr de B, C et D.
Est-ce plus clair ? C'est du calcul itératif, et à force de l'expliquer, j'ai l'impression que moi aussi, je pourrais m'amuser à calculer tout ça…
Pour faire simple (c'est impossible), or n'évolue pas à l'intérieur d'un même loop, mais tr évolue après chaque match à l'intérieur d'un même loop.
Exemple concret : A B C D joue ensemble deux rondes (AB puis AC). Tu calcules le tr de A avec les or de B, C et D (leur ELO de base), le tr de B avec les or de A, C et D, idem pour C et D.
Tu recalcules le tr de A, mais cette fois ci, avec les nouveaux or de B, C et D (les tr que tu viens de calculer avant). Idem pour B, C et D.
Et tu n'arrêtes le calcul que lorsque que le tr calculé de A au sein d'un loop correspond au or de A que tu as utilisé pour calculer le tr de B, C et D.
Est-ce plus clair ? C'est du calcul itératif, et à force de l'expliquer, j'ai l'impression que moi aussi, je pourrais m'amuser à calculer tout ça…
nivlinch- Eisei forumeur
- Nombre de messages : 1737
Age : 37
Localisation : York, UK
Date d'inscription : 07/03/2007
Re: Calcul du Elo
@Lelorrain
Je t'avais prévenu
Je t'avais prévenu
ezano- Général d'Or
- Nombre de messages : 242
Date d'inscription : 16/07/2008
Re: Calcul du Elo
haaaaa alors effectivement, il manque qqch sur le site pour exprimer la valeur de or !!
Parce que si on s'en tiens à ce qui est écrit :
...
Donc, moi pas comprendre... qqn peut-il me faire un schéma ? ben voui, je suis visuel moi... Si j'essaye de reprendre l'exemple ABCD :
ronde 1 : A vs B et C vs D
ronde 2 : A vs C et B vs D
d = k * (res - 1/(1+10^((or - tr)/400))) (on laisse d' de côté pour le moment) donc dA=k*(res-1/(1+10^((EloInitB-EloInitA)/400))) Je ne vois pas pourquoi refaire ce calcul avec le EloInit de C et D alors que A ne les rencontre pas...
Parce que si on s'en tiens à ce qui est écrit :
The basic formula when updating the rating values for a person is:
d = k * (res - 1/(1+10^((or - tr)/400))) where
d is the change (rounded to the nearest integer)
k is a coefficient
res is the result (1 for victory, 0 for defeat, ½ for draw)
or is the rating for the opponent, except that if it is less than 400 then 400 is used instead
tr is the target rating (the rating for the player that is updated)
...
Donc, moi pas comprendre... qqn peut-il me faire un schéma ? ben voui, je suis visuel moi... Si j'essaye de reprendre l'exemple ABCD :
ronde 1 : A vs B et C vs D
ronde 2 : A vs C et B vs D
d = k * (res - 1/(1+10^((or - tr)/400))) (on laisse d' de côté pour le moment) donc dA=k*(res-1/(1+10^((EloInitB-EloInitA)/400))) Je ne vois pas pourquoi refaire ce calcul avec le EloInit de C et D alors que A ne les rencontre pas...
Lelorrain- Chariot Volant
- Nombre de messages : 571
Age : 40
Localisation : Besancon
Date d'inscription : 10/04/2010
Re: Calcul du Elo
par ezano le Mer 18 Jan 2012 - 16:00
@Lelorrain
Je t'avais prévenu Rolling Eyes
Bah, il ne reste pas grand chose à effectuer Ca donne un bon indicateur, mais je préférerai avoir le résultat juste j'ai une erreur comprise entre 0 et 5 pts Elo dans mes derniers calculs... Tu arrives à une erreur de combien toi ?
Lelorrain- Chariot Volant
- Nombre de messages : 571
Age : 40
Localisation : Besancon
Date d'inscription : 10/04/2010
Re: Calcul du Elo
Pour info, certaines erreurs ont pu être minimisées en ne réalisant l'arrondi que sur la valeur finale du Elo obtenue, et non en réalisant l'arrondi à chaque itération.
Lelorrain- Chariot Volant
- Nombre de messages : 571
Age : 40
Localisation : Besancon
Date d'inscription : 10/04/2010
Re: Calcul du Elo
Je travaille sur la prise en charge des grilles américaines dans mon programmes avant d’entamer la partie calcul.
En gros l'idée c'est d'avoir un truc équivalent au programme d'Oluf que la fédé fr pourra utiliser et ainsi se démarquer.
En gros la on est dépendant d'une seule et unique personne pour calculer les résultats de tournoi. Mon but est de changer ça tout en respectant les normes qui était en vigueurs avec l'ancien programme pour pas chambouler les vieux gouroux.
Edit:
Donc premier étapes: Faire un programme qui fonctionne en prenant en compte tout les cas possibles, handicape etc
Deuxième étapes: Si ça fonctionne bien et que c'est approuvé, pourquoi pas rajouter un module de mise à jour automatique des elo en bdd etc on peut imaginer plein de choses pour faire évoluer la fédé.
En gros l'idée c'est d'avoir un truc équivalent au programme d'Oluf que la fédé fr pourra utiliser et ainsi se démarquer.
En gros la on est dépendant d'une seule et unique personne pour calculer les résultats de tournoi. Mon but est de changer ça tout en respectant les normes qui était en vigueurs avec l'ancien programme pour pas chambouler les vieux gouroux.
Edit:
Donc premier étapes: Faire un programme qui fonctionne en prenant en compte tout les cas possibles, handicape etc
Deuxième étapes: Si ça fonctionne bien et que c'est approuvé, pourquoi pas rajouter un module de mise à jour automatique des elo en bdd etc on peut imaginer plein de choses pour faire évoluer la fédé.
ezano- Général d'Or
- Nombre de messages : 242
Date d'inscription : 16/07/2008
Re: Calcul du Elo
Pas le temps, mais globalement, le tr de A, c'est le or de A pour ses adversaires (B et C, ici).Lelorrain a écrit:haaaaa alors effectivement, il manque qqch sur le site pour exprimer la valeur de or !!
Donc, moi pas comprendre... qqn peut-il me faire un schéma ? ben voui, je suis visuel moi...
Oui, mais le ELO initiB est remplacé par trB de la première loop qui devient orB lors de la deuxième loop. Et ça, pour tout le monde à la fois.Lelorrain a écrit:Si j'essaye de reprendre l'exemple ABCD :
ronde 1 : A vs B et C vs D
ronde 2 : A vs C et B vs D
d = k * (res - 1/(1+10^((or - tr)/400))) (on laisse d' de côté pour le moment) donc dA=k*(res-1/(1+10^((EloInitB-EloInitA)/400))) Je ne vois pas pourquoi refaire ce calcul avec le EloInit de C et D alors que A ne les rencontre pas...
Promis, ce soir, je te fais un exemple avec un schéma…
nivlinch- Eisei forumeur
- Nombre de messages : 1737
Age : 37
Localisation : York, UK
Date d'inscription : 07/03/2007
Re: Calcul du Elo
Ok donc en fait, tu n'es pas encore vraiment rentré dans le code. A ta place, avant de rentrer dans le code de calcul (la lecture de grille est assez facile en matlab, alors ça n'a pas prit longtemps), je demanderai des cas test.
Personnellement, j'ai organisé mon algorithme de la manière suivante :
1) Définition de la rencontre (nombre de participants, nombre de rondes => création d'une matrice de résultats vite prête à recevoir des données)
2) Entrée des données joueurs participants à l’événement ('Nom :','Prénom :','Pays :','Club :','Rang :','Elo :','Nb partie officiellement jouées :')
3) Résultats des rencontres pour chaque table
Données collectées dans la matrice (Elo des joueurs, nb de parties jouées) -> envoi vers une fonction Calcul de Elo -> Calcul -> stockage des données dans la matrice
on itère pour chaque chaque joueurs, ronde par ronde et hop, c'est joué...
Je mes plus en détail ma fonction "calcul de Elo" :
Personnellement, j'ai organisé mon algorithme de la manière suivante :
1) Définition de la rencontre (nombre de participants, nombre de rondes => création d'une matrice de résultats vite prête à recevoir des données)
2) Entrée des données joueurs participants à l’événement ('Nom :','Prénom :','Pays :','Club :','Rang :','Elo :','Nb partie officiellement jouées :')
3) Résultats des rencontres pour chaque table
Données collectées dans la matrice (Elo des joueurs, nb de parties jouées) -> envoi vers une fonction Calcul de Elo -> Calcul -> stockage des données dans la matrice
on itère pour chaque chaque joueurs, ronde par ronde et hop, c'est joué...
Je mes plus en détail ma fonction "calcul de Elo" :
% Function Elo FElo
function [Elo111]=FElo(ELO01,NBG1,ELO02,NBG2,RES)
Elo01=(ELO01); % équivalent tr dans la formule
Elo02=(ELO02); % équivalent or dans la formule
res1=(RES); % résultat du match : 1 si victoire, 0 si défaite, 0.5 pour un draw
nbg1=NBG1; % Number of Game, soit le nombre de parties jouée pour déterminer si il y a besoin d'un bonus ou pas
nbg2=NBG2;
%-------- détermination du k
if Elo01 < 720
k1=40;
elseif 720 <= Elo01 && Elo01 < 1040
k1=36;
elseif 1040 <= Elo01 && Elo01 < 1280
k1=32;
elseif 1280 <= Elo01 && Elo01 < 1560
k1=28;
elseif 1560 <= Elo01 && Elo01 < 1920
k1=24;
elseif 1920 <= Elo01 && Elo01 < 2240
k1=20;
elseif Elo01 >= 2240
k1=16;
end
%---------- calcul du nouveau Elo du joueur 1
if Elo02 < 400
Elo02=400;
end
d1=k1*(res1-1/(1+10^((Elo02-Elo01)/400)));
d11=k1*(Elo02-Elo01)/160;
if res1==1
d111=max(d1,d11);
else
d111=d1;
end
%d1111=roundn(d111,0); %valeur arrondie
d1111=d111; %Valeur non arrondie
Elo11=Elo01+d1111;
if nbg1 <= 100 && Elo01 <= 1800
bonus1=(1800-Elo01)/200;
% bonus1=roundn(bonus1,0);
else
bonus1=0;
end
Elo111=Elo11+bonus1;
Lelorrain- Chariot Volant
- Nombre de messages : 571
Age : 40
Localisation : Besancon
Date d'inscription : 10/04/2010
Page 1 sur 3 • 1, 2, 3
Page 1 sur 3
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