Page 1
Background Fluent Merging Fluent Selection Same object method Mutex threshold
Fluent Merging forClassical Planning Problems
Jendrik Seipp Malte Helmert
Albert-Ludwigs-Universitat Freiburg, Germany
ICAPS 2011 Workshop onKnowledge Engineering for Planning and Scheduling
June 12th, 2011
Page 2
Background Fluent Merging Fluent Selection Same object method Mutex threshold
room1 room2
in(ball, room1) ∈ {True, False}in(ball, room2) ∈ {True, False}carry(ball, arm) ∈ {True, False}
ball pos ∈ {in(ball, room1), in(ball, room2), carry(ball, arm)}robby pos ∈ {robby-in(room1), robby-in(room2)}state arm ∈ {free(arm), full(arm)}
Page 3
Background Fluent Merging Fluent Selection Same object method Mutex threshold
room1 room2
in(ball, room1) ∈ {True, False}in(ball, room2) ∈ {True, False}carry(ball, arm) ∈ {True, False}
ball pos ∈ {in(ball, room1), in(ball, room2), carry(ball, arm)}robby pos ∈ {robby-in(room1), robby-in(room2)}state arm ∈ {free(arm), full(arm)}
Page 4
Background Fluent Merging Fluent Selection Same object method Mutex threshold
room1 room2
in(ball, room1) ∈ {True, False}in(ball, room2) ∈ {True, False}carry(ball, arm) ∈ {True, False}
ball pos ∈ {in(ball, room1), in(ball, room2), carry(ball, arm)}robby pos ∈ {robby-in(room1), robby-in(room2)}state arm ∈ {free(arm), full(arm)}
Page 5
Background Fluent Merging Fluent Selection Same object method Mutex threshold
room1 room2
in(ball, room1) ∈ {True, False}in(ball, room2) ∈ {True, False}carry(ball, arm) ∈ {True, False}
ball pos ∈ {in(ball, room1), in(ball, room2), carry(ball, arm)}robby pos ∈ {robby-in(room1), robby-in(room2)}state arm ∈ {free(arm), full(arm)}
Page 6
Background Fluent Merging Fluent Selection Same object method Mutex threshold
Background
Paper by van den Briel, Kambhampati and Vossen at ICAPS2007 Heuristics workshop
Mutex groups in Fast Downward
Page 7
Background Fluent Merging Fluent Selection Same object method Mutex threshold
Fast Downward Planning System
Translation
Knowledge compilation
Search
Page 8
Background Fluent Merging Fluent Selection Same object method Mutex threshold
Fast Downward Planning System
Translation
Fluent Merging
Knowledge compilation
Search
Page 9
Background Fluent Merging Fluent Selection Same object method Mutex threshold
Merging two variables
Definition (SAS+ planning task)
Π = 〈V,O, s0, s?〉
Merging also generalized for conditional effects.
Page 10
Background Fluent Merging Fluent Selection Same object method Mutex threshold
Variables
V = {ball pos, robby pos, arm}Dball pos = {in(ball, room1), in(ball, room2), carry(ball, arm)}Drobby pos = {robby-in(room1), robby-in(room2)}Dstate arm = {free(arm), full(arm)}
New variable: ball pos⊗ state arm
Dball pos⊗state arm
in(ball, room1)⊗ free(arm)in(ball, room2)⊗ free(arm)carry(ball, arm)⊗ free(arm)
in(ball, room1)⊗ full(arm)in(ball, room2)⊗ full(arm)carry(ball, arm)⊗ full(arm)
Page 11
Background Fluent Merging Fluent Selection Same object method Mutex threshold
Variables
V = {ball pos, robby pos, arm}Dball pos = {in(ball, room1), in(ball, room2), carry(ball, arm)}Drobby pos = {robby-in(room1), robby-in(room2)}Dstate arm = {free(arm), full(arm)}
New variable: ball pos⊗ state arm
Dball pos⊗state arm
in(ball, room1)⊗ free(arm)in(ball, room2)⊗ free(arm)carry(ball, arm)⊗ free(arm)
in(ball, room1)⊗ full(arm)in(ball, room2)⊗ full(arm)carry(ball, arm)⊗ full(arm)
Page 12
Background Fluent Merging Fluent Selection Same object method Mutex threshold
Variables
V = {ball pos, robby pos, arm}Dball pos = {in(ball, room1), in(ball, room2), carry(ball, arm)}Drobby pos = {robby-in(room1), robby-in(room2)}Dstate arm = {free(arm), full(arm)}
New variable: ball pos⊗ state arm
Dball pos⊗state arm
in(ball, room1)⊗ free(arm)in(ball, room2)⊗ free(arm)carry(ball, arm)⊗ free(arm)
in(ball, room1)⊗ full(arm)in(ball, room2)⊗ full(arm)carry(ball, arm)⊗ full(arm)
Page 13
Background Fluent Merging Fluent Selection Same object method Mutex threshold
Variables
V = {ball pos, robby pos, arm}Dball pos = {in(ball, room1), in(ball, room2), carry(ball, arm)}Drobby pos = {robby-in(room1), robby-in(room2)}Dstate arm = {free(arm), full(arm)}
New variable: ball pos⊗ state arm
Dball pos⊗state arm
in(ball, room1)⊗ free(arm)in(ball, room2)⊗ free(arm)carry(ball, arm)⊗ free(arm)
in(ball, room1)⊗ full(arm)in(ball, room2)⊗ full(arm)
carry(ball, arm)⊗ full(arm)
Page 14
Background Fluent Merging Fluent Selection Same object method Mutex threshold
Operator 1
move-room1-room2 =〈{robby-in(room1)},{robby-in(room2)}〉
Page 15
Background Fluent Merging Fluent Selection Same object method Mutex threshold
Operator 2
pick-ball-in-room1 =〈{robby-in(room1), in(ball, room1), free(arm)},{carry(ball, arm), full(arm)}〉
Page 16
Background Fluent Merging Fluent Selection Same object method Mutex threshold
Operator 2
pick-ball-in-room1 =〈{robby-in(room1), in(ball, room1)⊗ free(arm)},{carry(ball, arm)⊗ full(arm)}〉
Page 17
Background Fluent Merging Fluent Selection Same object method Mutex threshold
Operator 3
drop-ball-in-room1 =〈{robby-in(room1), carry(ball, arm)},{in(ball, room1), free(arm)}〉
Page 18
Background Fluent Merging Fluent Selection Same object method Mutex threshold
Operator 3
drop-ball-in-room1 =〈{robby-in(room1), carry(ball, arm)},{in(ball, room1)⊗ free(arm)}〉
Page 19
Background Fluent Merging Fluent Selection Same object method Mutex threshold
Operator 3
drop-ball-in-room1-with-full(arm) =〈{robby-in(room1), carry(ball, arm)⊗ full(arm)},{in(ball, room1)⊗ free(arm)}〉
Page 20
Background Fluent Merging Fluent Selection Same object method Mutex threshold
Initial state
s0 = robby-in(room1) ∧ in(ball, room1) ∧ free(arm)
Page 21
Background Fluent Merging Fluent Selection Same object method Mutex threshold
Initial state
s0 = robby-in(room1) ∧ in(ball, room1)⊗ free(arm)
Page 22
Background Fluent Merging Fluent Selection Same object method Mutex threshold
Goal
s? = in(ball, room2)
in(ball, room2)⊗ free(arm)→ in(ball, room2)?
pseudo-op =〈{in(ball, room2)⊗ free(arm)}, {in(ball, room2)}〉Dball pos⊗state arm ← Dball pos⊗state arm ∪ {in(ball, room2)}
Page 23
Background Fluent Merging Fluent Selection Same object method Mutex threshold
Goal
s? = in(ball, room2)
in(ball, room2)⊗ free(arm)→ in(ball, room2)?
pseudo-op =〈{in(ball, room2)⊗ free(arm)}, {in(ball, room2)}〉Dball pos⊗state arm ← Dball pos⊗state arm ∪ {in(ball, room2)}
Page 24
Background Fluent Merging Fluent Selection Same object method Mutex threshold
Why is Fluent Merging interesting for KEPS?
Fluent Merging as an attempt to show that the underlyingrepresentation is not set in stone
Page 25
Background Fluent Merging Fluent Selection Same object method Mutex threshold
Fluent Selection
Random variables
Number of mutexes
Minimize total domain size
Heavily connected variables in causal graph
Two-cycle pairs in causal graph
Goal variables
Minimize number of operators
Page 26
Background Fluent Merging Fluent Selection Same object method Mutex threshold
Experiments - Settings
5 merges, only variable pairs
Worse performance with bigger values
30 minutes, 2 GB memory
Greedy best-first search with deferred evaluationand hcea
(Helmert and Geffner, 2008)
Page 27
Background Fluent Merging Fluent Selection Same object method Mutex threshold
Experiments - Results
Domain no-merge rand mutex size conn cycles goals opsdepot (22) 17 11 14 12 15 15 13 14freecell (80) 78 75 77 76 72 72 57 37pathways (30) 15 14 16 17 14 14 13 15pipes-nt (50) 38 5 8 16 14 14 9 16pipes-t (50) 24 9 3 17 11 8 9 15rovers (40) 34 31 34 35 34 34 34 24schedule (150) 60 58 59 59 54 52 39 60tpp (30) 28 20 24 24 22 24 23 16trucks (30) 17 15 14 16 14 14 16 6. . . . . . . . .Total (880) 709 616 625 660 619 608 583 548
Each method best in at least one domain
No method comes close to reference
Page 28
Background Fluent Merging Fluent Selection Same object method Mutex threshold
Same object method
First-order PDDL representation
Examples:
Dv = {painted(chair1),not-painted(chair1)}Du = {at(c2 loc1), at(c2 loc2), at(c2 loc3)}
Merge only variables that speak about the same object
Page 29
Background Fluent Merging Fluent Selection Same object method Mutex threshold
Same object method
First-order PDDL representation
Examples:
Dv = {painted(chair1),not-painted(chair1)}Du = {at(c2 loc1), at(c2 loc2), at(c2 loc3)}
Merge only variables that speak about the same object
Page 30
Background Fluent Merging Fluent Selection Same object method Mutex threshold
Same object method
First-order PDDL representation
Examples:
Dv = {painted(chair1),not-painted(chair1)}Du = {at(c2 loc1), at(c2 loc2), at(c2 loc3)}
Merge only variables that speak about the same object
Page 31
Background Fluent Merging Fluent Selection Same object method Mutex threshold
Same object method
First-order PDDL representation
Examples:
Dv = {painted(chair1),not-painted(chair1)}Du = {at(c2 loc1), at(c2 loc2), at(c2 loc3)}
Merge only variables that speak about the same object
Page 32
Background Fluent Merging Fluent Selection Same object method Mutex threshold
Same object method
First-order PDDL representation
Examples:
Dv = {painted(chair1),not-painted(chair1)}Du = {at(c2 loc1), at(c2 loc2), at(c2 loc3)}
Merge only variables that speak about the same object
Page 33
Background Fluent Merging Fluent Selection Same object method Mutex threshold
Experiments - Settings
Discouraging results with optimal configurations
Greedy best-first search with deferred evaluation and
hcea: Context-enhanced additive heuristic (Helmert and Geffner, 2008)
hCG: Causal graph heuristic (Helmert 2004)
hFF: FF/additive heuristic (Hoffmann and Nebel, 2001)
Page 34
Background Fluent Merging Fluent Selection Same object method Mutex threshold
Experiments - Results
Merges hFF
Domain 0 2 5 10 15 20 30depot (22) 19 18 19 20 20 20 20freecell (80) 76 80 78 77 79 78 75miconic (150) 150 150 150 150 150 80 80pprinter (30) 23 22 22 22 22 22 22pipes-nt (50) 43 41 42 42 43 42 42pipes-t (50) 38 39 38 37 39 37 37rovers (40) 40 40 40 40 40 40 37schedule (150) 150 149 149 149 149 149 148sokoban-sat (30) 24 28 29 28 28 28 28storage (30) 20 20 20 20 19 19 19trucks (30) 19 17 17 18 18 18 18wood-sat (30) 29 29 28 28 28 28 29. . . . . .Total (908) 820 822 821 820 824 750 744
Page 35
Background Fluent Merging Fluent Selection Same object method Mutex threshold
Mutex threshold
Suggested by reviewer|Da⊗b||Da|·|Db| < x ?
For gripper example: (3·2)−33·2 = 0.5
Page 36
Background Fluent Merging Fluent Selection Same object method Mutex threshold
Mutex threshold - Experiments
70% 80% 90%# Merges → 0 2 5 10 2 5 10 2 5 10depot (22) 17 18 17 18 19 17 18 20 18 19freecell (80) 76 76 76 75 76 76 75 76 76 76trucks-strips (30) 18 21 17 17 21 17 17 21 17 17Total (132) 111 115 110 110 116 110 110 117 111 112
Table: Greedy best-first search with deferred evaluation and hFF
Other domains: No mutexes or no change compared to hFF
Page 37
Background Fluent Merging Fluent Selection Same object method Mutex threshold
Future Work
Inspect impact on heuristics in detail
Fluent merging with boolean fluents
Use automatic parameter configuration methods
Page 38
Background Fluent Merging Fluent Selection Same object method Mutex threshold
Summary
First general implementation and experimental evaluation
Improvements in some domains
Find out which and how many fluents to merge