Différences entre les pages « Intelligence artificielle DIY imbatable à l'hexapion » et « Le jeu de Simon »

 
 
Ligne 1 : Ligne 1 :
 
{{Tuto Details
 
{{Tuto Details
|Main_Picture=intelligence_artificielle_DIY_imbatable___l_hexapion_20200126_204813.jpg
 
 
|Licences=Attribution (CC-BY)
 
|Licences=Attribution (CC-BY)
|Description=l'Hexapion est un jeu d'échec simplifié, il sert de support à l'entrainement d'une Intelligence artificielle en boites  d'allumettes.
+
|Description=Nous allons créer le jeu du Simon version Arduino !
|Disciplines scientifiques=Computing, Mathematics
+
|Disciplines scientifiques=Arduino
|Difficulty=Technical
+
|Difficulty=Easy
|Duration=3
+
|Duration=15
|Duration-type=hour(s)
+
|Duration-type=minute(s)
|Tags=Intelligence artificielle, IA
+
}}
 +
{{Introduction
 +
|Introduction=Nous allons créer le jeu de Simon version Arduino !
 +
 
 +
Ce tutoriel vous permettra de découvrir Arduino ainsi que la programmation tout en créant le jeu de Simon.
 +
 
 +
À noter que c’est une version simplifiée que je vous propose, on peut aller plus loin, notamment en créant un jeu autonome avec une boite, un haut parleur, une alimentation ou encore en améliorant le programme.
 
}}
 
}}
{{Introduction}}
 
 
{{Materials
 
{{Materials
 
|ItemList={{ItemList
 
|ItemList={{ItemList
|Item=Imprimante 3D
+
|Item=Arduino Uno
 
}}{{ItemList
 
}}{{ItemList
|Item=Imprimante
+
|Item=LED
 
}}{{ItemList
 
}}{{ItemList
|Item=Crayon
+
|Item=Résistance
 
}}{{ItemList
 
}}{{ItemList
|Item=Ciseaux
+
|Item=Bouton poussoir
 
}}{{ItemList
 
}}{{ItemList
|Item=Papier
+
|Item=Câble Dupont
 +
}}{{ItemList
 +
|Item=Breadboard
 
}}
 
}}
 
|Tuto_Attachments={{Tuto Attachments
 
|Tuto_Attachments={{Tuto Attachments
|Attachment=intelligence_artificielle_DIY_imbatable___l_hexapion_modeDemploiExapion2.pdf
+
|Attachment=Le_jeu_de_Simon_le_jeu_de_simon_code.txt
}}{{Tuto Attachments
 
|Attachment=Intelligence_artificielle_DIY_imbatable___l_hexapion_Pion.stl
 
}}{{Tuto Attachments
 
|Attachment=Intelligence_artificielle_DIY_imbatable___l_hexapion_perle.stl
 
 
}}
 
}}
 +
|ExternalAttachmentsLinks={{ExternalAttachmentsLinks}}
 
}}
 
}}
 
