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 28/06/2015 00:31 | #
Le fait qu'au bout de 9 jours on ait l'impression de déterrer les topics est bien représentatif de l'activité du forum. ^^
Faut croire que oui car en 9 jours le sujet a eu le temps de passer en "deuxième page" des notifications de la boite de réception !
Sinon, pour le langage, personnellement peu m'importe, même si il me semble que le basic pouvait amener son petit lot de "fun" supplémentaire peut-être.
Citer : Posté le 28/06/2015 07:30 | #
Après, on peut peut-être en faire une en C, s'il y a suffisamment de gens motivés?
Personnellement, ça m'intéresse. Et puis, vu que ça s'étend sur un bon bout de temps, on a moins le problème des CPC... ^^
Par contre, tu veux pas relire le critère que t'avais mis pour le Basic ? Parce que...
Citer : Posté le 28/06/2015 10:07 | #
J'ai quelques idées de jeu
Faut juste que je les codes, j'en ai pour la semaine, si en juillet on peut commencer ça pourrait être cool
Citer : Posté le 28/06/2015 10:14 | #
Je reste sur le Basic, vous connaissez mon niveau en C
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 28/06/2015 10:32 | #
Et pourquoi n'autoriserions-nous pas les deux langages ? Le seul critère serait alors la performance de l'IA, plutôt que sa taille ou sa vitesse, à mon avis c'est ce qui compte le plus
Citer : Posté le 28/06/2015 11:24 | #
Citer : Posté le 28/06/2015 11:36 | #
L Intelligence artificielle sera tel encore sur le morpion ou un truc plus compliquer sera proposé ?
- Kirby's DreamLand : Gobe , Gobe , Gobe !!!
- L'invasion Seanchans : Détruit la flotte ennemis a bord du "Danseur des vagues".
Citer : Posté le 28/06/2015 12:00 | #
Un peu plus compliqué, mais pas trop non plus
Citer : Posté le 28/06/2015 12:05 | #
Ok . La derniere fois y a t il eu des algo min max alpha beta ?
- Kirby's DreamLand : Gobe , Gobe , Gobe !!!
- L'invasion Seanchans : Détruit la flotte ennemis a bord du "Danseur des vagues".
Citer : Posté le 28/06/2015 12:22 | #
Un algo min max alpha bêta ? C'est une fonction pour approximer un calcul de norme, pas une IA... ?
Citer : Posté le 28/06/2015 12:29 | #
Pourquoi pas alors, mettre les 2 concours en parallèle. Même si je ne pense pas qu'on pourra faire des combats entre IA basic et en C .
En notant plus sévèrement les IA en C, et en voyant la puissance des IA contre des humains, on pourrait avoir un classement global ensuite.
Mais c'est vrai qu'il faudra revoir tous les critères dans ce cas la.
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 28/06/2015 12:31 | #
C'est toujours difficile de comparer en profondeur des programmes Basic et C...
Citer : Posté le 28/06/2015 12:38 | #
Si tu veux, quand Neotux et moi, on avait imaginé ce projet de concours, on voulait absolument rester en basic parce que dans ce cadre la, le "vrai" programmeur peut mieux s'exprimer. Il va devoir ruser d'ingéniosité pour optimiser son programme, il va devoir faire des choix entre puissance de l'IA et rapidité, le concours est ouvert à tout le monde...
En C, tu peux reprendre des types d'algorithmes tout fait et actés comme les meilleurs, ou bien carrément même reprendre l'algorithme tel quel. Tu peux tout écrire à l'ancienne et sans faire attention à ton code, de toute façon la vitesse ne sera pas un problème... (On ne code pas encore des IA d'échec )
Mais en même temps, je conçois parfaitement que pour tous ceux passé au C (dont moi), c'est très dur de se remettre à programmer en basic.
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 28/06/2015 18:13 | #
Ok . La derniere fois y a t il eu des algo min max alpha beta ?
Un algo min max alpha bêta ? C'est une fonction pour approximer un calcul de norme, pas une IA... ?
Ce sont des algos utilisés pour les IAs d'échecs non ?
Pourquoi pas alors, mettre les 2 concours en parallèle. Même si je ne pense pas qu'on pourra faire des combats entre IA basic et en C .
En notant plus sévèrement les IA en C, et en voyant la puissance des IA contre des humains, on pourrait avoir un classement global ensuite.
Mais c'est vrai qu'il faudra revoir tous les critères dans ce cas la.
Je plussoie le parallélisme. Je tient vraiment à participer en C !
Après je conçois qu'il y ait plus de challenge et de potentiels participants en Basic.
Pong400
PierrePaCiseaux (CP400)
Les Triangles
Menu
ASCII
Nombres premiers
Citer : Posté le 28/06/2015 18:17 | #
Hmm, je comprends mieux l'idée...
Après, ce qu'on peut faire aussi c'est mesurer la quantité de code source en Basic et en C, mesure la vitesse en tenant compte des différences de puissance et estimer la qualité de l'IA selon ces critères.
Qu'en penses-tu ?
Citer : Posté le 28/06/2015 18:24 | #
L'algo min max est possible lorsque le jeu se déroule tour par tour par contre alpha beta est utilisé en jeu d’échec car les possibilité ce multiplie de façon exponentielle selon la couche de jeu que l'on regarde . couche de jeu = le nombre de coup qu'on prédit à l'avance.
- Kirby's DreamLand : Gobe , Gobe , Gobe !!!
- L'invasion Seanchans : Détruit la flotte ennemis a bord du "Danseur des vagues".
Citer : Posté le 28/06/2015 18:41 | #
Pourquoi pas alors, mettre les 2 concours en parallèle.
Excellente idée.
L'algo min max est possible lorsque le jeu se déroule tour par tour par contre alpha beta est utilisé en jeu d’échec car les possibilité ce multiplie de façon exponentielle selon la couche de jeu que l'on regarde . couche de jeu = le nombre de coup qu'on prédit à l'avance.
Tu as des liens ? Je ne connais pas ces algorithmes...
Citer : Posté le 28/06/2015 19:04 | #
@Lephe Voici un lien que l'on peu utiliser http://openclassrooms.com/courses/l-algorithme-min-max
- Kirby's DreamLand : Gobe , Gobe , Gobe !!!
- L'invasion Seanchans : Détruit la flotte ennemis a bord du "Danseur des vagues".
Citer : Posté le 28/06/2015 19:09 | #
Merci, c'est assez instructif (la manière dont je concevais une IA, finalement).
Citer : Posté le 28/06/2015 19:10 | #
Oh ! Je connaissais un truc que Lephe ne connaissait pas ! \o/
Pong400
PierrePaCiseaux (CP400)
Les Triangles
Menu
ASCII
Nombres premiers
Citer : Posté le 28/06/2015 19:26 | #
Et pourquoi n'autoriserions-nous pas les deux langages ?
On autorise les 2, mais on fait ensuite un classement pour le Basic casio et pour le C (voir un avec les 2 pour que Lephenixnoir écrase même les participants en )