Le Jeu L`âne Rouge Algorithme Parcours en profondeur Intelligence

Transcription

Le Jeu L`âne Rouge Algorithme Parcours en profondeur Intelligence
Le Jeu L’âne Rouge
Algorithme Parcours en profondeur
Intelligence artificielle
Groupe de travail :
Soufiane AJDDIG
Marouane EL HALLAOUI
Issam SEGAOUI
Mohammed TOUILI
Mohammed TOUKRICHT
Issam KHALIL
Florant NICHIMWI
Sommaire
I-
A propos .......................................................................................................................................... 2
II-
Différents types de jeux .................................................................................................................. 3
III- Description de L’ANE ROUGE et algorithme de recherche en profondeur : ................................... 3
1-
Introduction : ........................................................................................................................... 3
2-
Algorithme de recherche en profondeur : .............................................................................. 4
IV- Réalisation de l’application : ........................................................................................................... 5
i.
En utilisant le langage JavaScript ES6 .......................................................................................... 5
1-
présentation du langage :........................................................................................................ 5
2-
Outils utilisés : ......................................................................................................................... 5
3-
Propriété de réalisation : ......................................................................................................... 6
4-
Démonstration : ...................................................................................................................... 6
ii.
V-
En utilisant le langage JAVA......................................................................................................... 7
1-
Présentation du langage.......................................................................................................... 7
2-
Outils utilisés : ......................................................................................................................... 7
3-
Réalisation : ............................................................................................................................. 7
4-
Demonstration : ...................................................................................................................... 8
Conclusion ....................................................................................................................................... 9
I-
A propos
Intelligence artificielle : Partie de l'informatique qui a pour but la simulation
de facultés cognitives afin de suppléer l'être humain pour assurer des fonctions
dont on convient, dans un contexte donné, qu'elles requièrent de l'intelligence.
Langages : Lisp, Prolog. => Reconnaissance de formes et de la parole,
simulation, jeu, conduite de robots, apprentissage.
L'intelligence artificielle (IA) comprend plusieurs domaines :
 le dialogue automatique : se faire comprendre d'un ordinateur en lui
parlant ;
 la traduction automatique, si possible en temps réel ou très légèrement
différé ;
 le traitement automatique des langues ;
 le raisonnement automatique (systèmes experts) ;
 l'apprentissage automatique ;
 la reconnaissance de formes, des visages et la vision en général ;
 l'intégration automatique d'informations provenant de sources hétérogènes
 l'aide aux diagnostics ;
 l'aide à la décision ;
 la résolution de problèmes complexes, tels que les problèmes d'allocation
de ressources.
 l'assistance par des machines dans les tâches dangereuses, ou demandant
une grande précision.
L'intelligence artificielle est utilisée (ou intervient) dans une variété de domaines
tels que :
 la banque, avec des systèmes experts d'évaluation de risque lié à l'octroi
d'un crédit
 le militaire, avec les systèmes autonomes tels que les drones ;
 les jeux, domaine qui va plus particulièrement nous intéresser ici ;
 la médecine, avec les systèmes experts d'aide au diagnostic ;
II- Différents types de jeux
Un jeu est un terrain d'expérimentation idéal pour l'intelligence artificielle (IA).
Les règles simples et peu nombreuses, les situations bien définies modélisent un
mode simplifié mais quand même intéressant.
Les jeux bien connu « Les Sim's » en est un bon exemple. Pour l'ordinateur, les
choix sont réduits, les configurations faciles à analyser, les conséquences des
choix sont calculables.
Pensons à des jeux comme les échecs, les dames, mais aussi des jeux où le
hasard intervient comme le backgammon, le poker, où l'ordinateur aura à
calculer des probabilités.
Le terme d' « intelligence artificielle » est très pompeux. Certains parlent en ce
domaine de force brute et non pas d'intelligence artificielle. On verra en effet
qu'il s'agira uniquement de calculs et d'exploration d'arbre de jeu.
Il est vrai que l'ordinateur donne l'impression d'une certaine intelligence1
quand il joue contre un humain. L'auteur se souvient encore du choc qu'il a
ressenti quand, dans les années 80, il a joué (et perdu) pour la première fois aux
échecs contre une machine.
Comment cet objet sans vie faisait-il ? C'est ce que nous allons étudier dans ce
chapitre.
III- Description de L’ANE ROUGE et algorithme de
recherche en profondeur :
1- Introduction :
L'âne rouge est un jeu où il faut faire coulisser des pièces de différentes formes.
Il y a 4 types de pièces :