{{Tuto Step
 
{{Tuto Step
|Step_Title=Imprimer les éléments papier du jeu.
+
|Step_Title=Réunir le materiel
|Step_Content=Imprimez les éléments suivant en téléchargeant le fichier joint (voir à côté de la liste du matériel) :
+
|Step_Content=IL vous faut:  
  
*le plateau de 9 cases.
 
*les 24 visuels de boîtes d'allumettes (en couleur ou Noir & blanc suivant l'imprimante dont vous disposez).
 
*coloriez les visuels de boîtes d'allumettes si nécessaire.
 
*le tableau de suivi des victoires
 
  
Avec une imprimante imprimant en noir et blanc, choisissez le bon fichier et coloriez à la main !
+
- 4 Led de couleur différentes
|Step_Picture_00=intelligence_artificielle_DIY_imbatable___l_hexapion_1200px-FabriqueTonHexapion.jpeg
 
|Step_Picture_01=intelligence_artificielle_DIY_imbatable___l_hexapion_plateaujeu.jpg
 
|Step_Picture_02=intelligence_artificielle_DIY_imbatable___l_hexapion_suiviVictoires.jpg
 
|Step_Picture_03=intelligence_artificielle_DIY_imbatable___l_hexapion_visuelBoitesAlumettes.jpg
 
|Step_Picture_04=intelligence_artificielle_DIY_imbatable___l_hexapion_visuelBoitesAlumettesNB.jpg
 
}}
 
{{Tuto Step
 
|Step_Title=Trouvez les pièces du jeu !
 
|Step_Content=Pour jouer à l'Hexapion, il vous faut trouver des pièces pour le jeu. Pour cela, vous pouvez fouiller dans votre vieux coffre à jouets ou fouiner dans un magasin pour trouver :
 
  
*10 perles vertes
+
- 9 résistances de 220 ohms
*14 perles rouges
 
*13 perles bleues
 
*18 perles jaunes
 
*3 pions blancs, 3 pions noirs (de type jeu d'échec ou de dame)
 
  
Et sinon, vous pouvez les faire vous-même, par exemple avec une imprimante 3D.
+
-5 boutons poussoirs ( 4 pour activer les leds et 1 pour initialiser le jeu )
  
<br />
+
- 11 grand fils de connexion et 5 petits de couleur différents pour mieux      visualiser
}}
 
{{Tuto Step
 
|Step_Title=Pour imprimer les pièces en 3D
 
|Step_Content=Il y a 2 types de pièces :
 
 
 
*les pions à imprimer en blanc et en noir
 
*les perles à imprimer en rouge, vert, jeune et bleu.
 
 
 
Voici les quantités :
 
 
 
*10 perles vertes
 
*14 perles rouges
 
*13 perles bleues
 
*18 perles jaunes
 
*3 pions blancs, 3 pions noirs
 
  
Sources des fichiers : ces fichiers sont librement réutilisable en citant les auteurs (licence CC-By).
+
-une alimentation soit une pile dans le cas de la version autonome ou un ordi tout simplement
  
*[https://www.thingiverse.com/thing:1371033 le pion] une réalisation de [https://www.thingiverse.com/rpreston01 rpreston01]
 
*[https://www.thingiverse.com/thing:115644 la perle] une réalisation de [https://www.thingiverse.com/3dPrintNewsNow 3dPrintNewsNow]
 
  
Vous trouverez ces deux fichiers joints à cette page à côté du matériel
+
et bien sur, une carte arduino uno et une bread board !
|Step_Picture_00=intelligence_artificielle_DIY_imbatable___l_hexapion_pionen3D.jpg
 
|Step_Picture_01=intelligence_artificielle_DIY_imbatable___l_hexapion_perleen3D.jpg
 
|Step_Picture_02=intelligence_artificielle_DIY_imbatable___l_hexapion_20200126_204854.jpg
 
 
}}
 
}}
 
{{Tuto Step
 
{{Tuto Step
|Step_Title=La règle du jeu
+
|Step_Title=Branchements
|Step_Content=1) Un pion ne peut se déplacer que d’une case en ligne droite (avancer).
+
|Step_Content=On réalise le schéma ci contre, en respectant bien les positions et en ajoutant l'alimentation.
 
+
|Step_Picture_00=Le_jeu_Simon_750x750_555453168f2b43_61252307_RvMuWsR8yZ.png
2) Un pion peut manger un autre : en diagonale (il prend la place du pion mangé qui est retiré du jeu).
+
|Step_Picture_00_annotation={"version":"3.5.0","objects":[{"type":"image","version":"3.5.0","originX":"left","originY":"top","left":0,"top":-0.03,"width":680,"height":246,"fill":"rgb(0,0,0)","stroke":null,"strokeWidth":0,"strokeDashArray":null,"strokeLineCap":"butt","strokeDashOffset":0,"strokeLineJoin":"miter","strokeMiterLimit":4,"scaleX":0.88,"scaleY":0.88,"angle":0,"flipX":false,"flipY":false,"opacity":1,"shadow":null,"visible":true,"clipTo":null,"backgroundColor":"","fillRule":"nonzero","paintFirst":"fill","globalCompositeOperation":"source-over","transformMatrix":null,"skewX":0,"skewY":0,"crossOrigin":"","cropX":0,"cropY":0,"src":"https://www.wikidebrouillard.org/images/1/18/Le_jeu_Simon_750x750_555453168f2b43_61252307_RvMuWsR8yZ.png","filters":[]}],"height":217,"width":600}
 
 
3) Il y a trois manières de gagner à l’Hexapion :
 
 
 
*Amener un de ses pions sur la ligne opposée dans le camp adverse
 
*Prendre tous les pions de l’adversaire
 
*Bloquer l’adversaire (qui ne peut plus prendre  ou avancer à son tour)
 
 
}}
 
}}
 
