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

Documents pareils