Correction
Transcription
Correction
MIA – TD 8 Planification avec STRIPS - Correction Exercice 1 - Le monde des blocs. Nous nous trouvons dans la situation initiale suivante : C B D A L’objectif que nous nous fixons est de planifier automatiquement les opérations nécessaires pour obtenir au final un empilement des blocs tel que A se trouve sur B, B se trouve sur C, C se trouve sur D et D est posé sur la table. Cela nous donne la situation (ou état) finale suivante : A B C D Vous répondrez aux questions suivantes : 1. Décrivez la situation initiale en utilisant notamment les opérateurs ON et CLEAR. Décrivez, de la même façon, la situation finale. Init But on(D, TABLE) on(C, D) on(C, D) on(B, C) on(A, TABLE) on(A, B) on(B, A) clear(A) clear(C) on(D, TABLE) clear(B) handempty handempty 2. Rappellez les quatre opérateurs du monde des blocs vus en cours. A quels autres types d’objets ces opérateurs vous font-ils penser ? (a) operator(stack(X,Y), [holding(X), clear(Y )], Chargé de TD/TME : DZOGANG Fabon Responsable du cours : GANASCIA Jean-Gabriel 1 [handempty, on(X, Y ), clear(X)], [holding(X), clear(Y )], [X\ == Y, Y \ == table, X\ == table]) (b) operator(unstack(X,Y), [on(X, Y ), clear(X), handempty], [holding(X), clear(Y )], [handempty, clear(X), on(X, Y )], [X\ == Y, Y \ == table, X\ == table]) (c) operator(pickup(X), [on(X, table), clear(X), handempty], [holding(X)], [on(X, table), clear(X), handempty], [X\ == table]) (d) operator(putdown(X), [holding(X)], [on(X, table), handempty, clear(X)], [holding(X)], [X\ == table]) 3. Résolvez le problème posé à la main en utilisant une stratégie de chaı̂nage arrière. Pour cela, vous utiliserez une pile de buts conjointement à une description de l’état courant du problème et au plan en cours de construction. Quelques détails sur l’algorithme STRIPS : – Si le sommet de la pile de buts n’est pas satisfait (pas présent dans l’environement courant), nous cherchons les opérateurs qui nous permettent de réaliser ce but. Pour ce faire, l’ensemble des opérateurs contenant ce but dans sa liste d’ajouts sont sélectionnés. Si aucune stratégie n’est définie, un opérateur est sélectionné au hasard. Une fois l’opérateur séléctioné, les éléments de sa liste de pré-conditions sont ajoutés à la pile de buts – Si le sommet de la pile est satisfait dans l’environement alors il est dépilé – Si le sommet de la pile est une opération, alors les éléments de la liste d’ajouts de l’opérateur sont insérés dans l’environement et ceux de la liste de suppressions sont enlevés de l’environement. L’opération est finalement dépilée de la pile de buts et ajoutée au plan. Par ailleurs, un nouvel état est défini par l’ajout d’une nouvelle opération au plan. Etat initial Etat courant on(D, TABLE) on(C, D) on(A, TABLE) on(B, A) handempty clear(C) clear(B) But (Pile) on(C, D) on(B, C) on(A, B) clear(A) on(D, TABLE) Chargé de TD/TME : DZOGANG Fabon Responsable du cours : GANASCIA Jean-Gabriel Plan (File) (Vide) 2 Etat initial (bis) Etat courant on(D, TABLE) on(C, D) on(A, TABLE) on(B, A) handempty clear(C) clear(B) But (Pile) on(B, C) on(A, B) clear(A) on(D, TABLE) Plan (File) (Vide) But (Pile) holding(B) clear(C) stack(B, C) on(B, C) on(A, B) clear(A) on(D, TABLE) Plan (File) (Vide) But (Pile) on(B, A) clear(B) handempty unstack(B, A) holding(B) clear(C) stack(B, C) on(B, C) on(A, B) clear(A) on(D, TABLE) Plan (File) (Vide) Etat initial (bis bis) Etat courant on(D, TABLE) on(C, D) on(A, TABLE) on(B, A) handempty clear(C) clear(B) Etat initial (bis bis bis) Etat courant on(D, TABLE) on(C, D) on(A, TABLE) on(B, A) handempty clear(C) clear(B) Etat 1 Remarque : Les faits “handempty”, “clear(B)” et “on(B, A)” sont supprimés de l’environement courant (voir la liste de suppression de l’opération unstack). Etat courant holding(B) clear(A) on(D, TABLE) on(C, D) on(A, TABLE) clear(C) But (Pile) holding(B) clear(C) stack(B, C) on(B, C) on(A, B) clear(A) on(D, TABLE) Chargé de TD/TME : DZOGANG Fabon Responsable du cours : GANASCIA Jean-Gabriel Plan (File) unstack(B, A) 3 Etat 2 Etat courant handempty on(B, C) clear(B) clear(A) on(D, TABLE) on(C, D) on(A, TABLE) But (Pile) on(B, C) on(A, B) clear(A) on(D, TABLE) Plan (File) unstack(B, A) stack(B, C) But (Pile) holding(A) clear(B) stack(A, B) on(A, B) clear(A) on(D, TABLE) Plan (File) unstack(B, A) stack(B, C) But (Pile) on(A, TABLE) clear(A) handempty pickup(A) holding(A) clear(B) stack(A, B) on(A, B) clear(A) on(D, TABLE) Plan (File) unstack(B, A) stack(B, C) But (Pile) holding(A) clear(B) stack(A, B) on(A, B) clear(A) on(D, TABLE) Plan (File) unstack(B, A) stack(B, C) pickup(A) But (Pile) on(A, B) clear(A) on(D, TABLE) Plan (File) unstack(B, A) stack(B, C) pickup(A) stack(A, B) Etat 2 (bis) Etat courant handempty on(B, C) clear(B) clear(A) on(D, TABLE) on(C, D) on(A, TABLE) Etat 2 (bis bis) Etat courant handempty on(B, C) clear(B) clear(A) on(D, TABLE) on(C, D) on(A, TABLE) Etat 3 Etat courant holdin(A) on(B, C) clear(B) on(D, TABLE) on(C, D) Etat 4 Etat courant handempty on(A, B) clear(A) on(B, C) on(D, TABLE) on(C, D) Chargé de TD/TME : DZOGANG Fabon Responsable du cours : GANASCIA Jean-Gabriel 4 Etat 4 bis (final) Etat courant handempty on(A, B) clear(A) on(B, C) on(D, TABLE) on(C, D) But (Pile) (Vide) Plan (File) unstack(B, A) stack(B, C) pickup(A) stack(A, B) 4. Que pensez-vous du choix du chaı̂nage arrière pour résoudre ce problème ? Le chaı̂nage arrière est parfaitement adapté à ce type de problèmatique (régression ou induction). A partir d’un état initial, on tente d’aboutir à une état final donné. Le chaı̂nage avant serait employé dans une tâche d’exploration plutôt. Chargé de TD/TME : DZOGANG Fabon Responsable du cours : GANASCIA Jean-Gabriel 5 Exercice 2 - Problème du singe et des bananes. Le problème du singe et des bananes est un problème très classique en planification. Trois entités (un singe, des bananes et une caisse) sont initialement situées à trois emplacements distincts (respectivement a, b et c) dans une pièce. Le singe et la caisse se trouvent au niveau dit “bas”, alors que les bananes sont suspendues au niveau “haut”. Le singe est très attiré par les bananes, mais il n’est (malheureusement pour lui) ni situé au bon endroit, ni au bon niveau. La situation initiale est illustrée par la figure suivante : a b c Le problème consiste alors à trouver pour le singe un plan qui lui permettra de récupérer les bananes. Il sera du type : se déplacer de a en c, prendre la caisse et la déposer en b, monter sur la caisse, prendre les bananes. Pour cela, vous répondrez aux questions suivantes : 1. A partir des prédicats situé(X,Y), niveau(X,Y) et possède(X,Y), décrivez l’état initial du problème ainsi que le but à atteindre. Init But situé(SINGE, 1) possède(SINGE, BANANES) situé(BANANES, 2) situé(CAISSE, 3) niveau(SINGE, BAS) niveau(BANANES, haut) niveau(CAISSE, BAS) 2. Ecrivez en utilisant la syntaxe STRIPS les opérateurs suivants dont vous aurez besoin pour résoudre le problème : (a) seDeplace(X,Y) : le singe se déplace de l’emplacement X à l’emplacement Y. operator(seDeplace(X,Y), [situe(SIN GE, X), niveau(SIN GE, BAS)], [situe(SIN GE, Y )], [situe(SIN GE, X)], []) (b) prend(X) : le singe prend l’objet X. Attention, le singe ne peut prendre qu’un objet à la fois. Remarque : ici, on considère une négation par absence (CWA), les mêmes règles que pour les systèmes de productions oppèrent. operator(prend(X,Y), [situe(X, Y ), situe(SIN GE, Y ), niveau(X, N ), niveau(SIN GE, N )], [possede(SIN GE, X)], [], [notpossede(SIN GE, Z)]) (c) depose(X) : le singe depose l’objet X. operator(depose(X,Y), [situe(SIN GE, X), niveau(SIN GE, N ), possede(SIN GE, Z)], Chargé de TD/TME : DZOGANG Fabon Responsable du cours : GANASCIA Jean-Gabriel 6 [situe(Z, X), niveau(Z, N )], [possede(SIN GE, Z)], []) (d) monteCaisse : le singe monte sur la caisse. operator(monteCaisse(X,Y), [situe(SIN GE, X), niveau(CAISSE, X), niveau(SIN GE, BAS), niveau(CAISSE, BAS)], [niveau(SIN GE, HAU T )], [niveau(SIN GE, BAS)], []) 3. Résolvez le problème à l’aide d’une stratégie en chaı̂nage arrière. Entrainez-vous à partir de l’exercice précédent. Chargé de TD/TME : DZOGANG Fabon Responsable du cours : GANASCIA Jean-Gabriel 7