{{Tuto Step
 
{{Tuto Step
|Step_Title=Jouez contre l'IA !
+
|Step_Title=Le code
|Step_Content='''Déroulement d’une partie :'''
+
|Step_Content=Il vous suffit ici de copier le code que j'ai copier dans les fichiers, puis de le coller dans Arduino.
 
 
*L’animateur joue le rôle de l’IA. Il a les pions noirs.
 
*Le joueur humain a les pions blancs, c’est lui qui commence la partie et il jouera comme il l’entend.
 
 
 
C'est le joueur humain qui commence car il faut de la "matière" pour que l'IA puisse fonctionner.
 
 
 
L’animateur joue pour l’IA en utilisant les boites d'allumettes qui représentent des états du jeu. Les positions équivalentes du point de vue des actions de l’IA ne sont pas représentées (par exemple, seule la boite avec le pion de gauche avancé est représenté, c’est l’équivalent de la situation avec le pion droit avancé).
 
 
 
 
 
'''Tour 1 :''' Le joueur humain avance un pion.
 
 
 
'''Tour 2 :''' L’IA joue avec une des boites marquées '''2'''.
 
 
 
 
 
L’animateur prend la boite d'allumette correspondant à la situation de jeu et tire une perle au hasard.
 
 
 
Il joue le coup de la couleur indiquée et garde la perle (il la pose sur la boite par exemple).
 
 
 
 
 
'''Tour 3 :''' Il y a deux situations possibles : le joueur humain gagne ou bien la partie continue.
 
 
 
*Si le joueur humain gagne, l’IA estime que son coup était mauvais, on retire la perle du jeu, c’est ainsi que l’IA apprend !
 
*Si la partie continue, l’IA estime que son coup était ni bon ni mauvais, on remet la perle dans la boite.
 
 
 
'''Tour 4 :''' L’IA joue avec une des boites marquées 4. l’animateur tire une perle  au hasard et joue pour l’IA. Il n’y a que 2 résultats possibles :
 
 
 
*L’IA gagne, dans ce cas, l’IA estime que son coup était bon, on remet la perle dans la boite.
 
*Le jeu peut continuer. l’IA estime que son coup n'était ni bon ni mauvais, on garde la perle (il la pose sur la boîte par exemple).
 
 
 
'''Tour 5''' : ce tour possède la même mécanique de jeu que le tour 3.
 
  
si l’IA perd, la perle du tour 4 est retirée du jeu sauf si c’est la dernière perle. Les autres perles sont remises dans leurs boîtes.
 
  
Etc...
+
J'ai pris de commenter chaque ligne pour que vous le compreniez.
 
}}
 
}}
 
