0% ont trouvé ce document utile (0 vote)
4 vues4 pages

Agent Réactif : Simulation en Grille 8x8

Ce document présente un TP sur la création d'un agent réactif dans une grille, visant à comprendre la prise de décision locale dans un environnement inconnu. Les étudiants doivent implémenter des fonctions pour gérer les mouvements et les capteurs d'un robot dans une grille 8x8, ainsi que des stratégies de décision basées sur des règles simples. Le TP inclut également des simulations et des réflexions sur le comportement de l'agent, notamment sur la nécessité de mémoire et les améliorations possibles de la stratégie.

Transféré par

nassimatarlamani
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
4 vues4 pages

Agent Réactif : Simulation en Grille 8x8

Ce document présente un TP sur la création d'un agent réactif dans une grille, visant à comprendre la prise de décision locale dans un environnement inconnu. Les étudiants doivent implémenter des fonctions pour gérer les mouvements et les capteurs d'un robot dans une grille 8x8, ainsi que des stratégies de décision basées sur des règles simples. Le TP inclut également des simulations et des réflexions sur le comportement de l'agent, notamment sur la nécessité de mémoire et les améliorations possibles de la stratégie.

Transféré par

nassimatarlamani
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

ENSAM – Casablanca Année Universitaire 2025-2026

Département Génie Département


des Systèmes Mécaniques Industriels Pr. El mazhari Aya

Intelligence Artificielle

TP 2 : Agent Réactif dans une Grille


Objectifs du TP

• Comprendre la prise de décision locale dans un environnement inconnu.

• Implémenter un agent réactif se déplaçant dans une grille.

• Simuler les capteurs (murs, obstacles) et les actions (avancer, tourner).

• Observer les limites des agents sans mémoire.

Un robot est placé dans une grille (grid) de taille 8×8.

Chaque case vaut 0 (libre) ou 1 (mur / wall)

Le robot commence en S = (1, 1) et doit atteindre G = (6, 6)

Il peut se déplacer Nord, Est, Sud, Ouest

Il suit une priorité : droite → avant → gauche → demi-tour

Exemple de labyrinth:
LAB = [
[1,1,1,1,1,1,1,1],
[1,0,0,0,1,0,0,1],
[1,0,1,0,0,0,1,1],
[1,0,1,0,1,0,0,1],
[1,0,0,0,1,1,0,1],
[1,1,1,0,0,0,0,1],
[1,0,0,0,1,0,0,1],
[1,1,1,1,1,1,1,1]
]

Partie 1 : Capteurs et Mouvements


Dans cette partie, vous allez implémenter les fonctions de base permettant au robot de percevoir
son environnement et de se déplacer.

Question 1.1 : Implémentation des fonctions de base


Implémentez les trois fonctions suivantes :
• in_bounds(G, i, j) : vérifie si la position (i, j) est dans les limites de la grille G
• is_wall(G, i, j) : vérifie si la position (i, j) est un mur (valeur 1) ou hors limites
ENSAM – Casablanca Année Universitaire 2025-2026
Département Génie Département
des Systèmes Mécaniques Industriels Pr. El mazhari Aya

• move(i, j, d) : calcule la nouvelle position après un déplacement dans la direction d


Note : Les directions sont codées par : DIRS = [(-1,0), (0,1), (1,0), (0,-1)] pour N, E, S, O

DIRS = [(-1,0), (0,1), (1,0), (0,-1)] # N, E, S, O

def in_bounds(G, i, j):


return

def is_wall(G, i, j):


return

def move(i, j, d):


return
Question 1.2 : Différence entre in_bounds et is_wall
Quelle est la différence entre les fonctions in_bounds et is_wall ? Pourquoi avons-nous besoin
des deux ?

Question 1.3 : Comportement hors limites


Que se passe-t-il si le robot essaie de sortir de la grille ? Comment votre implémentation gère-t-
elle ce cas ?

