Lek$on 4: Planering Robin Keskisärkkä
Sy7e Få en känsla för möjligheter och begränsningar med planering Öva på att modellera planeringsproblem för en planerare
Förberedelser Läs kapitel 11 i kursboken Läs igenom labbinstruktionerna Läs igenom How to write domain and problem definitions in PDDL som finns i instruktionerna
Planerare IPP Optimal planerare baserad på Graphplan Iterative deepening A* FF Icke-optimal planerare Hittar ofta bra lösningar snabbt Hill climbing
PDDL Planning Domain Defnition Language Ett försök att standardisera sättet att definiera problem och domäner inom planering Täcker STRIPS-notationen men är ej begränsad till denna STRIPS-delmängden räcker för G-nivå ADL krävs för VG
PDDL-domän (define (domain DOMAIN_NAME) (:requirements [:strips] [:equality] [:typing] [:adl]) (:predicates (PREDICATE_1_NAME [?A1?A2...?An]) (PREDICATE_2_NAME [?B1?B2...?Bn])... ) (:action ACTION_1_NAME [:parameters [?P1?P2...?Pn] [:precondition PRECOND_FORMULA] [:effect EFFECT_FORMULA] ) (:action ACTION_2_NAME... )... )
PDDL-problem (define (problem PROBLEM_NAME) (:domain DOMAIN_NAME) (:objects A B C...) (:init (PREDICATE_NAME [A1 A2... An]) (PREDICATE_NAME [A1 A2... An])...) ) (:goal (PREDICATE_NAME [A1 A2... An]) (PREDICATE_NAME [A1 A2... An])...)
Exempel: Blocks world Blocks world Boxar kan staplas men endast fria lådor kan flyttas Sussmans anomali A C B B A C
PDDL vs STRIPS Move(A, B, C) Precond: Block(A) Block(B) Block(C) On(A, B) Clear(A) Clear(C) ADD: On(A, C) Clear(B) DELETE: Clear(C) On(A, B) (:action move :parameters (?a?b?c) :precondition (and (block?a) (block?b) (block?c) (on?a?b) (clear?a) (clear?c)) :effect (and (on?a?c) (clear?b) (not (clear?c)) (not (on?a?b)))
PDDL: Domändefini$on (define (domain blocks-world) (:requirements :strips) (:predicates (on?x?y) (on-table?x) (clear?x) (arm-empty) (holding?x) (block?x)) ;; actions: pick-up, put-down, unstack, stack ;;...
PDDL: Handlingar/operatorer (:action unstack :parameters (?b1?b2) :precondition (and (block?b1) (clear?b1) (block?b2) (on?b1?b2) (arm-empty)) :effect (and (holding?b1) (not (clear?b2)) (not (arm-empty))) )
PDDL: Problemdefini$on (define (problem sussman-anomaly) (:domain blocks-world) (:objects a b c ) (:init (block a) (block b) (block c) (on-table b) (on c a) (clear b) (clear c) (arm-empty) (:goal (and (on a b) (on b c)) )
Lösningsexempel 1. unstack(c, A) 2. put-down(c) 3. pick-up(b) 4. stack(b, C) 5. pick-up(a) 6. stack(a, B) C B A
Uppgi7 Två uppgifter Logistik Fire Emergency VG-uppgift: Utöka Fire Emergency-domänen med hjälp av ADL
Uppgi7 1 Experimentera med IPP och FF Utöka logistikdomänen och modifiera problemet Diskutera era resultat För att testa era hypoteser om vad som påverkar problems komplexitet kan ni experimentera med att göra egna ändringar Visa på någon typ av insikter
Uppgi7 2 Implementera det som saknas i problem- och domänfilerna Läs instruktionerna Var noggranna, läs flera gånger om ni är tveksamma Använd bilden som referens och fundera över vilka antaganden måste ni göra För VG: Utöka domänen med hjälp av ADL
Fire Emergency
Uppgi7 2: Handlingar VehicleArrive VehicleDepart RescuePatient MovePatient LoadPatient UnloadPatient
Tips Börja smått En handling i taget Testa operatorerna på små problem som bara kräver en eller två handlingar Skilj mellan statiska och icke-statiska predikat Vanligaste felet är parenteser som inte matchar Två vanliga logiska fel är relaterade till qualification och ramification
Lek$onsuppgi7 En apa sitter i ett rum. I taket hänger en banan som apan inte kan nå. På golvet ligger en pinne som apan kan använda för att slå på bananen så att den ramlar ner på golvet. Apan kan bara hålla en sak i taget. Målet är att apan ska äta bananen.
21 Lek$onsuppgi7 Vilka handlingar och objekt behövs? Skriv ner dessa i STRIPS-notation. Hur ser start och måltillstånd ut? Ditt axiom för att lyfta något tar antagligen inte hänsyn till att det kan vara för tungt för att lyfta. Är detta ett exempel på ramification eller qualification problemet? Uppdatera handlingarna för att klara av både små och stora objekt. Om tid finns: Försök att implementera en handling i PDDL
Live-kodning
www.liu.se