590 likes | 756 Views
Gebruiken. Opdracht 2. Deadline: Vandaag, om 12u!. Redeneren. Verwerven. Voorstellen. Gebruiken. Waar zijn we nu?. ?. Blokjeswereld. Blokjes: A, B, C Greep G die één blokje kan verplaatsen Wat moeten we doen om het doel te bereiken?.
E N D
Opdracht 2 Deadline: Vandaag, om 12u!
Redeneren Verwerven Voorstellen Gebruiken Waar zijn we nu?
? Blokjeswereld Blokjes: A, B, C Greep G die één blokje kan verplaatsen Wat moeten we doen om het doel te bereiken?
Gebruiken van kennis om een doel te bereiken: planning • Kennis: • I: initiële toestand(en) • D: doeltoestand(en) • acties (overgangregelstussen de toestanden) • Vind: een plan = lineaire reeks acties die van (een van) I naar (een van) D leiden • een pad in een toestandsruimte
Aannames: klassiek planning • Toestandsruimte is • eindig • discreet • zichtbaar • we hebben een volledige kennis over het toestand • Toestandovergangen zijn • deterministisch • veroorzaakt alleen door het plan • momenteel
Blokjeswereld: predicaten • Blokjes • opTafel(X), op(X,Y), vrij(X) • Greep • leeg(X) • Greep en blokje • houdtVast(X,Y) • Geen functiesymbolen
Blokjeswereld • Verzameling van atomen zonder variabelen • Acties: naam + parameters {opTafel(A), opTafel(B), op(C, A), leeg(G), vrij(C), vrij(B)}
Naïeve aanpak • Probeer alle mogelijke overgangen totdat het doel bereikt is!
Beter idee: voor iedere actie • naam: zetNeerOpTafel(X, Y) • parameters: X (greep), Y (blokje) • literaal: atoom of negatie van een atoom • pre: verzameling van literalen • {houdtVast(X,Y)} • effect : verzameling van literalen • {houdtVast(X,Y), leeg(X), vrij(Y),opTafel(Y)}
Toepassing van acties • Voor een verzameling literalen : • + - deelverzameling van atomen • - - deelverzameling van de negaties van atomen • Actie a is toepasbaar op toestand s als • pre+(a) s, pre-(a) s = • Toepassing van a op s is (s,a) = s \ effect-(a) effect+(a)
Plan • Plan = <a1, …, an> • a1, …, an zijn acties • (s,<a1, …, an>) = • s, als n = 0 • ((s, a1), <a2, …, an>), als n > 0 en a1 toepasbaar is op s • is toepasbaar op s als (s,) gedefinieerd is
Vlugge Vraag • (s) = { | is toepasbaar op s} (s) = {(s,) | (s)} Welke stelling is waar? • (s) is een eindige verzameling • (s) is een eindige verzameling • A en B zijn waar • Nog A nog B is waar
Plan • Gegeven I en D, er bestaat een plan als • Dus, bereken (s) voor alle sI en controleer (*) (*)
Het bestaan van een plan • Toestandsruimte is eindig • het bestaan van een plan is beslisbaar • Gegeven verzameling acties • Zonder negatieve effecten • met negatieve pre: NP • alleen positieve pre: P • Met negatieve effecten: PSPACE
ALC, neg eff pos eff, pos pre pos eff, pos/neg pre SHOIN PSPACE NP RE NEXPTIME EXPTIME P coNP coRE ALL
Plan: Voorwaarts zoeken Invoer: A, I, D Uitvoer: Kies s uit I := lege plan Herhaal Als sD, stop, is een oplossing Anders, Kies (niet deterministisch) aA toepasbaar op s Als er geen zijn, faal Anders, s := (s,a) := .a
Vlugge Vraag • I = {{waarde(v1,’Ma’), waarde(v2,’Di’), waarde(v3,’Wo’)}} • D = {{waarde(v1,’Di’), waarde(v2,’Ma’}} • A = {toekenning(v,w,x,y) | v,w{v1,v2,v3}, x,y {‘Ma’,’Di’,’Wo’}}, waar • naam: toekenning(v,w,x,y) • pre: waarde(v,x), waarde(w,y) • effect: waarde(v,x), waarde(v,y) • Wat is het minimale aantal stappen die “V.z.” nodig heeft om een plan te vinden?
Vlugge Vraag Eindigheid van het “voorwaarts zoeken” is niet gegarandeerd: Hoe passen jullie het algoritme aan om dit probleem te vermijden?
Plan: Achterwaarts zoeken Invoer: A, I, D Uitvoer: Kies s uit D := lege plan Herhaal Als sI, stop, is een oplossing Anders, Kies aA relevant is voor s Als er geen zijn, faal Anders, s := -1(s,a) := a.
Relevant? -1? • Herh: actie a is toepasbaar op toestand s als • pre+(a) s, pre-(a) s = • Actie a is relevant op toestand s als • effect+(a) s ≠ , effect-(a) s = • Herh:toepassing van een toepasbare a op s is (s,a) = s \ effect-(a) effect+(a) • Regressie van s voor a is -1(s,a) = s \ effect(a) pre(a)
Vlugge Vraag Als de niet deterministische keuze alle mogelijkheden doorloopt, dan • vindt “voorwaarts zoeken” alle plannen. • vindt “achterwaarts zoeken” alle plannen. • A en B zijn waar. • nog A nog B is waar.
Probleem • Zoekruimte kan enorm zijn • Doel: • zoekruimte verkleinen • maar dan kunnen we ook sommige plans missen… • volledigheid wordt opgeofferd
Achterwaarts – volledigheid = STRIPS (1) Kies s uit D (2) := lege plan (3) Herhaal (4) Als sI, stop, is een oplossing (5) Anders, (6) Kies aA relevant voor s (7) Als er geen zijn, faal (8) Anders, (9) D’ := alle toestanden z.d. pre(a) geldt (10) ’:= STRIPS(I,A,D’) (11) Als ’ faalt, faal (12) Anders (13) s := ((s, ’),a) (14) := . ’.a
? Vlugge Vraag • Acties: blokje nemen, blokje neerzetten. • Hoeveel stappen telt door STRIPS gevonden plan voor?
Antwoord… KBS/planningVideo.avi
STRIPS vs. Achterwaarts zoeken • Recursieve oproep: één onderdeel van de doel-conjunctie. • Eenmaal ’ gevonden is, kan die niet meer herzien worden. • Beide: • beperken de zoekruimte • maar leiden tot onvolledigheid
Probleem met STRIPS 3 1 2 5 4 Wij moeten het torentje afbreken om verder te gaan!
Andere aanpakken • Reducties • SAT: vervulbaarheid van prepositionele formules • CSP veralgemening van SAT voor domeinen andere dan {false, true} • Planninggrafen • Heuristieken • en veel meer!
Reductie naar SAT • SAT: vervulbaarheid van CNF formules • CNF: C1 … Cn • Ci: D1,i … D mi,i • D: x of x • x – variabel • SAT is NP-volledig • Twee praktisch efficiënte algoritmen
Reductie naar SAT Invoer: Acties, Initiële Toestanden, Doeltoestanden CNF coderen Oplossen Plan extraheren Variabel- toekenning
Invoer: Acties, Initiële Toestanden, Doeltoestanden CNF coderen • Atoom uniek variabel • opTafel(A) xopTafel(A). • Toestand conjunctie van variabelen voor de geldige atomen • xopTafel(A) xopTafel(B) xop(C,A) …
Invoer: Acties, Initiële Toestanden, Doeltoestanden CNF coderen • xopTafel(A) betekent dat xop(A,B) xop(A,C). • Hoe kunnen we het coderen? • Toestand = conjunctie • van variabelen voor de geldige atomen • van negaties van variabelen voor de niet geldige atomen
Invoer: Acties, Initiële Toestanden, Doeltoestanden CNF coderen Vlugge Vraag • Hoeveel conjuncten telt de voorstelling van {opTafel(A), opTafel(B), op(C, A), vrij(C), vrij(B)} als er geen andere predicaten en constanten zijn? A. 6 B. 13 C. 20
Invoer: Acties, Initiële Toestanden, Doeltoestanden CNF coderen • Maar, wat betekent xopTafel(A)? • nu? morgen? • Stel dat onze plan n stappen telt… • uniek variabel per atoom en stap! • dus: x(opTafel(A), 0), …, x(opTafel(A), n)
Invoer: Acties, Initiële Toestanden, Doeltoestanden CNF coderen • Initiële toestand: alle variabelen in 0. • x(opTafel(A), 0) x(opTafel(B), 0) x(opTafel(B), 0) … • Doeltoestand • x(op(A,B), n) x(op(B,C), n) x(op(B,A), n) … • Acties: unieke variabel per actie en per stap: • ai (pi ei+1) • p pre(a), e effect(a)
Invoer: Acties, Initiële Toestanden, Doeltoestanden CNF coderen Vlugge Vraag • zetNeerOpTafel(greep, blokje) • Hoeveel variabelen hebben we nodig om deze actie voor te stellen? A. n B. 2n C. 3n
Invoer: Acties, Initiële Toestanden, Doeltoestanden CNF coderen • Initiële en doeltoestanden en acties • het is niet voldoende! • Twee extra eisen: • er is maar één actie per stap • atomen die niet bij de effecten horen veranderen niet
Invoer: Acties, Initiële Toestanden, Doeltoestanden CNF coderen • Een actie per stap • Voor alle acties a, b en alle 0 i n-1: ai bi • Raamaxioom: atomen die niet bij de effecten horen veranderen niet • x(atoom, i) x(atoom, i+1) ( ai) x(atoom, i) x(atoom, i+1) ( bi). • a z.d. atoom effect+(a) • b z.d. atoom effect-(b)
CNF • Planningprobleem: initiële toestanden doeltoestanden acties een actie per stap raamaxioom coderen
Vlugge Vraag • Aanname: plan heeft n stappen. Hoe weten we wat n is? 1. Als we een plan van lengte n weten te vinden, hoe kunnen we alle plannen vinden die niet langer zijn dan n?
Vlugge Vraag • Aanname: plan heeft n stappen. Hoe weten we wat n is? 2. Als we alle plannen kunnen vinden die niet langer zijn dan n, hoe vinden we alle plans? Wat is de maximale lengte van een plan?
Reductie naar SAT Invoer: Acties, Initiële Toestanden, Doeltoestanden CNF coderen Oplossen Plan extraheren Variabel- toekenning
Hoe los je SAT op? • Davis-Putnam • voor een probleem van lengte n • geeft een oplossing desda een oplossing bestaat • Stochastische procedure • “desda” geldt niet • soms beter geschikt voor grotere problemen
Davis Putnam (1) • Opmerking 1: x (x y z) • x is true en (y z) • Opmerking 2: x (x y z) • x is false • Opmerking 3: (x y) (x z) • of x is true en z • of x is false en y
Davis Putnam (2) Davis-Putnam(, oplossing) • = true return oplossing • = false fail • = x ’ Davis-Putnam(’[x/true], oplossing {x/true}) • = x ’ Davis-Putnam(’[x/false], oplossing {x/false}) • anders kies een variabel y in , • Davis-Putnam(y , oplossing) • Davis-Putnam(y , oplossing)
Davis Putnam: Boom x (x y z) (x y z) (x y z) (x y) {x/true} (y z) ( y z) (y z) y (y z) ( y z) (y z) y (y z) ( y z) (y z) {y/true} {y/false} z z z {z/false} {z/false} fail true
Vlugge Vraag • Wat is de maximale diepte van zo’n Davis Putnam boom?
Davis Putnam: voor- en nadelen • Een oplossing wordt gevonden desda er een bestaat. • Zoekproces kan te lang duren