• Aucun résultat trouvé

3.3 Approche préconisée

3.3.3 Composants de l'architecture d'apprentissage

3.3.3.3 L'expert

Dans l'apprentissage par la démonstration, l'expert joue un rôle incontournable. Face à un état particulier de l'environnement, c'est l'expert qui montre l'action adé- quate pour aboutir à un comportement souhaité. Actuellement, on distingue diérents types d'experts allant de l'humain à des agents intelligents. Au premier abord, le choix d'un expert humain semble être un choix idéal. Cependant, ceci n'est pas toujours le cas. En eet, il peut arriver des situations où le choix de l'action idéale est le résul- tat d'un certain nombre d'opérations. Dans ce cas, opter pour un agent serait un bon choix. Toutefois, la mise en place d'un agent nécessite l'utilisation des techniques d'ap- prentissage automatique nécessairement coûteux en temps et demande des compétences particulières.

Pour notre cas, le choix s'est porté sur l'utilisation d'un agent. Ce choix a été motivé par le fait que de nos jours, le jeu Pacman semble attirer l'attention de la communauté des chercheurs en intelligence articielle [18,38,3,25,53,40,56,54]. Le développement d'un agent intelligent va nous permettre d'apprendre ce qui se fait dans ce domaine et, si possible, apporter notre contribution.

7. L'état de la grille de jeu doit être constamment mis à jour durant le jeu an que l'expert ait toujours accès à des informations qui sont à jour.

Particularités liées à l'utilisation d'un agent

L'agent a ceci de particulier qu'il nécessite en entrée une description de l'environnement de jeu et qu'à partir de l'analyse de cette dernière, l'action la meilleure est proposée. Pour développer un agent intelligent, plusieurs approches peuvent être utilisées [43]. Dans ce travail, l'agent que nous avons développé possède les caractéristiques d'un agent de résolution de problèmes [42]. En eet, les caractéristiques de l'environnement de jeu permettent le développement de ce type d'agent :

• Statique : l'environnement reste inchangé quand l'agent est en train de délibérer. • Observable : à tout moment, la conguration du plateau de jeu est totalement

observable.

• Discret : l'exploration s'eectue dans l'ensemble des cases de la grille de jeu et toutes les actions possibles sont connues.

• Déterministe : l'état courant et l'action prise susent pour déterminer l'état sui- vant de l'environnement.

Le processus de fonctionnement de l'agent suit l'algorithme 2. Après avoir mis à jour la représentation interne de la grille de jeu, on détermine la case cible et puis par exploration8, on détermine la solution ; en d'autres mots ; une séquence d'actions. La

séquence d'actions correspond au plus court chemin9 partant de la position courante

vers la case cible. La première action de la solution est proposée pour exécution. Ce processus est exécuté à chaque fois que l'état du jeu est modié. Pour la suite, nous donnons des précisions sur les diérents éléments de l'algorithme.

8. Utilisation de la recherche en largeur dans la représentation de la grille de jeu.

9. Le Pacman se déplaçant sur une grille composée de cases, un chemin est déni comme une séquence de cases suivies pour se rendre d'une position A (considérée comme la position de départ) à une position B(considérée comme la position d'arrivée).

Algorithme 2 agent-Expert-Démonstrateur (grilleJeu, ´etatJeu) retourner une action

entrées : observation, une observation de l'environnement variables : action, une action, initialement vide

´

etat, une description de l'état courant de l'environnement cible, la position de la case cible, initialement nulle

grilleJ eu ← mettre-A-Jour-Grille-Jeu(grilleJeu, observation) cible ←déterminer-Case-Cible(grilleJeu)

action ←déterminer-Meilleure-Action(grilleJeu, cible) retourner action

Déterminer la case cible

Dans notre stratégie, le Pacman a constamment un objectif à atteindre. En tout temps de jeu, le Pacman doit se déplacer soit vers une pac-gomme, une super pac-gomme ou un fantôme. La case sur laquelle se trouve un élément que le Pacman cherche à atteindre est considérée comme la case cible. Le choix de la case cible va dépendre de l'état de jeu déterminé par l'existence ou non des eets d'une super pac-gomme. Pour cette tâche, nous suivons l'algorithme 3.

Algorithme 3 déterminer-Case-Cible(´etatJeu) retourner une position

entrées : ´etatJeu, une description de l'état courant de l'environnement variables statiques : position, la position de la case cible sur la grille de jeu Si aucune super pac-gommes n'est active alors

Si il reste des super pac-gommes alors

position ← localiser-Super-pac-gomme-la-plus-proche Sinon

position ← localiser-Pac-gomme-la-plus-proche Sinon

Si il y a des fantômes alors

position ←localiser-Fantôme-le-plus-proche Sinon

position ←localiser-Pac-gomme-la-plus-proche. retourner position

Il faut remarquer que le but à cette étape est de localiser des éléments évoluant sur le plateau étant donnée la distance qui les sépare de la position courante, c'est à dire

celle du Pacman. La question est alors de savoir la métrique de distance à utiliser ? Pour ce faire, analysons les caractéristiques liées au déplacement dans la grille de jeu. A partir d'une case de la grille de jeu, seul un déplacement vers une case adjacente est possible. En eet, le déplacement en diagonale est strictement interdit. Par conséquent, seuls les déplacements en verticale et en horizontale sont possibles10. Étant données ces

