729G43 Artificiell intelligens Planering

Relevanta dokument
Planering. Planering vs sökning, 1. Planering vs sökning, 2. Handlingsrepresentation

729G43'Ar*ficiell'intelligens' Planering' Planering' Planering'vs'sökning,'1' Planering'vs'sökning,'2' Arne'Jönsson' HCS/IDA' '

Lek$on 4: Planering. Robin Keskisärkkä

Artificiell Intelligens Lektion 1

Artificiell Intelligens Övningsuppgifter

Artificiell Intelligens II Lektion 1

Fråga 5 (1 poäng) För att definiera ett sökproblem krävs...

Fråga 5 (1 poäng) För att definiera ett sökproblem krävs...

Tentamenskod: Inga hjälpmedel är tillåtna

Vad behövs för att skapa en tillståndsrymd?

de var svåra att implementera och var väldigt ineffektiva.

Asymptotisk analys innebär att... man försöker uppskatta vad som händer för stora indatamängder.

Antag att b är förgreningsfaktorn, d sökdjupet, T (d) tidskomplexiteten och M(d) minneskomplexiteten.

Asymptotisk analys innebär att... man försöker uppskatta vad som händer för stora indatamängder.

Utsagor (Propositioner) sammansatta utsagor sanningstabeller logisk ekvivalens predikat (öppna utsagor) kvantifierare Section

Artificial Intelligence

Shakey s värld med HTNplanering

STRIPS. En planerares uppbyggnad. Emma Torensjö. Artificiell Intelligens II. Linköpings Universitet HT Emma Torensjö.

Antag att b är förgreningsfaktorn, d sökdjupet, T (d) tidskomplexiteten och M(d) minneskomplexiteten.

Lektion 2: Sökagenter. Robin Keskisärkkä

Artificiell Intelligens Lektion 4

Logik och kontrollstrukturer

Antag att följande träd genereras i ett spelförande program om vi applicerar evalueringsfunktionen

Varför är logik viktig för datavetare?

Tommy Färnqvist, IDA, Linköpings universitet

Antag att b är förgreningsfaktorn, d sökdjupet, T (d) tidskomplexiteten och M(d) minneskomplexiteten.

Trädstrukturer och grafer

Sökning i ordnad lista. Sökning och sortering. Sökning med vaktpost i oordnad lista

Mycket kortfattade lösningsförslag till tenta i AI 6 nov 2003

729G74 IT och programmering, grundkurs. Tema 2. Föreläsning 3 Jody Foo,

729G74 IT och programmering, grundkurs. Tema 2. Föreläsning 3 Jody Foo,

Föreläsning 4: Kombinatorisk sökning

A B C D E F A B C D E F (3) Svar: Tabellen ger grafen:

Sätt att skriva ut binärträd

Logisk semantik I. 1 Lite om satslogik. 1.1 Konjunktioner i grammatisk bemärkelse. 1.2 Sant och falskt. 1.3 Satssymboler. 1.

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

DD1361 Programmeringsparadigm HT17

Dataabstraktion. TDDD73 Funktionell och impterativ programmering i Python Föreläsning 12. Peter Dalenius Institutionen för datavetenskap

729G04 Programmering och diskret matematik. Python 3: Loopar

Grundläggande logik och modellteori (5DV102)

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

Grafer, traversering. Koffman & Wolfgang kapitel 10, avsnitt 4

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Föreläsning 13 och 14: Binära träd

Introduktion till programmering SMD180. Föreläsning 4: Villkor och rekursion

Dataabstraktion. TDDD73 Funktionell och imperativ programmering i Python Föreläsning 12. Peter Dalenius Institutionen för datavetenskap

Datorlingvistisk grammatik I Institutionen för lingvistik och filologi Oktober 2007 Mats Dahllöf

Sökning. Sökning. Köoperationer. Generell sökalgoritm

Tentamen i. TDDA 69 Data och programstrukturer

Översikt. Varför lära sig detta? Motivering Syntax och semantik Imperativa språkets byggstenar och Python. PL-boken Kap 1 (repetition):

Språket Python - Del 1 Grundkurs i programmering med Python

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

Djupstruktur och ytstruktur

Föreläsning 2 Programmeringsteknik och C DD1316

Tentamen: Programutveckling ht 2015

Grundläggande Datalogi

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

TDDC74 Programmering, abstraktion och modellering DUGGA 2

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

I en deterministisk omgivning beror nästa tillstånd bara av agentens handling och nuvarande tillstånd.

Programmering i C++ EDA623 Mer om klasser. EDA623 (Föreläsning 6) HT / 26

Centrala begrepp i prolog och logikprogrammering. Annamaris lista

Övning 1 - Abstrakta datatyper

Programmering A. Johan Eliasson

