Concours d'IA : 1ère édition
Posté le 07/02/2014 20:42
Bonjour à tous et à toutes, casiofans !
Pour la première fois sur Casio, j'ai le privilège de vous annoncer le commencement d'un nouveau style de concours : le combat d'intelligences artificielles !
pour la petite histoire
et oui !
Il y a 2 ans, je me lançais avec Ne0tux dans un concours d'IA, nous avions déjà bien avancé quand le bac puis de la prépa de ce dernier ne nous laissa pas le temps de le finir...
Suite à un crash de mon ordi, je perdit tous les squelette de jeux qu'on avait programmé, ce qui arrêta définitivement notre projet, mais aujourd'hui suite à une discussion avec Limachi et vu l'engouement que provoque Prologin, je pense qu'il est l'heure de remettre à jour ce projet.
(D'ailleurs Neo' a réussi à retrouver le squelette d'un programme et la belle image que vous avez quand vous lancez le programme.)
Tout d'abord qu'est ce qu'une IA (intelligence artificielle) ?
Wikipédia nous explique un peu ce que c'est mais je vais vous simplifier l'histoire.
Le but d'une IA est de faire réfléchir l'ordinateur, en l’occurrence la calculatrice, comme un humain l'aurait fait.
Pour ce faire, vous allez devoir apprendre à gérer l'algorithmie.
Je vois déjà quelques visages interrogateurs
"
Qu'est ce qu'il est en train de me raconter celui-là"
Et bien, en fait, c'est beaucoup plus simple que ça n'en a l'air.
Si vous avez le courage, vous verrez que dans 5 minutes, tout sera déjà beaucoup plus clair dans votre esprit et vous serez fin prêts pour débuter le concours.
Voici comment se déroule une étape du concours :
1) Je sors le "squelette" du programme, c'est moi qui gère tout l'aspect graphique du programme, les menus...
2) Je vous propose également un fichier vide, que vous devrez remplir avec votre IA.
3) Toutes vos IA se battent l'une contre l'autre et un certain nombre de points vous est attribué en fonction de vos résultats.
Parlons dès à présent du "comment" d'une intelligence artificielle. J'utiliserai dans cet exemple un jeu de morpion :
Une première approche d'une IA est de la coder en conditions préférentielles. Je m'explique, vous devez lui indiquer en fonction de la situation, ce qu'elle doit d'abord faire, puis ensuite cela, si elle ne peut pas faire la première action.
Exemple du morpion:
1) Regarder si vous pouvez gagner.
2) Vérifier que l'autre ne peut pas gagner.
3) Trouver quel est le meilleur coup à jouer.
Facile à dire hein
mais un peu moins à faire
Comment vérifier si vous pouvez gagner : c'est très simple, il suffit de regarder si deux de vos pions ne sont pas mis l'un a côté de l'autre et si la troisième case est vide (pareil pour vérifier si l'autre ne peut pas gagner).
Par après la partie (un peu) plus dure consiste à trouver quel est le coup le plus avantageux pour vous.
Mais je suis sur que vous allez vous en sortir
Avec un peu de réflexion, je suis sur que vous trouverez plein d'idées auxquelles je n'aurais même pas pensé.
Il vous suffit ensuite de ne retourner à la fin de votre programme que la valeur de deux variables, A et B qui seront les coordonnées de votre coup stocké dans une matrice ( mat B[ B , A ] ).
Parlons dès à présent du concours en lui-même :
- C'est un concours qui se déroule sur une année entière.
- Tous les deux mois, un nouveau squelette de programme vous est proposé.
- Vous avez deux semaines pour remettre votre intelligence artificielle.
- Vous n'êtes pas obligé de participer à tous les éditions pour gagner un prix à la fin de l'année.
- Chaque participation vous rapportera plus ou moins de points en fonction de vos résultats et un classement sera établi à partir de ces points.
- Le concours est exclusivement en Basic pour toucher plus de monde et pour vous obliger à réfléchir à quelle IA est la plus rapide et comment l'optimiser au lieu de faire une méthode bourrin en C.
- Quand vous êtes satisfait de votre IA, vous pouvez l'envoyez à
vous aveez le droit de me l'envoyer plusieurs fois, si vous vous rendez compte que vous vous êtes trompé, mais ne me spammez pas non plus.
Critères de notations :
1.5 point pour le niveau de programmation
1 point pour l’optimisation du code
1 point pour absence de bugs
2 points pour la rapidité
2 points pour l’efficacité contre une autre IA
2.5 points pour l’efficacité contre un joueur humain
Si, vous vous demandez pourquoi j'ai décidé de favoriser l'efficacité contre des joueurs humains, est que :
Imaginons que toutes les IA soient globalement mauvaises (on ne l'espère pas), la moins mauvaise gagnerait plus de points et auraient à la fin un plutôt bon score alors qu'elle ne le mérite pas vraiment au vu de ses performances contre des personnes réelles.
J'espère que vous êtes aussi motivés que je le suis et que vous allez nous pondre des IA de qualité.
Pour cette première édition :
Vous avez 2 semaines (donc jusqu'au 22/02/2014) pour écrire une Intelligence Artificielle du jeu du morpion (ou OXO) qui sera écrite dans le programme OXOIA et qui renverra A et B, comme les coordonnées du coup de votre IA.
Le fichier contenant le programme OXO, OXOIA, la picture 2 et 3 est dans le fichier joint.
Attention à ne pas changer la matrice B, pour le bon déroulement du jeu. Vous êtes libres d'utiliser tout ce qui est autres matrices, str, list, fn,variables... mais faites attention au fait que ces données peuvent être modifiées par les autres joueurs aussi.
Sauf les variables C, H, U, M, N, r !
Pour le menu du squelette, les cases vides à gauche et à droite, contiendront les IA quand elles auront été programmées.
participants :
-
Positon
-
Totoyo
-
BTL
-
Tenmatx
-
Limachi
-
Julien_1
-
Javierxd
-
Nemhardy
- Kirafi
- Pie3636
- Eltoredo
- Dark Storm
- Thomatos
- Maliafo
- Drac0300
...
N'hésitez pas à participer, il ne faut pas forcément être très bon en programmation, il faut juste savoir réfléchir et réussir à faire réfléchir votre calculatrice.
Je compte sur vous pour participer en masse et ainsi créer le plus gros combat d'IA jamais programmé sur CASIO !
Si vous avez des questions, n'hésitez pas à les poser, je répondrai volontiers (et je ne serai pas le seul).
BTL
Fichier joint
Citer : Posté le 13/02/2014 21:05 | #
La mienne aussi est prête, je l'enverrai demain si aucun bug n'est trouvé. Pour l'instant j'ai 100% de matchs nul en I.A. versus I.A. et je suis incapable de gagner contre elle.
Elle fait 1172 octets (hé oui).
Mais elle connaît trois stratégies usuelles, qu'elle est également capable de contrer 8)
Et ce avec un temps d'attente raisonnable.
D'ailleurs il se trouve que j'ai parlé un peu vite puisqu'elle utilise la liste 24 pour son plan
Citer : Posté le 14/02/2014 00:42 | #
la mienne n'utilise aucune stratégie, ne fait que 600 octets (environ), a un temps d'attente un peux long pour le tout premier coup qu'elle doit jouer, puis est raisonnable pour les suivants (elle ne perd pas aussi, mais ce n'est qu'un détail).
elle utilise les listes 24, 25 et 26 mais les réinitialise a chaque appel, de même que les variables que j'utilise, et autre progrès, je n'ai plus aucun lbl goto.
il me reste plus qu'a corriger un/deux bug/s et elle seras prête.
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed
-mon tuto sur les Str
Mes calto: G25+, G75
Mon minecraft en dévelopement
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Citer : Posté le 15/02/2014 00:12 | #
La mienne est trop lourde, je la finirai puis j'essaierai de l'optimiser...
My program is not working, I have no idea why.
My program is working, I have no idea why.
Citer : Posté le 15/02/2014 21:42 | #
Perso, j'ai fini mon IA aujourd'hui
Elle met environ 1 seconde par coup (quelle que soit la position),
fait 900 octets,
possède plusieurs stratégies en fonction de qui commence,
Biensur elle est imbattable enfin à vous de me montrer le contraire !
Jouez à 6 sur une seule calto : Curve Fever
Un die and retry qui vous fera bieeeen rager Test Andropov
un très bon sokoban
le seul vrai jeu de foot en basic : FIFA 12
Ca c'est ce que j'appelle un jeu de reflexion jewel master
Qui vaincra l'intelligence artificielle de cet othello
Le célèbre pacman
Et tant d'autres BTL's games
Le jeu du mois de Novembre et award du jeu le plus dur de l'année 2013 MultiTask, testez-le
Citer : Posté le 15/02/2014 22:11 | #
Vous me faites peur là, moi qui ai programmé une IA semi-aléatoire...
Le hasard fait bien les choses heureusement.
Toutes les formules de Première S.
Toutes les formules de Terminale S.
Un programme de calculs.
Super Mario 3
warrior
Jump Ball
First Fly
►Jeu gagnant des 48h CPC n°12◄
Mon site de discussion pour ados : http://entre-ados.net/ (a brûlé dans l'incendie d'OVH)
Mon éditeur de cours en ligne et plateforme de partage : http://wordline.xyz (a succombé à la concurrence de Google Drive...)
Citer : Posté le 15/02/2014 22:19 | #
Ne t'inquiète pas, du moment qu'elle est opérationnelle, c'est bon.
Ajouté le 15/02/2014 à 22:47 :
Tenmatx et Positon, vos 2 participations ont été validé. (Je n'ai pas encore testé vos IA, du fait qu'il reste encore 1 semaine)
Vos pseudos sont maintenant en gras dans la liste.
Jouez à 6 sur une seule calto : Curve Fever
Un die and retry qui vous fera bieeeen rager Test Andropov
un très bon sokoban
le seul vrai jeu de foot en basic : FIFA 12
Ca c'est ce que j'appelle un jeu de reflexion jewel master
Qui vaincra l'intelligence artificielle de cet othello
Le célèbre pacman
Et tant d'autres BTL's games
Le jeu du mois de Novembre et award du jeu le plus dur de l'année 2013 MultiTask, testez-le
Citer : Posté le 15/02/2014 22:53 | #
Un truc un peu con, mais il est mit qu'on ne peut pas modifier les variables C, H, U, M, A, N ... Mais comment on fait pour choisir sa position si A est indisponible?
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2
merci a tout le monde pour son soutien
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm
(dont je connais le nom, mais pas vous )Arcuz !Citer : Posté le 15/02/2014 22:57 | #
ahahah en effet un tout petit peu bête
Ok, je change tout de suite, on peut bien entendu modifié A...
Jouez à 6 sur une seule calto : Curve Fever
Un die and retry qui vous fera bieeeen rager Test Andropov
un très bon sokoban
le seul vrai jeu de foot en basic : FIFA 12
Ca c'est ce que j'appelle un jeu de reflexion jewel master
Qui vaincra l'intelligence artificielle de cet othello
Le célèbre pacman
Et tant d'autres BTL's games
Le jeu du mois de Novembre et award du jeu le plus dur de l'année 2013 MultiTask, testez-le
Citer : Posté le 15/02/2014 23:01 | #
je suis super nul en IA(je ne participerait jamais à ce concours, même une IA de morpion est compliqué pour moi). Par contre, je me propose comme testeur
Citer : Posté le 15/02/2014 23:07 | #
Hmm, je vais voir si j'ai besoin de testeur (surement), mais il faudra au moins l'émulateur plus un logiciel de capture vidéo d'écran pour pouvoir vérifier la véracité des test.
Jouez à 6 sur une seule calto : Curve Fever
Un die and retry qui vous fera bieeeen rager Test Andropov
un très bon sokoban
le seul vrai jeu de foot en basic : FIFA 12
Ca c'est ce que j'appelle un jeu de reflexion jewel master
Qui vaincra l'intelligence artificielle de cet othello
Le célèbre pacman
Et tant d'autres BTL's games
Le jeu du mois de Novembre et award du jeu le plus dur de l'année 2013 MultiTask, testez-le
Citer : Posté le 16/02/2014 00:36 | #
Je suis content de ma petite IA. Je ne pense pas l'améliorer, mais c'était un défi intéressant. J'aime !
Vitesse des fonctions en Basic Casio | 7 days CPC | Casio Universal Wiki | Tutoriel Basic Casio
>>> Give me a click Brother <<< >>> Teste mon générateur de mots nouveaux <<<
>>> Random Youtube Video <<<
Citer : Posté le 16/02/2014 02:06 | #
Je suis désolé, je pourrais pas envoyer la mienne, mon ordi est tombé en panne (j'envoie ce message avec mon portable). Je dois abandonner.
Coïncidence ? Je ne pense pas.
Citer : Posté le 16/02/2014 09:58 | #
Dommage
Peux-tu envoyer ton code dans un mail à BTL depuis un ordinateur de ton école ?
Vitesse des fonctions en Basic Casio | 7 days CPC | Casio Universal Wiki | Tutoriel Basic Casio
>>> Give me a click Brother <<< >>> Teste mon générateur de mots nouveaux <<<
>>> Random Youtube Video <<<
Citer : Posté le 16/02/2014 10:04 | #
@BTL : j'ai camtasia et l'émulateur(je m'en sépare jamais ). Par contre, je ne peux pas faire des commentaires audio, les prises jack de mon ordi sont HS
Citer : Posté le 16/02/2014 11:29 | #
Moi je veux bien mais je ne sais pas gerer les matrices et les listes en basic, et j'ai la flemme de m'y mettre
Minecraft de limachi
Yu-gi-oh! de intelligide
Fix-os de kristaba
Baston!
Citer : Posté le 16/02/2014 21:04 | #
@Intelligide : ça peut le faire alors
(Pas besoin de commentaires, je commenterai tout, comme ça le son ne sera pas trop différent)
Jouez à 6 sur une seule calto : Curve Fever
Un die and retry qui vous fera bieeeen rager Test Andropov
un très bon sokoban
le seul vrai jeu de foot en basic : FIFA 12
Ca c'est ce que j'appelle un jeu de reflexion jewel master
Qui vaincra l'intelligence artificielle de cet othello
Le célèbre pacman
Et tant d'autres BTL's games
Le jeu du mois de Novembre et award du jeu le plus dur de l'année 2013 MultiTask, testez-le
Citer : Posté le 16/02/2014 23:02 | #
bon, j'ai enfin corrigé les bugs de mon IA, et en ait même fait deux versions pour le coup, une version en 664 octets utilisant une procédure récursive (plus il y a de cases blanches, plus le temps de calcul est long), et une autre version de 728 octets ou j'ai ajoute un pré-calcul pour le premier coup (ce qui fait passer le temps de calcul du premier a coup de 2s a moins de 0.2s) et de l’aléatoire pour certaines configuration offrant des coups ayant exactement la même répercussion sur le jeu.
et autre petite chose, mon IA est devenu suffisamment efficace pour... gagner contre elle même (si elle commence, elle gagne)
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed
-mon tuto sur les Str
Mes calto: G25+, G75
Mon minecraft en dévelopement
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Citer : Posté le 16/02/2014 23:03 | #
ça veut dire que ton IA peut aussi perdre
Pourras-tu survivre plus de 20 secondes dans ce fameux tunnel appelé Graviton
Rebondis entre les murs en évitant les piques dans SpikeBird
Pourras-tu éviter de te faire écraser dans FallBlocs (élu Jeu Du Mois)
La version 2048 tactile amélioré au plus haut point : 2048 Delux !
Pars à la recherche des morceaux d'étoile dans Lumyce (élu Jeu Du Mois)
Citer : Posté le 16/02/2014 23:07 | #
ça veut dire que ton IA peut aussi perdre
+1, une I.A. efficace est justement censée ne pas perdre.
Citer : Posté le 16/02/2014 23:08 | #
effectivement, mais sur un morpion, si on applique une certaine stratégie, on gagne a coup sur (aussi sur que je gagne si a pile ou face je dis: "pile je gagne, face tu perd"), ce qui nous vaudra des points seras l'IA elle même, pas son classement par rapport aux autres.
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed
-mon tuto sur les Str
Mes calto: G25+, G75
Mon minecraft en dévelopement
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Citer : Posté le 16/02/2014 23:08 | #
Techniquement avec une matrice de 243 par 243 et un programme qui sait la lire on peut faire une IA imbattable.
Les Lists et les matrices ne sont pas compliquées, et sont très utiles, que ce soit en programmation ou en mathématiques.
Je te suggère de t'y mettre, tu verras ça n'est vraiment pas sorcier !
La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !