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 08/02/2014 21:47 | #
Il est plus que temps de m'y remettre...
Je participe
- RPG Dragon Quest
Rubik's Cube 3D
Calculatrices :
Graph 35 + (non USB)
Graph 95 (SD), avec une cinquantaine d'add-ins.
Citer : Posté le 08/02/2014 21:51 | #
:aie2: Btl... ton programme fait n'importe quoi :aie2:
Je fais J1vsIA, donc je joue au milieu, mon IA joue ensuite et la ça plante, le prog ne réagit plus, j'appuis sur AC/ON pour quitter et la je me retrouve dans le sous-programme de mon IA
En fait, il ne faut pas toucher au variable HUMAN et moi j'utilise les variables qui correspondent au clavier numérique...
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 08/02/2014 21:56 | #
Ben, le truc c'est que il ne faut pas qu'une des variables d'HUMAN soit égale à zéro, plus le H qu'il ne faut pas toucher, enfin, il me semble.
Citer : Posté le 08/02/2014 21:59 | #
à ok
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 08/02/2014 22:00 | #
Il est plus que temps de m'y remettre...
Je participe
Un revenant, ça faisait longtemps !
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 08/02/2014 22:27 | #
Ah oui mince, je vous ai passé la version dans laquelle je ne protège pas les variables H, U, M, A, N...
Bon, je vais devoir toutes les interdit alors...
Enfin, c'est pas comme si vous aviez besoin de 36 variables non plus.
Wow, même quand je suis arrivé Pie3636 n'étais déjà plus trop actif. C'est cool !
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 09/02/2014 09:48 | #
Je propose de mettre seulement deux points au dernier critère et de rajouter le critère "1 point pour le poids du programme".
La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !
Citer : Posté le 09/02/2014 11:19 | #
Le problème, c'est que c'est déjà en quelque sorte compris dans "l'optimisation du code".
Sinon tu brides les gens, qui auront peur de faire un programme trop volumineux, alors que si leur code est parfaitement optimisé, je ne vois pas ce qu'on peut leur reprocher.
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 09/02/2014 12:08 | #
J'ai terminé mon IA, elle gère toutes les combinaisons possibles (verticales, horizontales et diagonales) et est à la fois offensive et défensive, avec une priorité sur l'attaque. Elle pèse 468 octets (dont les 32 de base)
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 09/02/2014 15:18 | #
bon, bah, je vais participer (si ce n'est qu'un morpion, j'en aurais seulement pour quelques minutes)
-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 09/02/2014 15:29 | #
En testant mon IA, j'ai repéré des erreurs de choix. Je les corrigerai si j'en ai le temps.
Sinon, je me suis bien amusé à coder cette IA, je suis content de mon code et du résultat, ça me fait plaisir
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 09/02/2014 15:35 | #
Sinon, il n'y a pas moyen de savoir si c'est toujours le 2 qui correspond a notre IA? (dans la mat B je veux dire)
Il faudra prendre ça en compte l'hors du test IA vs IA... Le risque est qu'une IA va mal jouer en pensant bien faire si elle doit jouer avec les 1 en étant programmé pour utiliser les 2 comme référence dans la mat B.
Ajouté le 09/02/2014 à 15:36 :
Pour régler le pb, mon IA utilise la variable T pour savoir quel joueur elle joue (a changer manuellement lors du test, je te fais confiance BTL)
-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 09/02/2014 15:43 | #
C'est trop facile Limachi, je me suis cassé la tête pour savoir quel est son numéro. Il suffit de compter le nombre de coups réalisés.
Sinon, je pense que le joueur 1 commence toujours en premier. Exact BTL ?
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 09/02/2014 15:46 | #
bah, je sais pas pourquoi, mais moi, le premier a jouer, c'est le 2 (et c'est l'IA) (je n'ai pas touché aux configs de base)
Ajouté le 09/02/2014 à 15:47 :
sinon, j'ai réussi a faire une IA qui ne peut pas... perdre XD (en tout cas, je n'arrive pas a la battre, et quand elle ce combat elle même, j'ai 100% d'exequo)
-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 09/02/2014 15:49 | #
Très intéressant.
L'idée de faire s'affronter les IA entre elles et surtout de fournir le squelette de base pour que les participants puissent dès le départ en toute égalité se concentrer sur le coeur du problème me rappelle un certain concours récent, mais cette fois-ci dans un contexte bien plus simple et abordable.
Citer : Posté le 09/02/2014 15:50 | #
et je confirme, le premier a jouer mets des 2 (qui correspondent aussi aux croix) et le suivant des 1 (qui correspondent aux ronds), ce qui fait que l'IA peut ne pas savoir qui elle est, et le nombre de coups ne permet pas de le savoirbon, ok, j'ai compris comment je peux calculer si l'IA est première ou deuxième... mais c'est un peux bourrin.
Ajouté le 09/02/2014 à 16:31 :
bon, en fait non, ce n'est pas feçable sans que deux IA identiques ne crashent... bon bah, je vais laisser mon truc de la variable T en début de programme
Ajouté le 09/02/2014 à 16:52 :
Je vais utiliser des labels et des goto, nierk nierk nierk! (et bien entendu, je fais attention, je n'accepterais pas de perte de points parce que j'ai osé utiliser ces fonctions maudites)
-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 09/02/2014 16:53 | #
feçable? omg
Bon moi je tente de programmer une IA en Caml et je verrai si elle est efficace avant de la programmer en Basic!
Timeless Remix
Super Run & Jump
Timeless
Les tests vidéo de Marmotti
Timeless Remix Airwolf
Citer : Posté le 09/02/2014 17:11 | #
Hmm, j'ai pourtant l'impression que ce n'est pas très dur de savoir si c'est à ton tour de commencer ou pas...
Il suffit de compter comme Totoyo l'a dit. Et comme je l'ai dit il y a quelques pages...
Sinon, c'est toujours le joueur 1 qui commence...mais qui met des 2 dans la matrice.
Ok f*ck la logique de ce point de vue là
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 09/02/2014 17:14 | #
L'un de mes premiers programmes a été un jeu de morpion, il y avait un mode difficile où on ne pouvait pas gagner (juste faire égalité), dommage que je l'ai supprimé x)
Citer : Posté le 09/02/2014 17:31 | #
V1 de mon IA finie, le programme pèse... 924 Octets, je suis en train de faire des parties pour le tester, mais il semblerait qu'il soit aussi efficace que prévu (je n'arrive pas a gagner pour le moment, et d'après l'aglo, il devrait être quasiment impossible de la battre)
-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 09/02/2014 17:35 | #
Sinon, tu as réussi à régler le problème de savoir quelle joueur est ton IA?
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