The Graphplan Planner. Searching the Planning Graph . Literature. Malik Ghallab, Dana Nau, and Paolo Traverso. Automated Planning – Theory and Practice , chapter 6. Elsevier/Morgan Kaufmann, 2004. Neoclassical Planning. concerned with restricted state-transition systems
Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.
The Graphplan Planner
Searching the Planning Graph
The Graphplan Planner
The Graphplan Planner
The Graphplan Planner
The Graphplan Planner
The Graphplan Planner
crane
crane
crane
crane
crane
crane
s0
s5
s1
s2
s3
s4
robot
robot
robot
robot
robot
robot
location1
location1
location1
location1
location1
location1
location2
location2
location2
location2
location2
location2
move1
cont.
cont.
cont.
pallet
pallet
pallet
move2
take
put
take
put
move1
move2
move1
load
cont.
cont.
cont.
pallet
pallet
pallet
move2
unload
The Graphplan Planner
crane
s0
robot
location1
location2
cont.
pallet
The Graphplan Planner
The Graphplan Planner
The Graphplan Planner
The Graphplan Planner
The Graphplan Planner
The Graphplan Planner
The Graphplan Planner
The Graphplan Planner
The Graphplan Planner
The Graphplan Planner
The Graphplan Planner
The Graphplan Planner
P1=(Σ1,si,g) where
Σ1=(
{{p1},{p2}},
{a1},
{({p1},a1)→{p2}}) on
L1={p1,p2}
statement: P =({a1}, si, g) where a1=({p1},{p1},{p2}), si={p1}, and g={p2}
The Graphplan Planner
The Graphplan Planner
The Graphplan Planner
The Graphplan Planner
The Graphplan Planner
The Graphplan Planner
The Graphplan Planner
robr
robq
loc1
loc2
conta
contb
The Graphplan Planner
The Graphplan Planner
The Graphplan Planner
The Graphplan Planner
The Graphplan Planner
The Graphplan Planner
r1, q2, a1, b2, ur, uq
Lbq2
Mr12
Mq21
Lar1
r1, q1, a1, b2, ur, uq
r1, q2, a1, bq, ur
r2, q2, a1, b2, ur, uq
r1, q2, ar, b2, ur
Lbq2
Mq21
Lbr2
Mr21
r2, q1, a1, b2, ur, uq
r2, q2, a1, bq, ur
r1, q2, a1, b2, ur, uq
r2, q2, a1, br, uq
The Graphplan Planner
The Graphplan Planner
The Graphplan Planner
Mr12
r1
Mr12
Mr21
r2
r1
Mq12
Mr21
r1
q1
r2
Mq21
Mq12
r2
q2
q1
Mr12
Lar1
r1
q1
a1
q2
Mq21
Laq1
q2
q2
a2
a1
Mq21
Lar1
Lbr2
a1
a1
ar
ar
aq
aq
ar
b2
Lbq2
Laq1
Lar1
b2
b1
b2
ur
Uar1
Lbr2
br
b2
bq
uq
Uar2
Lbq2
bq
br
ur
Lbq2
Uaq1
ur
bq
uq
Uar1
Ubr2
uq
ur
Ubq1
Ubq2
uq
Ubq2
P0
A1
P1
A2
P2
A3
P3
The Graphplan Planner
The Graphplan Planner
Mr12
r1
r1
r2
Mr21
r2
q1
Mq12
q1
q2
q2
Mq21
a1
a1
ar
Lar1
ar
b2
aq
Laq1
bq
b2
ur
Lbr2
br
uq
bq
Lbq2
ur
Uar1
uq
Ubq2
P1
A2
P2
The Graphplan Planner
The Graphplan Planner
function independent(a1,a2)
for allp∈effects-(a1)
if p∈precond(a2) orp∈effects+(a2) then
return false
for allp∈effects-(a2)
if p∈precond(a1) or p∈effects+(a1) then
return false
return true
The Graphplan Planner
The Graphplan Planner
The Graphplan Planner
The Graphplan Planner
The Graphplan Planner
is a path from si to a goal state.
The Graphplan Planner
r1
Mr12
r2
r1
q1
q2
Mq21
q2
a1
a1
b2
Lar1
ar
ur
b2
uq
Lbq2
bq
ur
uq
P0
A1
P1
The Graphplan Planner
r1
r2
r1
Mr12
q1
q2
q2
a1
Mq21
a1
b2
ar
ur
Lar1
b2
uq
bq
ur
Lbq2
uq
Ar1
P0
A1
P1
The Graphplan Planner
The Graphplan Planner
function mutex(p1,p2,μAj)
for alla1∈p1.producers()
for alla2∈p2.producers()
if (a1,a2)∉μAjthen
return false
return true
The Graphplan Planner
Mr12
r1
r1
r2
Mr21
r2
q1
Mq12
q1
q2
q2
Mq21
a1
a1
ar
Lar1
ar
b2
aq
Laq1
bq
b2
ur
Lbr2
br
uq
bq
Lbq2
ur
Uar1
uq
Ubq2
P1
A2
P2
The Graphplan Planner
The Graphplan Planner
function mutex(a1,a2,μP)
if¬independent(a1,a2) then
return true
for allp1∈precond(a1)
for allp2∈precond(a2)
if (p1,p2)∈μPthenreturn true
return false
The Graphplan Planner
The Graphplan Planner
r1
r1
r2
r2
q1
q1
q2
q2
a1
a2
ar
ar
b2
aq
bq
b2
ur
br
uq
bq
ur
uq
Uar2
P1
A2
P2
The Graphplan Planner
then
The Graphplan Planner
The Graphplan Planner
The Graphplan Planner
The Graphplan Planner
function expand(Gk-1)
Ak {a∈A | precond(a)⊆Pk-1 and
{(p1,p2) | p1,p2∈precond(a)} ∩ μPk-1 = {} }
μAk {(a1,a2) | a1,a2∈Ak, a1≠a2, and mutex(a1,a2,μPk-1) }
Pk {p | ∃a∈Ak : p∈effects+(a) }
μPk {(p1,p2) | p1,p2∈Pk, p1≠p2, and mutex(p1,p2,μAk) }
for alla∈Ak
prek prek∪ ({p | p∈Pk-1 and p∈precond(a)} ×a)
ek+ ek+∪ (a× {p | p∈Pk and p∈effects+(a)})
ek– ek–∪ (a× {p | p∈Pk and p∈effects–(a)})
The Graphplan Planner
The Graphplan Planner
The Graphplan Planner
The Graphplan Planner
Mr12
r1
Mr12
r1
r2
Mr21
r1
r2
q1
q2
Mq21
Mq12
q1
q2
a1
q2
Mq21
a1
b2
Lar1
a1
ar
Lar1
ar
ur
b2
aq
Laq1
uq
Lbq2
bq
b2
ur
Lbr2
br
uq
bq
Lbq2
ur
Uar1
uq
Ubq2
Mr12
r1
Mr21
r2
Mq12
q1
Mq21
q2
Lar1
a1
Laq1
a2
Lbr2
ar
aq
Lbq2
b1
Uar1
b2
Uar2
br
Uaq1
bq
Ubr2
ur
Ubq1
uq
Ubq2
P0
A1
P1
A2
P2
A3
P3
The Graphplan Planner
The Graphplan Planner
P0
Pi
Pj
Pk
The Graphplan Planner
The Graphplan Planner
function extract(G,g,i)
if i=0 then return〈〉
if g∈∇(i) then return failure
∏ gpSearch(G,g,{},i)
if ∏≠failure then return∏
∇(i) ∇(i) + g
return failure
The Graphplan Planner
functiongpSearch(G,g,π,i)
if g={} then
∏ extract(G,∪a∈πprecond(a),i-1)
if ∏=failure then return failure
return ∏∙〈π〉
p g.selectOne()
resolvers {a∈Ai| p∈effects+(a) and ¬∃a’∈π: (a,a’)∈μAi}
if resolvers={} then return failure
a resolvers.chooseOne()
returngpSearch(G,g-effects+(a),π+a,i)
The Graphplan Planner
functiongraphplan(A,si,g)
i 0; ∇ []; P0 si; G (P0,{})
while (g⊈Piorg2∩μPi≠{}) and¬fixedPoint(G) do
i i+1; expand(G)
ifg⊈Piorg2∩μPi≠{} then return failure
ηfixedPoint(G) ? |∇(κ)| : 0
∏ extract(G,g,i)
while∏=failure do
i i+1; expand(G)
∏ extract(G,g,i)
if ∏=failure andfixedPoint(G) then
if η=|∇(κ)| then return failure
η|∇(κ)|
return∏
The Graphplan Planner
The Graphplan Planner
The Graphplan Planner
The Graphplan Planner
k1
k2
l1
l2
r1
goal: (and (in ca p2) (in cb q2) (in cc p2) (in cd q2) (in ce q2) (in cf q2))
cf
cc
ce
cb
cd
ca
p2
q2
The Graphplan Planner
The Graphplan Planner
The Graphplan Planner
The Graphplan Planner
The Graphplan Planner