Table des matières
Calcul du classement FFT.
Le classement de tennis de la FFT se fait en tenant compte du /futur/ classement de vos adversaires. Par exemple, si vous battez un 15/3 qui monte 15/1, il comptera dans le calcul comme 15/1. Mais comment savoir qu'il va monter 15/1 ? En regardant son palmares. Et ainsi de suite.
Pour faire ce calcul, la FFT fait plusieurs passes (30 à 35 d'après ce que j'ai entendu). La première passe se fait avec les classements d'origine, la deuxième en prenant les classements calculés par la première passe, et ainsi de suite. Au bout d'un certain nombre de passes, les oscillations sont détectées et bloquées.
Cependant, de notre petit point de vue de licencié, comment calculer notre futur classement, étant donné que nous n'avons pas à notre disposition l'intégralité des rencontres jouées ? Il est possible de faire une /estimation/ de ce calcul comme suit :
- récupération du palmarès d'un joueur
- calcul du futur classement de ses adversaires ; pour ce faire, récupération de leurs palmarès
- et ainsi de suite, récursivement jusqu'à une profondeur donnée. Plus la récursion utilisée par le calcul est profonde, plus le résultat sera fiable.
Cependant, le nombre d'opérations de calcul et surtout de requêtes auprès du serveur augmente exponentiellement avec la profondeur. Par exemple, si on considère que tous les joueurs jouent 20 matches par an :
- profondeur 1 : on récupère 1 palmarès de 20 joueurs
- profondeur 2 : on racupère 1 palmarès de 20 joueurs puis 20 palmarès de 20 joueurs, soit 1 + 20x20 = 401 palmarès
- profondeur 3 : on racupère 1 palmarès de 20 joueurs puis 20 palmarès de 20 joueurs puis 20x20x20 palmarès de 20 joueurs, soit 1 + 20x20 + 20x20x20 = 8401 palmarès
- profondeur 4 : on racupère 1 palmarès de 20 joueurs puis 20 palmarès de 20 joueurs puis 20x20x20 palmarès de 20 joueurs puis 20x20x20x20 palmarès de 20 joueurs, soit 1 + 20x20 + 20x20x20 + 20x20x20x20 = 168401 palmarès à récupérer !
Cela implique par conséquent un grand nombre de requêtes HTTPS sur le serveur de la FFT. Chaque requête prenant du temps (dépendant de la charge du serveur et de votre connexion, mais généralement 1 à quelques secondes), le calcul global devient rapidement très long. En considérant l'exemple précédent, un temps de calcul local nul et des requêtes prenant chacune 1 seconde, on obtient environ 46h45 pour un calcul à profondeur 4 !
Mode d'emploi
C'est simple : lisez le fichier README fourni ;)
Plate-formes supportées
Le programme est écrit en Python, donc il est censé fonctionner sur toutes les plate-formes supportant Python 2.6 (environ).
Prérequis
Il suffit de disposer d'un interpréteur Python. Les bibliothèques utilisées sont incluses dans la distribution standard Python 2.6 ou fournies. On suppose ici que l'interpréteur est situé dans /usr/bin/python.
Les bibliothèques fournies avec ce logiciel sont :
- gaecookie, qui permet d'utiliser plusieurs cookies à la fois (plusieurs champs Set-cookie dans l'en-tête HTTP)
- keepalive : permet d'utiliser une connexion keep-alive avec la bibliothèques urllib, qui normalement ne le permet pas
J'ai apporté une légère modification à la bibliothèque keepalive : j'ai simplement supprimé les méthodes relatives à HTTPS afin de supprimer la dépendance vers la bibliothèque SSL.
Utilisation
Sous Unix (Mac OS, Lunix)
Dans un terminal, taper :
./palmares.py
Sous Windows
Python 2.6 peut être téléchargé ici : http://www.python.org/ftp/python/2.6/python-2.6.msi
- lancer l'invite de commandes
- remonter dans le dossier C: grâce à la ligne de commande cd ".."
- aller dans le dossier d'installation python, par exemple
cd "Python26"
si Python est installé dans C://Python26) - entrer la ligne de commande
python.exe palmares.py
(après avoir mis tous les fichiers .py dans ce même répertoire)
Autre façon de faire :
- faire un clic droit sur le fichier
palmares.py
- sélectionner "ouvrir avec"
- choisir le terminal dans le dossier applications/utilitaires
Exécution
L'outil demande de saisir ses identifiants sur l'espace du licencié, le numéro de licence du joueur concerné et la profondeur de la recherche. Le dernier classement calculé affiché correspnd au classement calculé pour le joueur demandé.
Il est nécessaire d'être connecté à Internet pendant toute l'opération.
Interface graphique
Exécuter le fichier interface.py. Remplir les champs demandés et cliquer sur le bouton. La sortie s'affichera dans la grosse boite blanche en-dessous.
Attention, l'interface est pleine de bugs.
Limitations
Il est pour le moment :
- seulement en version alpha
- verbeux et peu esthétique
TODO list:
- améliorer la GUI
- corriger les bugs de la GUI
- prise en compte des formats courts
Auteur
Logiciel développé par Camille Coti (@coti) et hébergé par GitHub.
Copyright
Classement est un programme informatique servant à estimer son futur classement de tennis d'après la FFT en estimant récursivement le futur classement de ses adversaires.
Ce logiciel est un logiciel Libre distribué sous deux licences, la licence CeCILL-C correspondant au droit européen, et la Licence Publique Générale Limitée GNU. Ce programme est libre, vous pouvez le redistribuer et/ou le modifier selon les termes de la licence CeCILL-C comme distribuée par le CEA, le CRNS et l'INRIA à l'URL suivante http://www.cecill.info ou de la Licence Publique Générale Limitée GNU publiée par la Free Software Foundation (version 2 ou bien toute autre version ultérieure choisie par vous).
Ce programme est distribué car potentiellement utile, mais SANS AUCUNE GARANTIE, ni explicite ni implicite, y compris les garanties de commercialisation ou d'adaptation dans un but spécifique. Reportez-vous à la Licence Publique Générale Limitée GNU ou à la licence CeCILL-C pour plus de détails.
Vous devez avoir reçu une copie de la Licence Publique Générale Limitée GNU et de la licence CeCILL-C en même temps que ce programme ; si ce n'est pas le cas, écrivez à la Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, États-Unis.
Si vous êtes en train de lire ceci, c'est que vous avez eu connaissance des licences CeCILL-C et LGPL et que vous en avez accepté les conditions.