Python. Vi har ofta behov av att behandla datastrukturer på ett enhetligt sätt så att vi kan göra samma sak i flera olika program.

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Tommy Färnqvist, IDA, Linköpings universitet. 1 Kursadministration 1. 2 Introduktion Varför logik? Satslogik... 2

Några inbyggda funktioner (med resultat!) Introduktion till programmering D0009E. Föreläsning 4: Villkor och rekursion. Modulus-operatorn.

Granskning av gränssnitt. Mattias Arvola

Grundläggande logik och modellteori

Föreläsning 3-4 Innehåll

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Grundläggande datalogi - Övning 2

Föreläsning Datastrukturer (DAT037)

Objektorienterad programmering Föreläsning 2

DD1361 Programmeringsparadigm HT15

Övningshäfte 1: Logik och matematikens språk

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

Artificiell intelligens

Exempel på ett litet Ada-program

Innehållsförteckning

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Föreläsning Datastrukturer (DAT036)

Dagens föreläsning Programmering i Lisp Fö 7. Sammanfattning funktionell programmering Exempel på funktionella programspråk

729G74 IT och programmering, grundkurs. Tema 2, Föreläsning 2 Jody Foo,

Datalogi I, grundkurs med Java 10p, 2D4112, Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera förs

Programmeringsteknik I

DD1314 Programmeringsteknik

Övning 3 - Tillämpad datalogi 2012

Grunderna i stegkodsprogrammering

Pythons standardbibliotek

I en deterministisk omgivning beror nästa tillstånd bara av agentens handling och nuvarande tillstånd.

MicroPython Ett textbaserad programmeringsspråk för Micro:bit

Föreläsning REPETITION & EXTENTA

Tentamen Datastrukturer D DAT 035/INN960 (med mycket kortfattade lösningsförslag)

TDDC74 Programmering, abstraktion och modellering DUGGA 2

DD1350 Logik för dataloger. Fö 2 Satslogik och Naturlig deduktion

Övning2. Variabler. Data typer

Transkript:

729G43 Artificiell intelligens Planering Arne Jönsson HCS/IDA Planering Sökning vs planering Planeringsnotationer Enkel planering Partialordningsplanering Resursplanering Hierarkisk planering Planering i icke-deterministiska domäner Linköpings universitet 1

Planering vs sökning, 1 Sökning Handlingarna ger möjliga nya tillstånd Tillstånden är kompletta, oftast enkla omvärldsbeskrivningar, tillståndsvektorer Agenten kan testa om målet är uppnått genom att applicera en heuristisk funktion, f, på ett tillstånd, p, f(p). Kan inte välja handling som för närmare målet utifrån f(p). Sökningen leder till en obruten sekvens av handlingar Planering vs sökning, 2 Planering Använder en mer uttrycksfull representation som låter agenten resonera om tillstånd och handlingar FOPL kopplar handlingar och tillstånd Söker inte blint utan kan välja operatorer som för agenten framåt Agenten kan ta de stora besluten först Låter agenten lägga till handlingar när de behövs Arbetar med flera delplaner samtidigt Linköpings universitet 2

Handlingsrepresentation STRIPS-notationen: Preconditions: villkor som måste vara uppfyllda för att utföra handlingen Effect: effekten av att utföra handlingen. Delas ibland i en add list och en delete list Bara positiva predikat i tillstånd, inga negationer Closed world assumption Bara konjunktioner Inga kvantifierare Ingen likhet Ingen typning Inga situationsvariabler Exempel, Blocks world Predikat: On(x, y) Clear(x) Handling: Move(b, x, y) Precond: On(b, x) Clear(b) Clear(y) Effect: On(b, y) Clear(x) On(b, x) Clear(y) STRIPS hade ADD och DELETE: ADD: On(b, y) Clear(x) DELETE: On(b, x) Clear(y) Linköpings universitet 3

Exempel A B C On(A,B) Clear(A) Clear(C) On(B, Table) On(C, Table) Move(A, B, C) Precond: On(A, B) Clear(A) Clear(C) ADD: On(A, C) Clear(B) DELETE: Clear(C) On(A, B) A B C On(A,C) Clear(A) Clear(B) On(B, Table) On(C, Table) STRIPS Effektiv men begränsad Tar bort predikat, DELETE-list, dvs icke-monoton Linköpings universitet 4

ADL Mer uttrycksfullt Tillåter negation Open world assumption Kraftfullare effekter: P Q innebär också P Q Kvantifierade målvariabler: ex, x At(P, x) At(R, x) Konjunktion och disjunktion Villkorliga effekter: when P : E Likhet Typning: b : Block Planeringsalgoritmer Generera en sekvens av handlingar från start till mål Framåtsökning Bakåtsökning STRIPS Linköpings universitet 5