Partie 2 : Décision Locale (Règles Simples)


Dans cette partie, vous allez implémenter la stratégie de décision de l'agent réactif basée sur la
règle de la "main droite".

Question 2.1: Implémentation de choose_action


Implémentez la fonction choose_action(G, i, j, d) qui choisit la prochaine direction selon la
priorité : droite → avant → gauche → demi-tour.

# Stratégie "main droite" : priorité droite > avant > gauche > demi-tour
def choose_action(G, i, j, d):
return d
Question 2.2 : Description de la stratégie
Décrivez en vos propres mots la stratégie utilisée par l'agent pour choisir sa direction.

Question 2.3 : Ordre de priorité


Pourquoi tester les directions dans l'ordre [droite, avant, gauche, demi-tour] ? Qu'est-ce que cela
simule ?

Question 2.4 : Cas bloqué


Que se passe-t-il si toutes les directions sont bloquées (murs partout) ? Comment votre fonction
gère-t-elle ce cas ?
ENSAM – Casablanca Année Universitaire 2025-2026
Département Génie Département
des Systèmes Mécaniques Industriels Pr. El mazhari Aya

Question 2.5 : Variante "main gauche"


Proposez une modification de la fonction choose_action pour implémenter une stratégie "main
gauche" au lieu de "main droite".

Partie 3 : Simulation du Déplacement


Dans cette partie, vous allez implémenter la boucle principale de simulation qui fait avancer le
robot jusqu'au but (ou jusqu'à atteindre le nombre maximum d'étapes).

Question 3.1 : Implémentation de run_agent


Implémentez la fonction run_agent(G, start, goal, d0=0, max_steps=200) qui simule le
déplacement de l'agent.

def run_agent(G, start, goal, d0=0, max_steps=200):


return path

path = run_agent(LAB, S, G, d0=1)


print('Longueur du chemin :', len(path))
Question 3.2 : Résultats de l'exécution
Exécutez le programme plusieurs fois. Notez :
• Le nombre d'étapes pour atteindre le but
• La longueur du chemin parcouru
• Le comportement observé
Question 3.3 : But atteint ?
Le but a-t-il été atteint ? Si non, pourquoi ? Si oui, le chemin est-il optimal ?

Partie 4 : Visualisation du Chemin


Pour mieux comprendre le comportement de l'agent, nous allons visualiser sa trajectoire sur la
grille.
Question 4 : Implémentation de print_path
Implémentez la fonction print_path(G, path, S, Ggoal) qui affiche la grille avec :

• 'S ' pour le départ


• 'G ' pour le but
• '█ ' pour les murs
• 'V ' pour les cases visitées
• ' ' (espaces) pour les cases libres non visitées
def print_path(G, path, S, Ggoal):

print_path(LAB, path, S, G)
ENSAM – Casablanca Année Universitaire 2025-2026
Département Génie Département
des Systèmes Mécaniques Industriels Pr. El mazhari Aya

Partie 5 : Analyse et Réflexion


Cette dernière partie est consacrée à l'analyse critique du comportement de votre agent réactif.
Question 5.1 : Garantie d'atteindre le but
L'agent atteint-il toujours le but ? Pourquoi ou pourquoi pas ? Donnez un exemple de
configuration où il échouerait.
Question 5.2 : Problème des boucles infinies
Que se passe-t-il si l'agent tourne en boucle (visite les mêmes cases indéfiniment) ? Comment
pourriez-vous détecter ce problème ?
Question 5.3 : Besoin de mémoire
L'agent a-t-il besoin d'une mémoire ? Si oui, quelle forme devrait-elle prendre ? Que devrait-il
mémoriser ?
Question 5.4 : Amélioration de la stratégie
Comment pourriez-vous améliorer la stratégie de l'agent ? Proposez une solution utilisant un
historique des positions visitées.

Vous aimerez peut-être aussi