caractéristiques, nous avons choisi d'utiliser la distance de Manhattan. La distance de Manhattan11consiste en la somme des distances verticales et horizontales de la position

courante vers un élément du plateau de jeu.

Cible Cible

Avec case fermée Aucune case fermée

Distance de Manhattan

Figure 3.3  Distance de Manhattan

La gure 3.3 montre une illustration du calcul de la distance de Manhattan. Il faut remarquer que dans le calcul de cette distance, uniquement la position sur la grille de jeu est considérée. La conguration12 des cases de jeu n'est pas considérée. C'est une

stratégie très simple mais très ecace. En eet, en tout temps, le Pacman aura une cible vers laquelle se diriger.

Déterminer la meilleure action

Le but à cette étape est de calculer les plus courts chemins13 que le Pacman peut

suivre de la position courante à la case cible, choisir le meilleur chemin et en déduire la meilleure action. Nous avons établi que le meilleur chemin est le chemin le plus court.

10. Nous l'avions précisé dans la description du jeu Pacman.

11. La distance de Manhattan [6] entre deux points A et B de coordonnées respectives (xA, xB)est

dénie par : d(A, B) = |xB− xA| + |yB− yA|.

12. Case fermée ou case ouverte

13. Le Pacman se déplaçant sur une grille composée de cases, un chemin est déni comme une séquence de cases suivies pour se rendre d'une position A (considérée comme la position de départ) à une position B(considérée comme la position d'arrivée).

Un chemin sera considéré comme le plus court s'il contient moins de cases que les autres étant donnée la conguration du plateau de jeu. La meilleure action est celle permettant de se rendre à la première case de la solution à partir de la case courante. L'algorithme4

illustre la stratégie adoptée.

Algorithme 4 déterminer-Meilleure-Action(representationGrilleJeu, caseCible) retourner une action, parmi les actions que le Pacman peut exécuter

entrées : representationGrilleJeu, représentation interne de la grille de jeu caseCible, position sur la grille de jeu

variables : meilleurChemin, une liste, initialement vide chemins, une liste, initialement vide

caseCourante, position sur la grille de jeu, initialisée à zéro action, une action parmi celles que le Pacman peut exécuter actions, une liste, initialement vide

caseCourante ←déterminer-Case-Courante(representationGrilleJeu) actions ← déterminer-Actions-Possibles(grilleJeu, caseCourante) Si aucune super pac-gommes n'est active alors

grilleJ eu ← réorganiser-Grille-Jeu(representationGrilleJeu) Sinon

grilleJ eu ← representationGrilleJ eu // 1. Trouver les chemins possibles

Pour chaque a dans actions faire unChemin ← {}

unChemin ← plus-Court-Chemin(a, grilleJeu, caseCible, caseCourante) chemins ← ajouter-Chemin(unChemin)

//2. Déterminer le meilleur chemin et l'action qu'il propose meilleurChemin ← Min(chemins)

action ←déterminer-Action-A-Exécuter(grilleJeu, meilleurChemin, caseCourante) retourner action

Recherche du plus court chemin

La recherche du plus court chemin s'eectue à chaque mise à jour de l'état du jeu, c'est à dire quand l'expert doit prendre une décision. Le but est de trouver le chemin le plus court entre une case de départ et une case cible. Nous avons choisi d'aborder ce problème comme pouvant être résolu par l'exploration. L'exploration se fait en utilisant la recherche en largeur [42]. De la façon dont nous avons modélisé la grille de jeu, une résolution de la sorte semble être raisonnable. La recherche du plus court chemin est

dépendante de l'état du jeu. Par exemple, s'il n'y a aucune super pac-gomme active, tous les chemins recherchés doivent éviter les fantômes et les cases fermées. Par contre, si une super pac-gomme est active, le plus court chemin doit éviter uniquement les cases fermées. Comment alors savoir si une case qu'on veut traiter est ouverte ou fermée ? Dans le cas où elle est ouverte, comment savoir si elle contient un fantôme ou pas ? Les réponses à toutes ces questions résident dans la modélisation de la grille de jeu. Nous avons déni une stratégie qui consiste à modéliser la grille de jeu de façon à faire ressortir la conguration de l'environnement surtout ce qui a trait à la position des fantômes et de l'état des cases :

• Si une super pac-gomme est active, on eectue l'exploration dans la conguration de base mise en place lors de la création des données de jeu. La conguration de l'état des cases de la grille de jeu reste inchangée : 0 pour une case fermée et 1 pour une case ouverte

• Si aucune super pac-gomme n'est active, nous procédons à une restructuration partielle de la grille de jeu avant de procéder à l'exploration. La restructuration de la grille de jeu a pour objectif de faire des modications dans la conguration de la grille de jeu an d'indiquer la position des fantômes. Chaque case contenant un fantôme est considérée comme une case fermée14 le temps de l'exploration.

C'est une stratégie très simple mais très ecace. En eet, en considérant une case sur laquelle est située le fantôme comme fermée, l'algorithme d'exploration va la considérer comme non pertinente et elle ne sera pas comprise dans la solution. Par conséquent, dans les solutions proposées, il n'y aura jamais une séquence d'actions contenant une case avec un fantôme si la super pac-gomme n'est pas active. L'exemple à la gure3.4 montre une représentation de la grille de jeu dans le cas où le Pacman doit éviter des fantômes. Après le calcul du meilleur chemin, la meilleure action est trouvée et proposée pour exécution.

Documents relatifs