{{Notes
 
{{Notes
|Observations=Au fur et a mesure des parties, les perles correspondantes aux mauvais coups sont retirées, l’IA apprend et ne conserve que les coups qui lui font gagner.
+
|Observations=C'est tout simple, on commence le jeu en appuyant sur le premier bouton, on mémorise bien la suite de couleur et une fois qu' elle est finis  on presse les boutons dans le bonne ordre.
 
 
 
 
L’Hexapion est très fort au bout de 4 à 6 défaites et quasi imbattable à 8-10.
 
|Avertissement=Pensez à noter les victoires pour bien mesurer ce qu'il se passe.
 
|Explanations=L’Hexapion est un jeu dit '''« résolu »'''. Un jeu résolu est un jeu dont le résultat (gagner, perdre ou match nul) peut être correctement prédit à partir de n'importe quelle position, en supposant que les deux joueurs jouent à la perfection. Exemples de jeux résolus : Morpion (qui s’appelle aussi Tic-Tac-Toe ou OXO), puissance 4, Awalé, ...
 
 
 
Les boîtes d’allumettes représentent l’arbre des possibles du jeu dans son intégralité.
 
 
 
Chaque fois que l’IA perd, c’est une des branches de l’arbre qui mène à la défaite de l’IA qui est coupée. Petit à petit il y a de moins en moins de perles dans les boîtes, c’est-à-dire qu’il y a de moins en moins de possibilité de perdre pour l’IA.
 
 
 
Si il ne reste plus qu’une perle par boîte, il est impossible de gagner contre l’IA.
 
 
 
Dans ce système d’IA, c’est l’humain qui crée la donnée nécessaire au système pour apprendre.
 
 
 
C’est un apprentissage qui est '''supervisé''' puisque c’est nous qui fixons les règles de ce qu’est un « bon coup » ou un « mauvais coup ».
 
 
 
Notre IA possède également deux atouts de l’informatique :
 
 
 
*Une mémoire parfaite
 
*La capacité de répétition
 
 
 
Ainsi la machine ne fait jamais deux fois la même erreur.
 
 
 
 
 
Ce jeu permet d’illustrer ce qu’est '''l’apprentissage par renforcement''' utilisé en IA, de voir émerger un algorithme optimal et de s’interroger sur '''la notion d’« intelligence »''' dans ce  système (particulièrement sur l’intelligence d’un système de boîtes d’allumettes !).
 
|Deepen='''Conclusion'''
 
 
 
Pour finir, ce jeu peut également servir à faire émerger des stratégies face à la machine, comme prendre des risques qui paraîtraient illogiques contre un humain, afin d'explorer des scénarios dans lesquels l'IA n'a pas encore appris.
 
 
 
On peut également s'interroger sur la méthode pédagogique ou d'apprentissage à adopter, puisqu’au lieu de « punir » en enlevant la perle indésirable, on pourrait aussi bien « récompenser » en ajoutant par exemple une perle de même couleur à chaque coup gagnant de l'IA. Ce procédé a d’ailleurs un avantage puisque s’il permet d’améliorer les performances de l’IA d’un point de vue statistique, il laisse toujours une opportunité au joueur humain de gagner.
 
|Applications=AlphaGo Zero, un programme qui bat les joueur du jeu de GO, est une nouvelle technique d'apprentissage par renforcement où l'ordinateur apprend en étant son propre professeur.
 
|Related=Dans le principe, tous les jeux résolus se prêtent bien aux démonstrations d’apprentissage par renforcement.
 
 
 
Il existe des variantes pour le jeu de Nîm (qui vous permettra de recycler vos allumettes) ou encore du Morpion (mais il vous faudra alors 304 boites d’allumettes).
 
 
 
L’implémentation dans un programme devient alors plus intéressante et vous pourrez trouver des exemples sous Scratch ou en Python.
 
 
 
Dans ce dernier cas, quelques instructions conditionnelles permettront à l’algorithme d’explorer tout seul l’ensemble des options possibles en jouant contre lui-même.
 
 
 
Ce qui permet aux apprenants de coder eux-mêmes leur IA et de voir émerger la stratégie optimale au bout de quelques centaines de parties soit quelques secondes pour l’ordinateur.
 
 
 
 
 
Exemples sur scratch en anglais : https://en.scratch-wiki.info/wiki/Artificial_Intelligence
 
 
 
Si on créait d’autre IA en boite d’allumettes pour d’autres jeux cela prendrait des proportions énormes :
 
 
 
* Jeu du Morpion : 304 boites d’allumettes.
 
* Jeu du moulin : environ 10 milliards de boites d’allumettes soit le volume d’une sphère de 41 mètres de rayon.
 
* Puissance 4 :  4 531 985 219 092 (près de 4 500 milliards !), une sphère de rayon de 302 m.
 
* Les dames : Une sphère de 151 km de rayon (5.10<sup>24</sup> boites).
 
* Les échecs : une sphère dont le centre est le soleil et qui irait presque jusque Neptune (10<sup>43</sup> boites pour 4.10<sup>12</sup> mètres).
 
* Le jeu de GO : une sphère dont le rayon serait de 10<sup>27</sup>fois la taille de l’univers observable (10<sup>170</sup> boites pour 8.10<sup>54</sup> mètres).
 
 
 
Sources : Building MENACEs for other games - https://www.mscroggs.co.uk/blog/52
 
|Objectives=Comprendre ce qu’est '''l’apprentissage par renforcement''' utilisé en Intelligence Artificielle.
 
|Animation='''Conseils d’animation :'''
 
  
Pour chaque partie notez qui gagne pour constater l’évolution du nombre de victoire de l’IA.
 
  
vous pouvez confier le rôle de l’IA à des participants.
+
Si la suite à bien été recopiée toutes les leds vont clignoter une fois dans le cas contraire elles vont clignoter 3 fois, vous avez perdu !
 +
|Objectives=Découvrir les bases d'Arduino et de électricité, en expliquant à quoi sert chaque élément: la résistance, la led, les fils....
  
Il est possible de faire appel à l’intelligence collective en en prenant l’avis du groupe pour chaque coup.
 
  
Vous pouvez faire tourner les personnes qui incarnent le joueur.
+
Pour un public plus avisé on pourra se pencher sur le code en expliquant par exemple:  les différentes parties d'un code void setup () (ce qui est fais qu'une fois/ la pré-configuration) et void loop () ( ce qui est répété à l'infini)  ou encore se pencher sur les différentes fonctions.  
  
L’algorithme converge au bout d’une dizaine partie environ (regardez le nombre de perles extraites !).
+
Pour que vous puissiez le comprendre et l'expliquer j'ai commenté chaque ligne et si vous souhaiter aller plus loin j'ai mis un lien dans les sources :)
|Notes=*Une machine en boîtes d’allumettes qui apprend à jouer au Morpion - Le 26 février 2016  - Ecrit par  Lisa Rougetet : https://images.math.cnrs.fr/Une-machine-en-boites-d-allumettes-qui-apprend-a-jouer-au-Morpion.html
+
|Notes=https://eskimon.fr/tuto-arduino-105-le-langage-arduino-12
*Le MOOC Class'code sur l'IA : https://www.fun-mooc.fr/courses/course-v1:inria+41021+session01/about
 
 
}}
 
}}
 
