Voici enfin venu le jour tant attendu des résultats de la première phase de notre concours d'intelligence artificielle Python 1000 Bornes, c'est-à-dire le classement individuel.
Avant toute chose, nous tenons à remercier tous ceux qui ont rendu possible cet événement qui nous tenait à cœur :
Sommaire :
42 participants et participantes ont été au rendez-vous cette année, ayant fourni plus de 200 IA différentes à notre interface de duel en ligne.
J'inclus également ma propre IA, juste pour référence, et ne prendrai bien évidemment pas de lot. Cela fera donc 43 participations classées.
Plusieurs participant(e)s ont fait le choix de participer en équipe. Nous comptons donc cette année 2 équipes :
Rappelons que la redistribution des divers éléments du lot entre les différents membres de l'équipe est de la responsabilité du chef d'équipe.
Les chefs d'équipe doivent donc s'organiser avec leurs membres pour nous fournir d'ici le dimanche 19 mai 2024 23h59 GMT+2 1 ou 2 IAs compatibles avec le format quadruel de la finale (combat à 2 contre 2). Il est possible aussi bien de fournir 2 IAs si par exemple elles sont censées adopter des comportements complémentaires très différents, que de fournir 1 seule IA qui sera alors instancié 2 fois.
Histoire que chaque IA puisse savoir si une autre IA est une alliée ou une ennemie, précisons que l'ordre des IAs sera toujours alterné entre les 2 équipes lors des tests d'évaluations :
Les IA alliées auront donc la même parité de numéro de joueur, et les IA ennemies des parités différentes.
Nous avons fait s'affronter les IA des différents participants dans le cadre de tournois.
En quoi consiste un tournoi ? Pour chacune des 43 IA, on lui fait affronter chacune des 42 autres IA. Chaque paire d'IA a ainsi droit à 2 duels, l'ordre des joueurs étant inversé entre les deux. Ceci nous donne donc 43×42=1806 duels par tournoi.
Pas moins de 888 tournois ont été organisés, pour un total donc de 888×1806=1'603'728 duels.
Les résultats des duels peuvent être téléchargés et sont accompagné du script de classement.
Le cas des équipes étant traité et l'évaluation étant présentée, passons maintenant enfin au classement individuel.
Attention, le concours étant toujours en cours, avec certains participants ou équipes concernés par les finales d'ici quelques semaines, nous faisons le choix de ne publier pour le moment qu'une partie des IA, afin de ne pas révéler d'informations de stratégie qui pourraient être utilisées contre eux en finale. Si toutefois les personnes concernées estiment qu'il n'y a aucun problème, il leur suffit de nous l'indiquer et nous rajouterons.
29 lots sont disponibles pour le classement individuel, et comme je ne prends pas de lot il pourra donc y avoir une récompense jusqu'au rang 30 inclus.
Dans le cadre de cette annonce, un remerciement tout particulier à Sébastien Michelland alias Lephe qui a codé les fonctions Elo utilisées.
Voici la sortie du script d'évaluation :
Et un énorme merci à tous ceux et celles qui ont été au rendez-vous pour participer cette année.
Rendez-vous maintenant pour la finale individuelle après le dimanche 11 mars 2024 ainsi que pour la finale en équipe après le dimanche 19 mai 2024. Nous attendons du grand spectacle, ne nous décevez pas !
Avant toute chose, nous tenons à remercier tous ceux qui ont rendu possible cet événement qui nous tenait à cœur :
- principe du jeu : Edmond Dujardin
- graphismes du jeu : Jean-Yves Boucrot
- codage du jeu : Xavier Andréani alias critor
- test du jeu : Xavier Andréani alias critor + Adrien Bertrand alias Adriweb + RapidZapper
- plateforme en ligne de participation et duels entre IAs : Adrien Bertrand alias Adriweb + RapidZapper
- mises à jour spécifiques pour corriger des bugs ou contourner des problèmes de compatibilité apparaissant avec le jeu : Bernard Parisse alias parisse + Yaya.Cout + VittaScience
- firmware dédié à la compatibilité avec les NumWorks N0110 verrouillées et N0115/N0120 : RapidZapper
- principe de l'évaluation : noelnadal + Sébastien Michelland alias Lephe + Xavier Andréani alias critor
- bannières : Xavier Andréani alias critor + Sébastien Michelland alias Lephe
- dotation en lots : Texas Instruments + Casio + R. Jarrety S.A.S. + Calcuso + Université Grenoble Alpes + Vincent Robert alias cent20 + NumWorks + HP
Sommaire :
1) Les participant(e)s
Go to top42 participants et participantes ont été au rendez-vous cette année, ayant fourni plus de 200 IA différentes à notre interface de duel en ligne.
J'inclus également ma propre IA, juste pour référence, et ne prendrai bien évidemment pas de lot. Cela fera donc 43 participations classées.
2) Les équipes
Go to topPlusieurs participant(e)s ont fait le choix de participer en équipe. Nous comptons donc cette année 2 équipes :
- nsi42 avec 14 membres : c'est l'équipe de Vincent Robert alias cent20 chez nous, enseignant en Mathématiques et NSI au Lycée Louis Pasteur à Avignon, et de ses disciples
Le cri de victoire de l'équipe : "Choisir la spé NSI, réussir sa vie" - br.AI.n all.IA.ge avec 6 membres, regroupant notamment SlyVTT, TIny_Hacker, Afyu ainsi que plusieurs élèves de ce dernier
Rappelons que la redistribution des divers éléments du lot entre les différents membres de l'équipe est de la responsabilité du chef d'équipe.
Les chefs d'équipe doivent donc s'organiser avec leurs membres pour nous fournir d'ici le dimanche 19 mai 2024 23h59 GMT+2 1 ou 2 IAs compatibles avec le format quadruel de la finale (combat à 2 contre 2). Il est possible aussi bien de fournir 2 IAs si par exemple elles sont censées adopter des comportements complémentaires très différents, que de fournir 1 seule IA qui sera alors instancié 2 fois.
Histoire que chaque IA puisse savoir si une autre IA est une alliée ou une ennemie, précisons que l'ordre des IAs sera toujours alterné entre les 2 équipes lors des tests d'évaluations :
python kb.py <IA1_equipeA> <IA1_equipeB> <IA2_equipeA> <IA2_equipeB>
Les IA alliées auront donc la même parité de numéro de joueur, et les IA ennemies des parités différentes.
3) Modalités d'évaluation
Go to topNous avons fait s'affronter les IA des différents participants dans le cadre de tournois.
En quoi consiste un tournoi ? Pour chacune des 43 IA, on lui fait affronter chacune des 42 autres IA. Chaque paire d'IA a ainsi droit à 2 duels, l'ordre des joueurs étant inversé entre les deux. Ceci nous donne donc 43×42=1806 duels par tournoi.
Pas moins de 888 tournois ont été organisés, pour un total donc de 888×1806=1'603'728 duels.
Les résultats des duels peuvent être téléchargés et sont accompagné du script de classement.
4) Classement individuel
Go to topLe cas des équipes étant traité et l'évaluation étant présentée, passons maintenant enfin au classement individuel.
En dernier, nous avons les participants et participantes qui ont tenté de modifier l'IA fournie par défaut avec les scripts de participation (ia_random) mais ont commis des erreurs, produisant une IA se comportant moins bien, soit parce que prenant de mauvaises décisions de façon plus fréquente qu'avec l'aléatoire, soit parce que jouant des coups invalides ce qui revient à défausser la carte qui n'aurait pas dû être jouée.
Voici donc le classement déterminé selon la méthode Elo :
Voici donc le classement déterminé selon la méthode Elo :
- 43e avec 06,633 points : Liquefy2951 a opté pour iabete après 7 autres tentatives d'IA
- 42e avec 16,258 points : fklv, à préciser ici que sa dernière IA soumise Remplaceur_artificiel comportait plusieurs erreurs, les plus évidentes (simples erreurs d'écriture ne nécessitant aucun codage de notre part) ont certes été corrigées, mais l'IA une fois fonctionnelle déclenchait de façon systématique des erreurs de manipulation de listes qui ont empêché son utilisation - et a donc été remplacée par son IA précédente ia_fcalva_0_1 qui pour sa part a marché après correction d'une petite erreur d'écriture d'une boucle pour
En cas de victoire, l'IA s'écrit "Big brain time". - 41e avec 20,509 points : Tuper4 a opté pour Tupercartes après 4 autres tentatives d'IA
En cas de victoire, l'IA t'enfonce le clou : "Tu per". - 40e avec 27,540 points : ledouble (équipe nsi42) a opté pour ia_ledouble_02 après 3 autres tentatives d'IA
- 39e avec 28,535 points : Pecel (équipe nsi42) et son IA CouscousVolant73
- 38e avec 31,056 points : Antoine emploi et son IA ia_perso1
Lors de ses rares victoires, l'IA s'écrit "ahah ez", tout un mystère...
Juste devant, nous avons les candidats et candidates propulsés par ia_random, l'IA par défaut fournie avec les scripts de participation, soit parce qu'ils ont téléversé une IA équivalente en code à ia_random (par exemple après avoir remarqué que leur dernière modification d'IA se comportait moins bien que l'originale), soit parce qu'ils se sont inscrits sans fournir la moindre IA.
L'IA ia_random joue ses coups complètement au hasard, et si par miracle elle arrive à l'emporter elle t'expliquera que c'est parce que "Le hasard fait bien les choses".
Ces candidats et candidates ont donc fait le choix de s'en remettre entièrement au hasard, et voici ce que le hasard leur a offert comme classement :
L'IA ia_random joue ses coups complètement au hasard, et si par miracle elle arrive à l'emporter elle t'expliquera que c'est parce que "Le hasard fait bien les choses".
Ces candidats et candidates ont donc fait le choix de s'en remettre entièrement au hasard, et voici ce que le hasard leur a offert comme classement :
- 37e avec 31,920 points : Genesect qui a opté pour ia_random après 3 autres tentatives d'IA
- 36e avec 31,976 points : V.d.c. et son IA Ia_vdc
- 35e avec 31,994 points : DiMartino et son IA ia_random_dimartino
- 34e avec 32,000 points : David Hooker et son IA DHAI
En cas de victoire, l'IA se donne la peine de t'annoncer ta défaite : "#loooser". - 33e avec 32,002 points : Houd qui a opté pour Hoods_AI après 2 autres tentatives d'IA
En cas de victoire, l'IA a la délicatesse de te présenter ses excuses : "Sorry " - 32e avec 32,022 points : ZetaMap qui n'a fourni aucune IA et se voit donc attribué ia_random
- 31e avec 32,022 points : briac210 et son IA fun
- 30e avec 32,058 points : GRIFFON et son IA ia_randomluc
- 29e avec 32,117 points : ggauny@live.fr qui a opté pour ia_random
- 28e avec 32,122 points : ptijoz qui a opté pour test_origine après 1 autre tentative d'IA
- 27e avec 32,150 points : M4x1m3 qui n'a fourni aucune IA et se voit donc attribué ia_random
Juste au-dessus, nous avons enfin un participant qui a codé une ou plusieurs améliorations inédites par rapport aux scripts fournis :
Justement, parlant des scripts fournis, l'IA ia_random comportait un exemple d'amélioration sous la forme de code commenté, celui de jouer une carte feu vert lorsque l'on ne pouvait pas rouler et que l'on n'était pas sous l'effet d'une carte d'attaque.
Nous avons donc maintenant un candidat qui certes n'a rien codé pour son IA mais a malgré tout pris le soin de lire et activer cette amélioration :
Nous avons donc maintenant un candidat qui certes n'a rien codé pour son IA mais a malgré tout pris le soin de lire et activer cette amélioration :
- 25e avec 32,219 points : Raphaël R (équipe nsi42) qui a opté pour ia_raph_rnd après 3 autres tentatives d'IA
Juste au-dessus, nous avons un autre participant ayant codé une ou plusieurs améliorations inédites :
Maintenant une petite série de candidats et candidates ayant fourni des IA extrêmement similaires si ce n'est identiques, si bien que nos scripts d'évaluation n'ont pas pu détecter de stabilisation de leur rang au classement.
C'est donc l'état en fin de tournoi qui est retenu, et bien évidemment leur classement s'apparente ici à un tirage au sort.
Voici déjà, 2 candidats qui ont fourni des IA équivalentes en terme de code :
Et voici maintenant 3 autres candidats partageant la même IA :
Bravo à vous !
C'est donc l'état en fin de tournoi qui est retenu, et bien évidemment leur classement s'apparente ici à un tirage au sort.
Voici déjà, 2 candidats qui ont fourni des IA équivalentes en terme de code :
- 23e avec 34,511 points : Paul emploi et son IA azerty
- 22e avec 34,515 points : TonioBG (équipe br.AI.n all.IA.ge) et son IA Maria
Et voici maintenant 3 autres candidats partageant la même IA :
Bravo à vous !
Les IA identiques étant maintenant passées, nous reprenons avec un classement entièrement basé sur le mérite :
- 18e avec 34,743 points : N04H qui a opté pour ia_04_Noah après 7 autres IA
- 17e avec 36,660 points : R0baiyn (équipe nsi42) qui a opté pour Pantheon après 2 autres IA
- 16e avec 37,173 points : darklogel qui a opté pour newia3 après 4 autres IA
En cas de victoire, l'IA s'écrie "yo le rap". - 15e avec 37,452 points : thomas_s (équipe nsi42) qui a opté pour dizzly_03 après 2 autres IA
En cas de victoire, l'IA s'écrie "La Family S vaincra !!!" - 14e avec 37,778 points : Radalium (équipe nsi42) et son IA ia_radalium
- 13e avec 37,781 points : ilyas.r (équipe nsi42) qui a opté pour ia_ilyas_r_3 après 2 autres IA
En cas de victoire, l'IA s'écrie "La Family S vaincra !!!", ce qui nous rappelle étrangement quelque chose... - 12e avec 37,826 points : eragon qui a opté pour ia_eragonV04 après 2 autres IA
En cas de victoire, l'IA s'écrie "YAY". - 11e avec 38,252 points : cent20 (équipe nsi42) qui a opté pour no_ia après 7 autres IA
- 10e avec 38,478 points : Camille A (équipe nsi42) qui a opté pour ia_ca_07 après 9 autres IA, brillante élève qui vient donc de dépasser son maître cent20 !
- 9e avec 39,676 points : Wistaro et son IA ia_wistaro
En cas de victoire, l'IA fait preuve d'enthousiasme à l'idée de refaire une partie avec toi : "Je pourrais faire ca toute la journee!". - 8e avec 42,260 points : Oh11115 qui a opté pour Crisc_v1-1_ après 3 autres IA
En cas de victoire, l'IA sait faire preuve de modestie : "AHAHAHAHAHAHAHAH Crisc est le meilleur ! (NON)". - 7e avec 43,965 points : TIny_Hacker (équipe br.AI.n all.IA.ge) qui a opté pour awesome_ai_1 après 12 autres IA
Lors de ses nombreuses victoires, l'IA s'écrie "I guess it worked 🎉". - 6e avec 44,454 points : critor qui a opté pour Critor_ITE_v1 après 1 autre IA (cette participation n'est prise en compte que pour référence, je ne prendrai bien évidemment aucun lot)
En cas de victoire l'IA te révèle un indice sur son fonctionnement : "Avec des si, moi j'embouteille les IAs !". - 5e avec 44,919 points : LaTaupe et son IA Deep_Thought_v0-8, après 5 autres IA.
Une participation fort joliment nommée pour un concours d'IA soit dit en passant, même si la référence nous fait hésiter entre deux ordinateurs ayant hébergé une intelligence artificielle, un réel et un de fiction... Mais heureusement, en cas de victoire, l'IA s'empresse de lever le doute : "je crois que le probleme, pout etre tout a fait franc avec vous, est que vous n'avez jamais vraiment bien saisi la question". - 4e avec 45,211 points : NeOtuX (équipe br.AI.n all.IA.ge) qui a opté pour ia_Jander_Panell après 4 autres IA
Cela n'empêche pas son évaluation car c'est exceptionnel (seulement 4 fois en 74588 duels), mais précisons qu'il arrive que cette IA déclenche des erreurs de dépassement de la pile d'appels récursifs, constaté fort étrangement uniquement dans le cadre de duels contre CouscousVolant73, et c'est bien la seule IA qui semble avoir été perturbée par cet adversaire. La partie ne pouvant aller jusqu'à son terme, les scores des 4 duels en question ont été ignorés.
À chacune de sa belle collection de victoires, l'IA te donne un indice sur sa stratégie : "La victoire va à celui qui prend le plus de risques."
Nous arrivons donc maintenant au trio de tête :
- 3e avec 45,224 points : SlyVTT (équipe br.AI.n all.IA.ge) qui a opté pour SLYnapse_v6-0 après 27 autres IA
En cas de victoire soit très souvent, l'IA te révèle ses intentions cachées : "Je suis SLYnapse-6.0, l'IA qui va conquérir le monde !!! Ahhh Ahhh Ahhh !!!" - 2e avec 45,756 points : Afyu (équipe br.AI.n all.IA.ge) qui a opté pour Salvia après 20 autres IA
Lors de ses nombreuses victoires, l'IA s'écrie "Et BIM, c'est qui le meilleur ?". - 1er avec 46,061 points : Yaya.Cout qui a opté pour 42_2-3 après 13 autres IA
L'IA a donc ici passé son temps à s'écrier "What was the question ?".
29 lots sont disponibles pour le classement individuel, et comme je ne prends pas de lot il pourra donc y avoir une récompense jusqu'au rang 30 inclus.
Dans le cadre de cette annonce, un remerciement tout particulier à Sébastien Michelland alias Lephe qui a codé les fonctions Elo utilisées.
Voici la sortie du script d'évaluation :
- Code: Select all
$ python3 elo1.py tournoi1.json tournoi2.json tournoi5.json tournoi10.json tournoi20.json tournoi50.json tournoi100.json tournoi200.json tournoi500.json
Traitement des 1603724 duels...
[====================================================================================================] 100%
RANG NOM GROUP IA INFOS (*) SCORE DUELS FREQUENCE
01 Yaya.Cout 42_2-3 46.061 37296 + 37296 = 74592 59.72% top1
02 Afyu br.AI.n all.IA.ge Salvia 45.756 37296 + 37296 = 74592 46.43% top2
03 SlyVTT br.AI.n all.IA.ge SLYnapse_v6-0 45.224 37296 + 37296 = 74592 23.42% top3
04 NeOtuX br.AI.n all.IA.ge ia_Jander_Panell 45.211 37295 + 37293 = 74588 09.93% top4
05 LaTaupe Deep_Thought_v0-8 44.919 37296 + 37296 = 74592 09.85% top5
06 critor Critor_ITE_v1 44.454 37296 + 37296 = 74592 08.59% top6
07 TIny_Hacker br.AI.n all.IA.ge awesome_ai_1 43.965 37296 + 37296 = 74592 08.48% top7
08 Oh11115 Crisc_v1-1_ 42.260 37296 + 37296 = 74592 08.37% top8
09 Wistaro ia_wistaro 39.676 37296 + 37296 = 74592 06.54% top9
10 Camille A nsi42 ia_ca_07 38.478 37296 + 37296 = 74592 06.49% top10
11 cent20 nsi42 no_ia 38.252 37296 + 37296 = 74592 04.66% top11
12 eragon ia_eragonV04 37.826 37296 + 37296 = 74592 04.50% top12
13 ilyas.r nsi42 ia_ilyas_r_3 37.781 37296 + 37296 = 74592 03.56% top13
14 Radalium nsi42 ia_radalium 37.778 37296 + 37296 = 74592 03.56% top14
15 thomas_s nsi42 dizzly_03 37.452 37296 + 37296 = 74592 03.23% top15
16 darklogel newia3 37.173 37296 + 37296 = 74592 03.20% top16
17 R0baiyn nsi42 Pantheon 36.660 37296 + 37296 = 74592 03.15% top17
18 N04H nsi42 ia_04_Noah 34.743 37296 + 37296 = 74592 02.11% top18
19 Kaïs.Mt nsi42 ia_nsi_03 (3) 34.663 37296 + 37296 = 74592
20 RC06 nsi42 ia_rc_03 (3) 34.643 37296 + 37296 = 74592
21 Sylvain_b nsi42 ia_syl (3) 34.585 37296 + 37296 = 74592
22 TonioBG br.AI.n all.IA.ge Maria (2) 34.515 37296 + 37296 = 74592
23 Paul emploi azerty (2) 34.511 37296 + 37296 = 74592
24 Shacoh_ nsi42 ia_shaco4 34.242 37296 + 37296 = 74592
25 Raphaël R nsi42 ia_raph_rnd ia_random# (1) 32.219 37296 + 37296 = 74592
26 Amerz br.AI.n all.IA.ge Foster 32.193 37296 + 37296 = 74592
27 M4x1m3 ia_random ia_random (0) 32.150 37296 + 37296 = 74592
28 ptijoz test_origine ia_random (0) 32.122 37296 + 37296 = 74592
29 ggauny@live.fr ia_random ia_random (0) 32.117 37296 + 37296 = 74592
30 GRIFFON ia_randomluc ia_random (0) 32.058 37296 + 37296 = 74592
31 briac210 fun ia_random (0) 32.022 37296 + 37296 = 74592
32 ZetaMap ia_random ia_random (0) 32.022 37296 + 37296 = 74592
33 Houd Hoods_AI ia_random (0) 32.002 37296 + 37296 = 74592
34 David Hooker DHAI ia_random (0) 32.000 37296 + 37296 = 74592
35 DiMartino ia_random_dimartino ia_random (0) 31.994 37296 + 37296 = 74592
36 V.d.c. Ia_vdc ia_random (0) 31.976 37296 + 37296 = 74592
37 Genesect ia_random ia_random (0) 31.920 37296 + 37296 = 74592
38 Antoine emploi ia_perso1 31.056 37296 + 37296 = 74592
39 Pecel nsi42 CouscousVolant73 28.535 37293 + 37295 = 74588
40 ledouble nsi42 ia_ledouble_02 27.540 37296 + 37296 = 74592
41 Tuper4 Tupercartes 20.509 37296 + 37296 = 74592
42 fklv ia_fcalva_0_1 16.258 37296 + 37296 = 74592
43 Liquefy2951 iabete 06.633 37296 + 37296 = 74592
(*) Infos sur les IAs :
chiffre = IA identique pour plusieurs participations
1 = "ia_random" founie avec l'amélioration précodée activée
0 = "ia_random" fournie
Et un énorme merci à tous ceux et celles qui ont été au rendez-vous pour participer cette année.
Rendez-vous maintenant pour la finale individuelle après le dimanche 11 mars 2024 ainsi que pour la finale en équipe après le dimanche 19 mai 2024. Nous attendons du grand spectacle, ne nous décevez pas !