STRIPS-operatorer Stack(x, y) P: Clear(y) Ù Holdning(x) D: Clear(y) Ù Holdning(x) A: ArmEmpty Ù On(x, y) UnStack(x, y) P: On(x,y) Ù Clear(x) Ù ArmEmpty D: On(x, y) Ù ArmEmpty A: Holdning(x) Ù Clear(y) PickUp(x) P: Clear(x) Ù OnTable(x) Ù ArmEmpty D: OnTable(x) Ù ArmEmpty A: Holdning(x) PutDown(x) P: Holdning(x) D: Holdning(x) A: OnTable(x) Ù ArmEmpty Exempel Start B C A On(B, C) Clear(A) Clear(B) OnTable(A) OnTable(C) ArmEmpty Uppfyllt A Mål B C On(B, C) On(A, B) OnTable(C) ArmEmpty Leta efter operatorer som har On(x, y) på sin ADD-list, dvs Stack(A, B) Precond: Clear(B), Holding(A) Leta efter operator som har Holding(x) på ADD-list: PickUp eller UnStack Välj PickUp(A). Precond: ArmEmpty, Clear(A), OnTable(A) uppfyllt Linköpings universitet 6

Nytt exempel Start C A B On(C, A) Clear(C) Clear(B) OnTable(A) OnTable(B) ArmEmpty A Mål B C On(A, B) On(B, C) OnTable(C) ArmEmpty Börja med ett mål, t.ex. On(A, B), ger UnStack(C, A), PutDown(C), PickUp(A), Stack(A, B) Ta sen nästa mål On(B, C). Ger UnStack(A, B), PutDown(A), PickUp(B), Stack(B, C) Nu är inte On(A, B) uppfyllt så PickUp(A), Stack(A, B) Partialordningsplanering Problemet beror på att STRIPS arbetar med ett mål i taget Vill kunna avbryta uppfyllandet av ett mål och påbörja nästa och sen fortsätta med det första igen Uppnå On(A, B) UnStack(C, A), PutDown(C) Fortsätt med On(B, C) PickUp(B), Stack(B, C) Återuppta On(A, B) PickUp(A), Stack(A, B) Partialordningplanerare skapar partiellt ordnade delplaner enligt least commitment strategy, dvs fatta så få beslut som möjligt Linköpings universitet 7

Ännu inte uppfyllt men först partialordnas delplanerna START OnTable(A) OnTable(B) ON(C,A) ArmEmpty Clear(C) Clear(B) Clear(A) OnTable(A) ArmEmpty PickUp(A) Holding(A) ArmEmpty OnTable(A) Clear(B) OnTable(B) ArmEmpty PickUp(B) Holding(B) ArmEmpty OnTable(B) {x/a} On(C,A) Clear(C) ArmEmpty UnStack(C,A) Holding(C) Clear(A) ArmEmpty On(C,A) Clear(B) Holding(A) Stack(A,B) ArmEmpty ON(A,B) Clear(B) Holdning(A) Clear(C) Holding(B) Stack(B,C) ArmEmpty On(B,C) Clear(C) Holdning(B) Holding(C) PutDown(C) ArmEmpty OnTable(C) Holdning(C) On(A,B) On(B,C) OnTable(C) MÅL Partialordna, 1 Operatorer som lagts till för att uppnå delmål partialordnas PickUp(A) Stack(A,B) PickUp(B) Stack(B,C) UnStack(C,A) PutDown(C) Vid konflikt ordnas operatorer så att konflikten undviks Stack(A,B) är i konflikt med PickUp(B) eftersom Stack tar bort Clear(B) Stack(B,C) är pss i konflikt med UnStack(C,A) Partialordna: PickUp(B) Stack(A,B) UnStack(C, A) Stack(B,C) Linköpings universitet 8

Partialordna, 2 Finns det ytterligare ordning mellan de partiellt ordnade planerna? PickUp(A) Stack(A,B) PickUp(B) Stack(B,C) UnStack(C,A) PutDown(C) PickUp(B) Stack(A,B) UnStack(C,A) Stack(B,C) PickUp(B) (och därmed också Stack(B,C)) före Stack(A,B) och UnStack(C,A) före Stack(B,C) UnStack(C,A) PutDown(C) PickUp(B) Stack(B,C) PickUp(A) Stack(A,B) START OnTable(A) OnTable(B) ON(C,A) ArmEmpty Clear(C) Clear(B) On(C,A) Clear(C) ArmEmpty UnStack(C,A) Holding(C) Clear(A) ArmEmpty On(C,A) Holding(C) PutDown(C) ArmEmpty OnTable(C) Holdning(C) Clear(B) OnTable(B) ArmEmpty PickUp(B) Holding(B) ArmEmpty OnTable(B) Clear(C) Holding(B) Stack(B,C) ArmEmpty On(B,C) Clear(C) Holdning(B) Clear(A) OnTable(A) ArmEmpty PickUp(A) Holding(A) ArmEmpty OnTable(A) Clear(B) Holding(A) Stack(A,B) ArmEmpty ON(A,B) Clear(B) Holdning(A) On(A,B) On(B,C) OnTable(C) MÅL Alla preconditions uppfyllda så planeraren är klar Linköpings universitet 9