4 petits carrés
1 rectangle horizontal
4 rectangles verticaux
1 grand carré : c'est l'âne rouge
Il y a 2 emplacements vides, correspondant à la surface de 2 petits carrés.
Règle :
Il s'agit de faire sortir l'âne rouge par le bas, au centre du plateau :
Il peut arriver que 2 déplacements soient possibles.
Dans ce cas, la case d'arrivée sera indiquée. Elle dépendra de la position du
curseur sur la pièce.
Plusieurs positions de départ sont proposées, classées par ordre de difficulté.
Certaines sont des variantes de l'âne rouge.
S'il y a bien 5 rectangles, la répartition horizontal/vertical est différente.
Records :
Si vous jouez en étant connecté, votre record de nombre de coups pour chaque
position de départ est enregistré automatiquement.
2- Algorithme de recherche en profondeur :
Construction de l'arbre ``en profondeur'', et recherche de la première solution
ayant moins de K transitions.
Schéma d'appel de l'algorithme:
cherche(E_0,{E_0},K)
fonctioncherche(E_i, Deja_vus, N) retourne un booleen
-- cherche(Ei,Deja_vus,N) = vrai
-- s'il existe une solution a (S,E_i,F,T) en moins de N transitions.
-- Deja_vus est l'ensemble des etats par lesquels on est passe pour aller
de E_0 a E_i.
debut
si E_i est un etat final de F alors retourner vrai finsi
si N=0 alorsretourner faux finsi
Pour tout couple (A_j,E_j) faisant partie de T(E_i)
et tel queE_j n'appartienne pas a Deja_vus faire
si cherche(E_j, Deja_vus U {E_j},N-1)=vrai
alors afficher(A_j,E_j)
retourner vrai
finsi
finpour
retourner faux
fin
IV- Réalisation de l’application :
Deux solutions :
i.
En utilisant le langage JavaScript ES6
1- présentation du langage :
JavaScript est un langage de programmation de scripts principalement employé
dans les pages web interactives mais aussi pour les serveurs3. C’est un langage
orienté objet à prototype, c’est-à-dire que les bases du langage et ses principales
interfaces sont fournies par des objets qui ne sont pas des instances de classes,
mais qui sont chacun équipés de constructeurs permettant de créer leurs
propriétés, et notamment une propriété de prototypage qui permet d’en créer des
objets héritiers personnalisés. En outre, les fonctions sont des objets de première
classe.
Ce langage, créé en 1995 par Brendan Eich, est actuellement à la version 1.8.2.
C'est une implémentation de la troisième version de la norme ECMA-262 qui
intègre également des éléments inspirés du langage Python. La version 1.8.5 du
langage est prévue pour intégrer la cinquième version du standard ECMA4.
2- Outils utilisés :
Editeur SUBLIMTEXT : Sublime Text est un éditeur de texte générique codé
en C++ et Python, disponible sur Windows, Mac et Linux. Le logiciel a été
conçu tout d'abord comme une extension pour Vim, riche en fonctionnalités1.
Depuis la version 2.0, sortie le 26 juin 20122, l'éditeur prend en charge
44 langages de programmation majeurs, tandis que des plugins sont souvent
disponibles pour les langages plus rares.
3- Propriété de réalisation :
Block & Move : contiennent des entités de stockage de variables
GamePuzzel : Recupere l’etat des composants du jeu et contrôle les
entités
GameSolver : Il s’occupe du traitement et de la resolution du jeu en
utilisant un algorithme de recherche en profondeur.
4- Démonstration :
Etat de départ avant le commencement de la procédure de résolution :
Etat final : L’algorithme de recherche a pu résoudre le problème en trouvant un
issu a l’extérieur pour la carré principal.
ii.
En utilisant le langage JAVA
1- Présentation du langage
Le langage Java est un langage de programmation informatique orienté
objet créé par James Gosling et Patrick Naughton, employés de Sun
Microsystems, avec le soutien de Bill Joy (cofondateur de Sun
Microsystems en 1982), présenté officiellement le 23 mai 1995 au SunWorld.
La société Sun a été ensuite rachetée en 2009 par la société Oracle qui détient et
maintient désormais Java.
La particularité et l'objectif central de Java est que les logiciels écrits dans ce
langage doivent être très facilement portables sur plusieurs systèmes
d’exploitation tels que UNIX, Windows, Mac OS ou GNU/Linux, avec peu ou
pas de modifications. Pour cela, divers plateformes et frameworks associés
visent à guider, sinon garantir, cette portabilité des applications développées en
Java.
2- Outils utilisés :
IDE Eclipse :
C’est un éditeur de java.
3- Réalisation :
Block & Move : contiennent des entités de stockage de variables
GamePuzzel : Recupere l’etat des composants du jeu et contrôle les entités
GameSolver : Il s’occupe du traitement et de la resolution du jeu en utilisant un
algorithme de recherche en profondeur.
Fenetre : Assure la partie vue puisque c’est la combinaison des composant
destinés a l’utilisateur.
4- Demonstration :
Normalement dans ce cas en se situe devant 12 etapes, et on a choisi comme etat
initiale celle en dessous.
L’etat initiale :
7
L’etat finale
V- Conclusion
Malgré le niveau de devemloppement du domaine informatique, que,
l’intelligence artificielle est un outil indisponsable pour que l’informatique aie
plus de credibilité et raisons d’existence, ses outils qui assure la resolution des
problemes les plus complexes au cerveau humain, restent solevables en
s’appuyant sur l’experience des autres.