30
Hierarchical Task Hierarchical Task Network (HTN) Network (HTN) Planning Planning Hai Hoang Hai Hoang 4/17/2007 4/17/2007

Hierarchical Task Network (HTN) Planning Hai Hoang 4/17/2007

Embed Size (px)

Citation preview

Hierarchical Task Network Hierarchical Task Network (HTN) Planning(HTN) Planning

Hierarchical Task Network Hierarchical Task Network (HTN) Planning(HTN) Planning

Hai HoangHai Hoang4/17/20074/17/2007

Reminder

• JSHOP and JSHOP2 come with some sample domain files.

• You CANNOT use those files.

• Need to write your own.

HTN vs Classical

• Like classical planning:– Each state of the world is represented by a

set of atoms– Each action corresponds to a deterministic

state transition– (block b1) (block b2) (block b3) (block b4)

(on-table b1) (on b2 b1) (clear b2) (on-table b3) (on b4 b3) (clear b4)

HTN vs Classical

• Differs:– Objective: to perform a set of tasks not a set

of goals– Terms, literals, operators, actions, plans

have same meaning as classical planning.– Added tasks, methods, task networks– Tasks decompose into subtasks

• Constraints• Backtrack if necessary

Decomposition

Non-primitive task

precond

method instance

s0 precond effects precond effectss1 s2

primitive taskprimitive task

operator instance operator instance

Non-primitive task

Shows the order plan will be executed later

Tasks vs Control Rules

• We saw control rules – actions NOT to consider

• HTN – actions and tasks to consider

Control Rules

• Classical planning efficiency suffers from combinatorial complexity (intractable)

• Prune function detects and cuts unpromising nodes– Can improve solving: exponential to polynomial

