Voici enfin venu aujourd'hui le jour trop longtemps attendu des résultats de la finale individuelle
concours d'intelligence artificielle Python 1000 Bornes.
Je présente toutes mes excuses pour tous ces mois de retard, découlant d'un incident de santé dans la famille début mars.
J'en profite pour remercier les candidats pour leur patience admirable, ainsi que ceux qui ont mis la main à la pâte pour faire avancer la gestion de l'événement alors que j'étais indisponible, notamment Afyu et également cent20.
Nos remerciements une fois encore tous ceux qui ont rendu possible cet événement auquel nous pensions déjà depuis plusieurs années et qui nous tenait tant à cœur :
Sommaire :
- 1) Les finalistes
- 2) La finale
- 3) Les IAs
- 4) Modalités d'évaluation
- 5) Vainqueurs et derniers des truels
- 6) Scores des truels
- 7) Résultats
1) Les finalistes et la finale
Sur les
42 participants et participantes cette année, nous avions
retenu invité les 3 premiers au classement à participer à une finale pour un lot supplémentaire :
2) La finale
La finale en question était l'occasion de faire évoluer le code de son IA si cela n'avait pas été anticipé, car le format des combats changeait exprès.
Etaient prévus ici non plus des duels, mais un truel entre les IAs de nos 3 champions.
Les IAs gérant et optimisées pour ce format devaient nous être téléversées jusqu'au
dimanche 11 mars 2024 23h59 GMT+1.
3) Les IAs
Tous nos champions ont bien téléversé une ou plusieurs IAs avant la date en question. Sauf indication contraire de leur part
(il y avait la possibilité de cocher l'IA à prendre en compte), c'est l'IA soumise en dernier qui va participer au truel.
- SlyVTT va combattre avec son IA SLYnapse_finale, après nous avoir envoyé 4 autres tentatives d'IA.
Lorsque qu'elle gagne, son IA s'esclame : "Je suis SLYnapse-11.0 ... Moi en mode Truelle, je Maçonne :D" - Afyu va quant à lui se battre avec son IA Triteleia.
En cas de victoire, son IA s'écrie : "Et BIM, c'est qui le meilleur ?" - Yaya.Cout pour sa part va leur opposer son IA 42_2-5, après nous avoir soumis 1 autre tentative d'IA.
Lorsqu'elle remporte le truel, son IA sait faire preuve de modestie : "I don't have the driving license, btw"
4) Modalités d'évaluation
Afin d'éliminer tout facteur aléatoire, nous avons fait s'affronter ces 3 IAs lors d'une grande série de truels, très exactement
388'888 truels.
Rappelons le
1000 Bornes est un jeu se jouant à tour de rôle. Pour 3 joueurs, pourront alors jouer dans l'ordre : joueur1, joueur2, joueur3, joueur1, joueur2, joueur3, joueur1, …
Selon la façon dont ont été codées les différentes IAs, certaines positions pourraient être avantagées ou désavantagées
(si par exemple dans le cas où plusieurs adversaires sont vulnérables, une IA attaque toujours la position de plus bas numéro).
Pour n'avantager et de désavantager personne, nous changeons l'ordre des adversaires à chaque nouveau truel.
Voici le détail des truels joués par chaque IA dans les différentes positions possibles :
| Joueur 1 | Joueur 2 | Joueur 3 |
SlyVTT | 129'628 | 129'630 | 129'630 |
Afyu | 129'628 | 129'630 | 129'630 |
Yaya.Cout | 129'632 | 129'628 | 129'628 |
5) Vainqueurs et derniers
Intéressons nous maintenant au classement des IAs, en terme de scores, pour chaque truel.
Voici toutes les fois où chaque IA est dernière d'un truel
(pire des 3 scores) en fonction des différentes positions :
| Joueur 1 | Joueur 2 | Joueur 3 | TOTAL |
SlyVTT | 42'091
(32,47%) | 48'295
(37,26%) | 73'286
(56,53%) | 163'672
(42,09%) |
Afyu | 23'829
(18,38%) | 23'383
(18,04%) | 8'258
(6,37%) | 55'470
(14,26%) |
Yaya.Cout | 61'701
(47,60%) | 64'643
(49,87%) | 45'424
(35,04%) | 171'768
(44,17%) |
Voici maintenant toutes les fois où chaque IA est victorieuse d'un truel
(meilleur des 3 scores) en fonction des différentes positions :
| Joueur 1 | Joueur 2 | Joueur 3 | TOTAL |
SlyVTT | 27'504
(21,22%) | 24'799
(19,13%) | 13'018
(10,04%) | 65'321
(16,80%) |
Afyu | 68'311
(52,70%) | 69'746
(53,80%) | 94'721
(73,07%) | 112'904
(59,77%) |
Yaya.Cout | 24'651
(19,02%) | 24'187
(18,66%) | 43'232
(33,35%) | 92'070
(23,68%) |
On peut effectivement remarquer de grosses disparités en fonction des positions,
Afyu bondissant par exemple de 52-53% à 73% de victoires si son IA joue en position 3 !
Mais la question n'est pas de savoir ce qu'il fait de spécial dans cette configuration
(probablement rien vu le cadre imposé par le script réalisant les truels), mais plutôt de savoir ce que les autres IAs ou plutôt l'une d'entre elles ne font pas ou font moins bien dans cette configuration
(comme du code non entièrement adapté à ce nouveau format et ne tenant pas compte du joueur3 pour certaines actions : qui est le plus proche de la ligne d'arrivée, qui attaquer, etc.). Si dans ce cas on oublie de tenir compte pour certaines décisions de ce qui semble être l'IA la plus dangereuse, effectivement cela explose son taux de victoires…
6) Scores
Si le vainqueur de la finale semble certes évident au vu des résultats précédents, reste encore à départager les deux autres qui sont très proches.
Pour cela rappelons que l'objectif n'était pas simplement de gagner, mais de gagner en réalisant le meilleur score possible.
Voici donc les scores cumulés
(victoires et défaites confondues) lors des truels, en fonction ici encore des différentes positions de jeu :
| Joueur 1 | Joueur 2 | Joueur 3 | TOTAL |
SlyVTT | 1'020'631'950 | 1'010'858'425 | 936'257'475 | 2'967'747'850 |
Afyu | 1'188'828'550 | 1'190'191'275 | 1'268'778'075 | 3'647'797'900 |
Yaya.Cout | 965'444'275 | 942'549'825 | 1'079'499'375 | 2'987'493'475 |
Décidément, ici encore les deux IAs concernées sont extrêmement proches.
7) Résultats
Pour départager nos 3 candidats, nous faisons appel à notre version modifiée de l'algorithme de la méthode
Elo déjà utilisée pour le classement individuel format duels, classant les IAs justement non pas en fonction du résultat binaire victoire/défaite de chaque truel, mais en fonction des scrores atteints en fin de partie.
Il est temps de proclamer les résultats :
- 3e avec 174,061 points : Yaya.Cout
- 2e avec 176,714 points : SlyVTT
- 1er avec 212,213 points : Afyu
Un énorme merci pour votre patience infinie et un grand bravo à tous, vous allez maintenant pouvoir compléter vos choix de lots avant expédition !
Les résultats des duels peuvent être
téléchargés et sont accompagné du script de classement.
Voici la sortie du script d'évaluation :
>python3 ./finale_truel_elo.py findiv1.json findiv2.json findiv5.json findiv10.json findiv20.json findiv50.json findiv100.json findiv200.json findiv500.json findiv1000.json findiv2000.json findiv5000.json findiv10000.json findiv20000.json findiv50000.json findiv100000.json findiv200000.json
Traitement des 388888 truels...
[====================================================================================================] 100%
TOUR1 TOUR2 TOUR3
064814x SlyVTT Afyu Yaya.Cout
1er 016036 (24.74)% 026928 (41.55)% 022118 (34.13)%
dernier 024964 (38.52)% 017719 (27.34)% 022532 (34.76)%
scores 524855550 566602300 543311050
064814x SlyVTT Yaya.Cout Afyu
1er 011468 (17.69)% 003970 (6.13)% 049518 (76.40)%
dernier 017127 (26.42)% 045103 (69.59)% 002872 (4.43)%
scores 495776400 403851500 640704400
064814x Afyu SlyVTT Yaya.Cout
1er 030566 (47.16)% 013371 (20.63)% 021114 (32.58)%
dernier 014846 (22.91)% 027421 (42.31)% 022892 (35.32)%
scores 580178600 509152675 536188325
064814x Afyu Yaya.Cout SlyVTT
1er 037745 (58.24)% 020217 (31.19)% 007068 (10.91)%
dernier 008983 (13.86)% 019540 (30.15)% 036614 (56.49)%
scores 608649950 538698325 473423275
064816x Yaya.Cout SlyVTT Afyu
1er 008416 (12.98)% 011428 (17.63)% 045203 (69.74)%
dernier 038858 (59.95)% 020874 (32.21)% 005386 (8.31)%
scores 449862800 501705750 628073675
064816x Yaya.Cout Afyu SlyVTT
1er 016235 (25.05)% 042818 (66.06)% 005950 (9.18)%
dernier 022843 (35.24)% 005664 (8.74)% 036672 (56.58)%
scores 515581475 623588975 462834200
-------------------------------------------------------------------------------------------
NOM CRITERE TOTAL = TOUR1 + TOUR2 + TOUR3
SlyVTT truels : 388888 = 129628 + 129630 + 129630
Afyu truels : 388888 = 129628 + 129630 + 129630
Yaya.Cout truels : 388888 = 129632 + 129628 + 129628
SlyVTT 1er : 065321 (16.80%) = 027504 (21.22%) + 024799 (19.13%) + 013018 (10.04%)
Afyu 1er : 232778 (59.86%) = 068311 (52.70%) + 069746 (53.80%) + 094721 (73.07%)
Yaya.Cout 1er : 092070 (23.68%) = 024651 (19.02%) + 024187 (18.66%) + 043232 (33.35%)
SlyVTT dernier : 163672 (42.09%) = 042091 (32.47%) + 048295 (37.26%) + 073286 (56.53%)
Afyu dernier : 055470 (14.26%) = 023829 (18.38%) + 023383 (18.04%) + 008258 (6.37%)
Yaya.Cout dernier : 171768 (44.17%) = 061701 (47.60%) + 064643 (49.87%) + 045424 (35.04%)
SlyVTT scores : 2967747850 = 1020631950 + 1010858425 + 936257475
Afyu scores : 3647797900 = 1188828550 + 1190191275 + 1268778075
Yaya.Cout scores : 2987493475 = 965444275 + 942549825 + 1079499375
-------------------------------------------------------------------------------------------
RANG NOM GROUP IA ELO FREQUENCE
1 Afyu br.AI.n all.IA.ge Triteleia 212.213 100.00% top1
2 SlyVTT br.AI.n all.IA.ge SLYnapse_finale 176.714 99.93% top2
3 Yaya.Cout 42_2-5 174.061 99.93% top3
Citer : Posté le 17/06/2024 21:21 | #
Bravo à tous les trois
Citer : Posté le 18/06/2024 09:28 | #
Bravo à Afyu et à Yaya.Cout, c'est un joli combat.
Afyu nous a mis une déculottée
Je suis très content que mon IA se soit bien sortie du combat, quoique un peu surpris in fine de passer devant Yaya.Cout.
Je savais pour avoir testé via le site web que nos IA avait un niveau à peu près équivalent car d'un sur l'autre, j'avais grosso modo du 50/50 de victoire.
Ca s'est donc joué dans un mouchoir de poche.
Critor, je ne sais pas si tu as vu les messages des diverses IA en cas de victoire, ce serait peut être intéressant de les mettre comme pour la première phase du tournoi.
Merci beaucoup à tous encore une fois pour ce tournoi fort sympathique. J'ai hâte de lire la démarche suivie par Afyu dans son IA pour nous atomiser, et ensuite voir le tournoi par équipe.
@+
Citer : Posté le 18/06/2024 10:10 | #
Félicitation aux trois participants de cette finale.
Vos IAs sont très développées.
Je me demande ce que ça donnerai avec des combats similaires pour d'autres IAs de la première phase du tournoi.
Comment est-ce que mon IA s'en sortirai ? Très mal probablement.
Citer : Posté le 19/06/2024 07:50 | #
Bravo aux finalistes et aux organisateurs pour ce le concours!
sinon, petite faute de frappe ici...
3) Les IAs
Tous nos champions ont bien téléversé une ou plusieurs IAs avant la date en question. Sauf indication contraire de leur part (il y avait la possibilité de cocher l'IA à prendre en compte), c'est l'IA soumise en dernier qui va participer au truel.
- SlyVTT va combattre avec son IA SLYnapse_finale, après nous avoir envoyé 4 autres tentatives d'IA.
- Afyu va quant à lui se battre avec son IA Triteleia.
- Yaya.[Count/i] pour sa part va leur opposer son IA 42_2-5, après nous avoir soumis 1 autre tentative d'IA.
Citer : Posté le 19/06/2024 08:50 | #
Merci, c'est également corrigé.
Citer : Posté le 19/06/2024 11:07 | #
Merci @Slyvtt pour ton retour et ta suggestion.
Critor, je ne sais pas si tu as vu les messages des diverses IA en cas de victoire, ce serait peut être intéressant de les mettre comme pour la première phase du tournoi.
Justement c'est rajouté, mais je crois que les messages ne changent pas ou très peu par rapport à la première phase.
Citer : Posté le 19/06/2024 22:52 | #
Félicitations aux finalistes pour ces combats d'IAs fastidieux...
Ps : slyvtt, j'aime beaucoup ton message en cas de Victoire