La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Explorer un espace détats Etapes à suivre: 1.Bien définir les caractéristiques utiles de lespace à explorer. 2.Définir létat initial et létat final (le.

Présentations similaires


Présentation au sujet: "Explorer un espace détats Etapes à suivre: 1.Bien définir les caractéristiques utiles de lespace à explorer. 2.Définir létat initial et létat final (le."— Transcription de la présentation:

1 Explorer un espace détats Etapes à suivre: 1.Bien définir les caractéristiques utiles de lespace à explorer. 2.Définir létat initial et létat final (le but de lexploration). 3.Définir un algorithme dexploration (les opérateurs qui changent les états). 4.Si plusieurs algos, définir lalgo optimal selon un critère donné. 5.Coder les états de lespace réel 6.Transformer lalgorithme en un programme (Lisp, C etc)

2 Sortir dun labyrinthe Le problème: Un robot placé nimporte où dans un labyrinthe inconnu doit trouver par moyens propres la sortie. Il doit marquer la voie correcte qui mène à la sortie ainsi que les essais infructueux quil a effectués sur le parcours. Sil existe plusieurs chemins qui mènent à la sortie il doit choisir le chemin optimal selon un critère imposé. Le programme LISP doit tenir compte de toutes ces exigences

3 Le labyrinthe réel Sortie Entrée

4 Algorithmes dexploration Il y a quatre directions à explorer: Droite, Bas, Gauche, Haut. On peut les combiner de différentes façons (combien ?) On choisit une combinaison et on lapplique à chaque pas pour trouver la case libre suivante. Si cul-de-sac, le robot doit retourner jusquà la dernière croisée pour essayer une autre direction. Si la sortie est trouvée le robot retourne au point de départ en marquant le « bon » chemin. Des explorations différentes mènent à des chemins différents. Il faut compter les pas pour mettre en évidence « le plus court chemin » après exploration de toutes les combinaisons.

5 Coder les états du labyrinthe (transformer le labyrinthe en un tableau de symboles) Chemin libre…………………………….tirets (-) Murs……………………………………...dollars ($) La sortie………………………………....latome « FIN » Les voies explorées…… étoile (*) Chemin correct entrée et FIN…………ronds (O)

6 Le labyrinthe codé (une liste de listes) j 1 j 2 colonnes ( $ $ ) i 1 ($ $ $ - $ - ) i 2 ( $ $ - - $ - ) (- $ $ - - $ $ $ $ $) avant lexploration ( $ $ $ ) (- $ $ $ fin ) lignes ( o o o $ $ * * * * *) ($ $ o o * * $ * $ *) après l exploration ( o o o o $ $ * * $ *) ( o $ $ * * $ $ $ $ $) ( o o o $ $ $ o o o o ) (- $ o o o o o $ $ fin )

7 Préparation du programme LISP On affecte à latome labyrinthe la valeur du tableau précédent: (setq labyrinthe ( (…………………………..) (…………………………..) (…………………………..) ) ) On crée une fonction laby qui a comme arguments le labyrinthe donné, les coordonnées dune case (ligne i, colonne j) et qui implémente lalgo donné. Appel de la fonction: (laby labyrinthe 0 0) (si lon part de la ligne 0 et la colonne 0) (laby labyrinthe 3 4) (si lon part de la ligne 4 et la colonne 5)

8 Fonctions auxiliaires – printab printab Transforme une liste de listes en un tableau Exemple: ? (printab ((a b c) (d e f) (g h i))) (a b c) (d e f) (g h i) Définition: ( de printab ( liste) (until (null liste) (print (car liste)) (setq liste (cdr liste))))

9 La fonction tref tref Retourne le terme de la ligne i et de la colonne j dun tableau Exemple: ? (setq tab ((a b c) (d e f) (g h i))) ? (tref tab 2 0) ;le terme de la ligne 2 et de la colonne 0 =g Définition: (de tref (tab i j ) (setq ligne (nth i tab)) ;affecte à latome ligne la ligne i du tableau tab (nth j ligne)) ;retourne lélément j de la ligne respective Le prédéfini (nth ) retourne le ième élément dune liste : ? (nth 2 (g h i)) =i ? (nth 1 ((a b c) (d e f) (g h i))) = (d e f)

10 La fonction tset tset Remplace dans un tableau le terme par un autre Exemple: ? (tset ( (a b c) (d e f) (g h i) ) 1 1 x ) = ((a b c) (d x f) (g h i)) Définition: ( de tset (tab i j x) (setq nl (replace (nth i tab) j x)) ; nth retourne la ième ligne de tab (replace tab i nl)) ;replace remplace le jème terme par x ; setq affecte à nl cette nouvelle ligne ;replace remet dans tab cette nouvelle ligne (replace ) ;remplace dans la liste l le terme de rang n par x ? (replace (a b c) 2 x) = (a b x)

11 La fonction Définition: (de replace (liste i x) (cond ((= i 0) (rplaca liste x)) ( t (cons (car liste) ( replace (cdr liste) (1- i) x ) ) ) ) ) Le prédefini (rplaca ) remplace le premier terme de la liste par x Exemples: (rplaca (a b c) x) ( x b c ) (replace (a b c) 2 x) (a b x) (tset ((a b c) (d e f) (g h i)) 1 1 x) ((a b c) (d x f) (g h i))

12 Programme LISP (de laby (labyrinthe i j) (setq pas-trouve T) // initialisation du drapeau pas-trouvé à VRAI (cherche-sortie i j ) // fonction dexploration à partir de la case i j (if pas-trouve (print "pas de sortie") (print "solution: " ) (printab labyrinthe) ) ) (de cherche-sortie (i j) 1(if (equal (tref labyrinthe i j) 'fin ) 2 (setq pas-trouve ( ) ) 3 (tset labyrinthe i j *) 4 (if (and pas-trouve (member (tref labyrinthe i (1+ j)) '(- fin))) (cherche-sortie i (1+ j))) 5 (if (and pas-trouve (member (tref labyrinthe (1+ i) j) '(- fin))) (cherche-sortie (1+ i) j)) 6 (if (and pas-trouve (member (tref labyrinthe i (1- j)) '(- fin))) (cherche-sortie i (1- j))) 7 (if (and pas-trouve (member (tref labyrinthe (1- i) j) '(- fin))) (cherche-sortie (1- i) j))) 8 (ifn pas-trouve (tset labyrinthe i j o)))

13 Explication de la fonction «cherche-sortie » 1.Si la case est égale à fin (test du IF) 2.On affecte à latome « pas-trouvé » ( la valeur ( ) (si oui) si non on évalue la suite des fonctions (de 3 à 8) à commencer par: 3. On remplace le (-) par (*) (marquage du chemin ) On choisit lalgorithme dexploration: droite – bas – gauche – haut Exploration à droite: 4. Test du IF (2 conditions reliées par AND): SI pas-trouve est VRAI (True) et si la case à droite est libre ou fin ALORS relancer à droite SINON (mur à droite) explorer la case du Bas 5. Exploration en bas: …..si elle échoue (mur en bas): 6. Exploration à gauche …si elle échoue (mur à gauche): 7. Exploration en haut (mur en haut) Si 4,5,6,7 échouent cul-de-sac (toutes les directions bouchées) alors on passe à 8.

14 Suite 8. pas-trouve = T donc le test de IFN échoue On remonte dans la pile en dépilant les appels récursifs précédents en attente (on remonte le chemin parcouru) en testant les choix restants toujours dans lordre droite-bas-gauche-haut.. -Quand le test (tref labyrinthe i j) = FIN test (1) VRAI on pose: (setq pas-trouve ( ) ) le si oui de (2) et lon remonte dans la pile pour évaluer les fonctions en attente. Toutes échouent à cause du test « pas-trouve = ( ) » -Seul le test du IFN (8) réussit et le « tset » marque le chemin correct (remplace les * par des o)

15 Exercices/Mini-projet Exercices 1.Changez le type de labyrinthe (nombre de cases et/ou position des murs) et vérifiez que le programme fonctionne toujours correctement. 2.Modifiez le programme afin que latome FIN de la case sortie soit remplacé par un o (marquage habituel) 3.Insérez dans le programme donné un compteur qui permette dafficher: - le nombre de pas corrects (le nombre de ronds o) - le nombre de pas ratés (le nombre détoiles * ) Changez lalgorithme dexploration du labyrinthe initial et vérifiez que le nombre de pas (utiles et ratés) peut changer.

16 Mini-projet Sachant quil y a 24 algorithmes dexploration possibles (expliquez pourquoi) écrivez le programme qui permet de mettre en œuvre automatiquement ces algos, de calculer chaque fois le nombre de pas corrects et ratés et de mettre en évidence le ou les algos optimaux selon un critère doptimalité choisi (par exemple nombre minimal de pas corrects ou bien nombre minimal de pas ratés ou bien nombre minimal de pas totaux). Note: les étudiants qui rendent le mini-projet au plus tard le (et le soutiennent correctement) seront exemptés du contrôle de IA du


Télécharger ppt "Explorer un espace détats Etapes à suivre: 1.Bien définir les caractéristiques utiles de lespace à explorer. 2.Définir létat initial et létat final (le."

Présentations similaires


Annonces Google