• Φ1(c,d,p) = [GOAL(in(c,p)) q GOAL(in(c,q))] [GOAL(on(c,d) e GOAL(on(c,e))]– No goal requiring c in another pile or on top of something else

(prune if exist?)– Holds if acceptable when container c is on item d in pile p

By: Steve Lee-Urban

HTN

• Instead of detecting and cutting unpromising nodes

• HTN methods are only applied only when the preconditions are satisfied.(:method (pick-up ?x)

((clear ?x))((!pick-up ?x))

)

Only pick up if x is on top

Domain

• Domain dependent – Bridge Baron game

• Domain independent – SHOP

D1 D2 D3

P1 P2 P3

D1 D2 D3

P

Domain

Planner

Planning procedures

HTN

• Domain consists of – methods and operators (SHOP- axioms)

• Problem consists of – domain, initial state, initial task network

(tasks to accomplish, with some ordering of the tasks defined)

• Solution– A plan: Totally ordered collection of primitive

tasks (SHOP)– General HTN planner - partially ordered collection of primitive tasks.

TASK• Task: an expression of the form t(u1,…,un)

– t is a task symbol, and each ui is a term (variable, constant, function expression (f t1 t2 tn)

– (move-block ?nomove)– (move-block (list ?x . ?nomove))

• Two types of task1. Non-primitive (compound) – decomposed into

subtasks.

2. Primitive – cannot be decomposed, know how to perform directly (task name is the operator name).

• (!drive-truck ?truck ?loc-from ?loc-to)

Methods and Operators• Defined a little differently in the textbook, but we’re more concerned with

coding it in SHOP so forget the book for now (book notations later on).

• Explain both with an example instead of notations. – Spent a good amount of time arranging the next slide – Help to visualize how they map to a real shop method or operator.

• method as defined by SHOP (see manual)(:method h [n1] C1 T1 [n2] C2 T2 … [nk] Ck Tk) h method head – task atom with no call terms [n1] OPTIONAL name for succeeding Ci Ti pair C1 conjunct or tagged conjunct? Precondition list?? T1 task list

• Operator(:operator h P D A) h head – primitive task atom with no call terms P precondition list (logical atoms) D delete list (logical atoms) A add list (logical atoms)

Operators and Methods• Method ( decomposes into subtasks)

(:method (drive-truck ?truck ?loc-from ?loc-to) ((same ?loc-from ?loc-to)) ((!do-nothing)) () ((!drive-truck ?truck ?loc-from ?loc-to)))– Notice the if else structure– Invoke non-primitive task: (drive-truck ?t ?x ?y)

• Operator (achieves PRIMITIVE TASKS) (:operator (!drive-truck ?truck ?locfrom ?locto) () ((truck-at ?truck ?locfrom)) ((truck-at ?truck ?locto)))Invoke primitive task: (!drive-truck ?t ?l1 ?l2)

Non prim

preconditions

Subtasks list

prim task

preconditions

delete list

Add list

Primitive task

Review

• Relationship between non-primitive tasks and methods– Decomposed by applying a method

• Relationship between primitive tasks and operators– Primitive task is achieved by applying an

operator

• Important that you understand this!!!

STN and HTN• STN – Simple Task Network (simplified version of HTN)

1. TFD – Total-order Forward Decomposition (used in SHOP)1. Example later

Input: tasks are totally orderedOutput: totally ordered plan

2. PFD – Partial-order Forward Decomposition (SHOP2)1. Example later

Input: tasks are partially orderedOutput: totally ordered plan

• HTN – generalization of STN1. More freedom about how to construct the task networks.2. Can use other decomposition procedures not just forward-

decomposition.3. Like Partial-order planning combined with STN Input: partial-order tasks Output: The resulting plan is partially ordered

Task Network• STN

w = (U, E) - an acyclic graph

U – set of task nodes

E – set of edges

• HTNw = (U, C)

U – set of task nodes

C – set of constraints (allow for generic task networks). Different planning procedures.

STN• STN method: 4-tuple

m = (name(m), task(m), precond(m), subtasks(m))– name(m): an expression of the form n(x1,…,xn)

• n – name of the method – method symbol

• x1,…,xn are parameters - variable symbols– task(m): a nonprimitive task

• task that this method could apply to• In SHOP, the task is the head of the method.

– precond(m): preconditions (literals)– subtasks(m): a sequence

of tasks t1, …, tk

do-nothing(p,q)task: move-stack(p,q)precond: top(pallet,p)subtasks: ()

Pseudo-code for TFD

Applying an operatorChanging the state

Decompose method into tasks

Randomly pick an applicable method

DWR• Move the containers, preserving ordering• Use loc1 as example.

Total Order Tasks (SHOP- STD)

Example TFDGoal: move-each-twice

Move-stack(p1a, p1b)

Move-stack(p1b, p1c)

Stack 2 and 3 empty.

Partially Ordered tasks (SHOP2 - PFD)

PFD Example

TFD & PFD

• STN doesn’t allow parallel execution, but can interleave steps (PFD)

• At the end the resulting plan is totally ordered (both TFD & PFD)

SHOP & SHOP2

• SHOP: Simple Hierarchical Ordered Planner

• SHOP is basically TFD STN

• SHOP2 is PFD STN – mainly with the addition of the unordered keyword for the task list. Note: resulting plan is still a totally-ordered task list.

Prefix Notation

• Domain and problem file are in Lisp like format.

• 7 + 3

• (+ 7 3)

• p(a,?x) -> (p a ?x)

• Any volunteer? p(f (a,b), ?y)

• Answer: (p (f a b) ?y)

• (call + 3 7)

Axioms (Horn clauses)

• (:- a C1 C2 C3 … Cn)

– a is true if C1 is true, else if C1 is false and C2 is true, or else if C1 to Cn-1 is false and Cn is true.

• (:- (same ?x ?x) nil)

• (same 5 5)

• (same 5 7)

Above Example• (:- (above ?a ?b) ((on ?a ?b)))• (:- (above ?a ?b) ((on ?a ?c) (above ?c ?b)))

• S0 = (on 1 2) (on 2 3) (on 3 4)• Is (above 1 4) true?

(on 1 2) (above 2 4)(on 1 2) (on 2 3) (above 3 4)(on 1 2) (on 2 3) (on 3 4)When all conjuncts are true, (above 1 4) is

true.

JSHOP

• Domain file: operators, methods, axioms

• Problem file: initial state, initial task list (goals)

• On Vega in /home/hah3/jshop

• To run one of the sample problemjava umd.cs.shop.JSJshop logistic/logistic.shp

logistic/Log_ran_problems_10.shp 1 all > output.txt

java –jar shop.jar logistic/logistic.shp logistic/Log_ran_problems_10.shp 1 all > output.txt

java umd.cs.shop.JSJshop domainfile problemfile logLevel numofplan

For reference:

• JSHOP manual in the jshop directory

• http://www.cs.umd.edu/~nau/papers/shop-ijcai99.pdf

• Contact me [email protected]