{{Tuto Status
 
{{Tuto Status
|Complete=Published
+
|Complete=Draft
 
}}
 
}}

Version du 19 mai 2021 à 10:53

Auteur avatarEmileOOO | Dernière modification 19/05/2021 par EmileOOO

Pas encore d'image

Nous allons créer le jeu du Simon version Arduino !
Licence : Attribution (CC-BY)

Introduction

Nous allons créer le jeu de Simon version Arduino !

Ce tutoriel vous permettra de découvrir Arduino ainsi que la programmation tout en créant le jeu de Simon.

À noter que c’est une version simplifiée que je vous propose, on peut aller plus loin, notamment en créant un jeu autonome avec une boite, un haut parleur, une alimentation ou encore en améliorant le programme.
  • Fichiers

Étape 1 - Réunir le materiel

IL vous faut:


- 4 Led de couleur différentes

- 9 résistances de 220 ohms

-5 boutons poussoirs ( 4 pour activer les leds et 1 pour initialiser le jeu )

- 11 grand fils de connexion et 5 petits de couleur différents pour mieux visualiser

-une alimentation soit une pile dans le cas de la version autonome ou un ordi tout simplement


et bien sur, une carte arduino uno et une bread board !

Étape 2 - Branchements

On réalise le schéma ci contre, en respectant bien les positions et en ajoutant l'alimentation.




Étape 3 - Le code

Il vous suffit ici de copier le code que j'ai copier dans les fichiers, puis de le coller dans Arduino.


J'ai pris de commenter chaque ligne pour que vous le compreniez.

Comment ça marche ?

Observations : que voit-on ?

C'est tout simple, on commence le jeu en appuyant sur le premier bouton, on mémorise bien la suite de couleur et une fois qu' elle est finis on presse les boutons dans le bonne ordre.


Si la suite à bien été recopiée toutes les leds vont clignoter une fois dans le cas contraire elles vont clignoter 3 fois, vous avez perdu !

Éléments pédagogiques

Objectifs pédagogiques

Découvrir les bases d'Arduino et de électricité, en expliquant à quoi sert chaque élément: la résistance, la led, les fils....


Pour un public plus avisé on pourra se pencher sur le code en expliquant par exemple: les différentes parties d'un code void setup () (ce qui est fais qu'une fois/ la pré-configuration) et void loop () ( ce qui est répété à l'infini) ou encore se pencher sur les différentes fonctions.

Pour que vous puissiez le comprendre et l'expliquer j'ai commenté chaque ligne et si vous souhaiter aller plus loin j'ai mis un lien dans les sources :)

Sources et ressources

https://eskimon.fr/tuto-arduino-105-le-langage-arduino-12

Dernière modification 19/05/2021 par user:EmileOOO.

Commentaires

Draft