2010 - Magma

Transcription

2010 - Magma
Examen de Planification Automatique
et Techniques d’Intelligence Artificielle
(PATIA)
Durée : 3h – Aucun document autorisé.
11 mai 2010
1
1.1
Représentation d’un problème de planification
avec la notation Strips
Le loup, la chèvre et le choux
Dans le problème du "loup, la chèvre et le choux", il s’agit de faire passer
ces trois éléments de la rive gauche à la rive droite d’une rivière. Pour cela, on
dispose d’une barque pouvant embarquer à chaque passage au plus un élément.
Sachant que le loup mange la chèvre et que la chèvre mange le choux, résoudre
ce problème consiste à trouver l’ordre dans lequel on doit les faire passer afin
qu’à aucun moment ni la chèvre ni le choux ne soient mis en danger.
Un plan solution est constitué des actions suivantes :
1. Faire traverser la chèvre de gauche à droite,
2. Revenir sur la rive gauche,
3. Faire traverser le choux,
4. Embarquer la chèvre,
5. Revenir sur la rive gauche,
6. Débarquer la chèvre,
7. Faire traverser le loup,
8. Revenir sur la rive gauche,
9. Faire traverser la chèvre.
La représention Strips de ce problème est donnée en annexe.
On s’intéresse à présent à une nouvelle version du problème dans laquelle il
s’agit de faire passer de la rive gauche à la rive droite un loup, une chèvre,
un choux, un bâton et du feu. Pour cela, on dispose d’une barque pouvant
embarquer au plus deux éléments à chaque traversée.
1
a) Sachant que le feu brûle le bâton, le bâton bat le loup, le loup mange la
chèvre et la chèvre mange le choux, donnez un plan informel pour résoudre
ce problème,
b) Donnez la représentation Strips de cette nouvelle version.
1.2
Monkey-and-bananas
Dans le problème "Monkey-and-bananas", un singe est enfermé dans une
cage dans laquelle sont suspendues des bananes. Le singe dispose d’une caisse
lui permettant d’attraper les bananes lorsqu’il monte dessus. Initialement, le
singe est dans la position A, les bananes sont en B et la caisse est en C. Le singe
est Low lorsqu’il est sur le sol et High lorsqu’il est sur la caisse. Les bananes
sont High et la caisse est Low. Les actions que le singe peut effectuer sont les
suivantes : Go pour aller d’un endroit à l’autre, Push pour pousser un objet
qu’on tient d’un endroit à l’autre, ClimbUp et ClimbDown pour monter ou
descendre d’un objet puis Grasp et UnGrasp pour attraper ou lacher un objet.
Son but est d’attraper les bananes.
a) Représentez en Strips l’état initial et le but de ce problème,
b) Représentez en Strips les six actions.
2
Planification SAT
L’une des techniques de planification consiste à représenter un problème par
une formule SAT en forme normale conjonctive.
a) Donnez l’algorithme de Davis & Putnam,
b) Donnez de façon informelle les cinq types d’axiomes devant être vérifiés par
la formule SAT. Expliquez.
3
Graphe de planification
Soit le domaine de planification suivant :
Actions
Préconditions
Ajouts
Retraits
OPa
{a}
{c}
{d}
OPb
{b}
{d}
{}
OPc
{c}
{e}
{}
OPd
{d}
{e}
{}
a) L’état initial est s0 = {a, b}. Faire le graphe de planification jusqu’à P2 (P0,
A1, P1, A2, P2),
b) Indiquez quelles sont les actions et les propositions en exclusion mutuelle.
Expliquez.
2
Annexe
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
(loup OBJECT)
(chevre OBJECT)
(choux OBJECT)
(left PLACE)
(right PLACE)
(preconds
(at left chevre)
(at left loup)
(at left choux)
(at left boat)
(eat loup chevre)
(eat chevre choux)
(safe choux)
(safe chevre)
(boat_empty)
)
(effects
(at right chevre)
(at right loup)
(at right choux)
)
3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
(operator
LOAD
(params
(<x> OBJECT)
(<from> PLACE))
(preconds
(at <from> <x>)
(at <from> boat)
(boat_empty))
(effects
(at on_board <x>)
(del at <from> <x>)
(del boat_empty))
)
(operator
UNLOAD
(params
(<x> OBJECT)
(<to> PLACE))
(preconds
(at on_board <x>)
(at <to> boat))
(effects
(boat_empty)
(at <to> <x>)
(del at on_board <x>))
)
(operator
MOVE
(params
(<from> PLACE)
(<to> PLACE))
(preconds
(at <from> boat)
(safe chevre)
(safe choux))
(effects
(at <to> boat)
(del at <from> boat)
(del safe chevre)
(del safe choux))
)
4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
(operator
SAFE
(params
(<here> PLACE)
(<there> PLACE)
(<x> OBJECT)
(<y> OBJECT))
(preconds
(at <here> <x>)
(at <there> <y>)
(eat <x> <y>))
(effects
(safe <y>))
)
(operator
SAFE
(params
(<here> PLACE)
(<x> OBJECT)
(<y> OBJECT))
(preconds
(at <here> <x>)
(at on_board <y>)
(eat <x> <y>))
(effects
(safe <y>))
)
5
Eléments de solution
3.1
3.1.1
Représentation d’un problème de planification avec la
notation Strips
Le loup, la chèvre et le choux
a) Voici un plan solution :
1. Embarquer la chèvre et le baton,
2. Se rendre sur la rive droite,
3. Débarquer la chèvre et le bâton,
4. Revenir sur la rive gauche
5. Embaquer le feux et le choux,
6. Se rendre sur la rive droite,
7. Débarquer le feu et le choux,
8. Embarquer le bâton et la chèvre,
9. Revenir sur la rive gauche,
10. Débarquer le bâton et la chèvre,
11. Embarquer le loup,
12. Revenir sur la rive droite,
13. Débarquer le loup,
14. Revenir sur la rive gauche,
15. Embarquer la chèvre et le bâton,
16. Se rendre sur la rive droite,
17. Débarquer la chèvre et le bâton.
b) Voir les algorithmes 6 à 9.
3.1.2
Monkey-and-bananas
Voir les algorithmes 10 à 13.
3.2
Planification SAT
a) Voir les algorithmes 1 et 2.
b) Il s’agit d’un plan par étapes. Les axiomes indiquent des propriétés devant
être vérifiées à une étape donnée du plan.
– Etat initial :
^
s0 ∧ {
¬f }
f ∈s
/ 0
– But :
g∧{
^
f ∈g
/
6
¬f }
– Actions :
^
^
^
ai → { precond(ai )} ∧ { effect+ (ai )} ∧ { ¬effect− (ai )}
– Transitions d’états :
¬fi ∧ fi+1 → {
_
ai }
fi+1 ∈effect+ (ai )
fi ∧ ¬fi+1 → {
_
ai }
fi+1 ∈effect− (ai )
– Actions exclusives
¬ai ∨ ¬bi
Algorithm 1: unitPropagate(Γ,x)
1
2
3
4
5
6
7
8
9
10
11
12
if isEmpty(Γ) then
return [];
else
c ← getFirst(Γ);
Γ ← Γ − {c};
if contains(c,x) then
return unitPropagate(Γ,x);
else
if contains(c,−x) then
return remove(−x,c) · unitPropagate(Γ,x);
else
return c · unitPropagate(Γ,x);
3.3
Graphe de planification
a) Voir le graphique Fig. 1,
b) OPa et OPb sont mutex car elles ne sont pas indépendantes : OPa retire l’un
des effets de OPb. c et d sont mutex car toutes les actions qui les produisent
sont mutex. OPc et OPd sont mutex car leurs préconditions sont mutex.
7
Algorithm 2: DP(Γ, µ)
1
2
3
4
5
6
7
8
9
10
11
12
if isEmpty(Γ) then
return [];
else
if contains(Γ, []) then
return [];
else
x ← getFirst(getFirst(Γ));
// A basic strategy
µ0 ← DP(unitPropagate(Γ,x), add(x, µ));
if isEmpty(µ0 ) then
return DP(unitPropagate(Γ,−x), add(−x, µ));
else
return µ0 ;
OPa
a
b
OPc
c
d
OPb
P0
A1
e
OPd
P1
A2
Fig. 1 – Graphe de planification
8
P2
Algorithm 3:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
(loup OBJECT)
(chevre OBJECT)
(choux OBJECT)
(feu OBJECT)
(baton OBJECT)
(one SLOT)
(two SLOT)
(left PLACE)
(right PLACE)
(preconds
(at left chevre)
(at left loup)
(at left choux)
(at left baton)
(at left feu)
(at left boat)
(eat feu baton)
(eat baton loup)
(eat loup chevre)
(eat chevre choux)
(safe feu)
(safe baton)
(safe loup)
(safe choux)
(safe chevre)
(boat_slot one empty)
(boat_slot two empty)
)
(effects
(at right baton)
(at right feu)
(at right chevre)
(at right loup)
(at right choux)
)
9
Algorithm 4:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
(operator
LOAD
(params
(<x> OBJECT)
(<from> PLACE)
(<slot> SLOT))
(preconds
(at <from> <x>)
(at <from> boat)
(boat_slot <slot> empty))
(effects
(boat_slot <slot> <x>)
(del at <from> <x>)
(del boat_slot <slot> empty))
)
(operator
UNLOAD
(params
(<x> OBJECT)
(<to> PLACE)
(<slot> SLOT))
(preconds
(boat_slot <slot> <x>)
(at <to> boat)
)
(effects
(boat_slot <slot> empty)
(at <to> <x>)
(del boat_slot <slot> <x>))
)
10
Algorithm 5:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
(operator
MOVE
(params
(<from> PLACE)
(<to> PLACE))
(preconds
(at <from> boat)
(safe baton)
(safe loup)
(safe chevre)
(safe choux))
(effects
(at <to> boat)
(del at <from> boat)
(del safe baton)
(del safe loup)
(del safe chevre)
(del safe choux))
)
(operator
SAFE
(params
(<here> PLACE)
(<there> PLACE)
(<x> OBJECT)
(<y> OBJECT))
(preconds
(at <here> <x>)
(at <there> <y>)
(eat <x> <y>))
(effects
(safe <y>))
)
11
Algorithm 6:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
(operator
SAFE
(params
(<here> PLACE)
(<x> OBJECT)
(<y> OBJECT)
(<slot> SLOT))
(preconds
(at <here> <x>)
(boat_slot <slot> <y>)
(eat <x> <y>))
(effects
(safe <y>))
)
Algorithm 7:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
(bananas OBJECT)
(monkey AGENT)
(box OBJECT)
(A PLACE)
(B PLACE)
(C PLACE)
(low POSITION)
(high POSITION)
(preconds
(at A monkey)
(at B bananas)
(at C box)
(position monkey low)
(position box low)
(position bananas high)
(arm-empty monkey)
(free box)
(free bananas)
(climbable box)
)
(effects
(holding monkey bananas)
)
12
Algorithm 8:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
(operator
GO
(params
(<x> AGENT)
(<from> PLACE)
(<to> PLACE))
(preconds
(at <from> <x>)
(position <x> low))
(effects
(at <to> <x>)
(del at <from> <x>))
)
(operator
PUSH
(params
(<x> AGENT)
(<y> OBJECT)
(<from> PLACE)
(<to> PLACE))
(preconds
(at <from> <x>)
(at <from> <y>)
(position <x> low)
(position <y> low)
(holding <x> <y>)
)
(effects
(at <to> <x>)
(at <to> <y>)
(del at <from> <x>)
(del at <from> <y>))
)
13
Algorithm 9:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
(operator
GRASP
(params
(<x> AGENT)
(<y> OBJECT)
(<from> PLACE)
(<pos> POSITION))
(preconds
(at <from> <x>)
(at <from> <y>)
(position <x> <pos>)
(position <y> <pos>)
(arm-empty <x>)
(free <y>))
(effects
(holding <x> <y>)
(del free <y>)
(del arm-empty <x>))
)
(operator
UNGRASP
(params
(<x> AGENT)
(<y> OBJECT)
(<from> PLACE)
(<pos> POSITION))
(preconds
(at <from> <x>)
(at <from> <y>)
(position <x> <pos>)
(position <y> <pos>)
(holding <x> <y>))
(effects
(del holding <x> <y>)
(arm-empty <x>)
(free <y>))
)
14
Algorithm 10:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
(operator
CLIMB_UP
(params
(<x> AGENT)
(<y> OBJECT)
(<from> PLACE))
(preconds
(at <from> <x>)
(at <from> <y>)
(position <x> low)
(position <y> low)
(climbable <y>))
(effects
(position <x> high)
(del position <x> low))
)
(operator
CLIMB_DOWN
(params
(<x> AGENT)
(<y> OBJECT)
(<from> PLACE))
(preconds
(at <from> <x>)
(at <from> <y>)
(position <x> high)
(position <y> low)
(climbable <y>))
(effects
(position <x> low)
(del position <x> high))
)
15

Documents pareils