Planeringsgraf Graf med en sekvens av nivåer som svarar mot temporala steg i planen. Bara för propositioner, dvs inga variabler i tillstånden Representerar handlingar och icke-handlingar Ex S 0 A 0 S 1 Have(Cake) Eaten(Cake) Eat(Cake) Have(Cake) Have(Cake) Eaten(Cake) Eaten(Cake) Mutexlänk Ömsesidigt uteslutande relationer Mutexlänkar Inkonsistenta effekter en handling negerar en annan handlings effekt Interference en handling negerar en annans precondition Konkurrerande behov två handlingars preconditions är ömsesidigt uteslutande Inkonsistent stöd två satser på samma nivå är varandras komplement eller alla handlingar som kan uppnå satserna är ömsesidigt uteslutande Linköpings universitet 10

Planering GraphPlan 1. Skapa en planeringsgraf med djup k 2. Om det finns en lösning returnera den 3. I annat fall öka djupet med 1 och gå till 1. Det finns en lösning om: Alla fakta i målet finns på djup k och inte är mutex Om det för alla delmål på djup k-1, k-2, 1 finns en handling som inte är mutex med någon annan handling Planen är en linjärisering av eventuella parallella handlingar GraphPlan def graphplan(problem): graph = initialplanninggraph(problem) goals = goals(problem) while True: if goals all non-mutex in last level of graph: solution = extractsolution(graph, goals, length(graph)) if solution <> failure: return solution elif nosolutionpossible(graph): return failure graph = expandgraph(graph, problem) Linköpings universitet 11

Punkteringsexemplet Init(At(Flat, Axle) Ù At(Spare, Trunk)) Goal(At(Spare, Axle)) Action(Remove(Spare, Trunk), Precond: At(Spare, Trunk), Effect: At(Spare, Trunk) Ù At(Spare, Ground)) Action(Remove(Flat, Axle), Precond: At(Flat, Axle), Effect: At(Flat, Axle) Ù At(Flat, Ground)) Action(PutOn(Spare, Axle), Precond: At(Spare, Ground) Ù At(Flat, Axle), Effect: At(Spare, Ground) Ù At(Spare, Axle)) Action(LeaveOvernight, Precond: Effect: At(Spare, Ground) Ù At(Spare, Axle) Ù At(Spare, Trunk) Ù At(Flat, Ground) Ù At(Flat, Axle)) S 0 A 0 S 1 At(Spare,Trunk) At(Spare,Trunk) Remove(Spare,Trunk) At(Spare,Trunk) At(Flat,Axle) At(Spare,Axle) Remove(Flat,Axle) LeaveOvernight At(Flat,Axle) At(Flat,Axle) At(Spare,Axle) CWA At(Flat,Ground) At(Spare,Ground) At(Flat.Ground) At(Flat,Ground) At(Spare,Ground) At(Spare,Ground) Linköpings universitet 12

S 0 A 0 S 1 A 1 S 2 At(Spare,Trunk) At(Spare,Trunk) At(Spare,Trunk) Remove(Spare,Trunk) At(Spare,Trunk) Remove(Spare,Trunk) At(Spare,Trunk) Remove(Flat,Axle) Remove(Flat,Axle) At(Flat,Axle) LeaveOvernight At(Spare,Axle) At(Flat,Ground) At(Spare,Ground) At(Flat,Axle) At(Flat,Axle) LeaveOvernight At(Spare,Axle) PutOn(Spare,Axle) At(Flat.Ground) At(Flat,Ground) At(Spare,Ground) At(Spare,Ground) At(Flat,Axle) At(Flat,Axle) At(Spare,Axle) At(Spare,Axle) At(Flat.Ground) At(Flat,Ground) At(Spare,Ground) At(Spare,Ground) Avancerad planering Resursplanering Handlingar tar en viss tid att utföras Planhierarkier Abstrakta operatorer som håller steg i planen som i sig implementerar operatorn Expanderas till dess att planen bara innehåller primitiva operatorer Planering i icke-deterministiska domäner Världen är inte komplett. Kan t.ex. inte se allt som finns Världen är inte korrekt. Någon kan t.ex. flytta objekt eller handlingar misslyckas Linköpings universitet 13