• No results found

729G43 Artificiell intelligens Planering

N/A
N/A
Protected

Academic year: 2022

Share "729G43 Artificiell intelligens Planering"

Copied!
13
0
0

Loading.... (view fulltext now)

Full text

(1)

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

(2)

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

(3)

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)

(4)

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

(5)

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

(6)

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

B C A

On(B, C) ∧ On(A, B) ∧ OnTable(C) ∧ ArmEmpty B

C A

On(B, C) ∧ Clear(A) ∧ Clear(B) ∧ OnTable(A) ∧ OnTable(C) ∧ ArmEmpty Start

Mål

Uppfyllt

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

(7)

Nytt exempel

B C A

On(A, B) ∧ On(B, C) ∧ OnTable(C) ∧ ArmEmpty C

A B

On(C, A) ∧ Clear(C) ∧ Clear(B) ∧ OnTable(A) ∧ OnTable(B) ∧ ArmEmpty Start

Mål

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

(8)

START

MÅL

OnTable(A) OnTable(B) ON(C,A) ArmEmpty Clear(C) Clear(B)

On(A,B) On(B,C) OnTable(C)

Stack(A,B)

ArmEmpty ON(A,B)

¬Clear(B) ¬Holdning(A) Clear(B) Holding(A)

Stack(B,C)

ArmEmpty On(B,C)

¬Clear(C) ¬Holdning(B) Clear(C) Holding(B)

PutDown(C)

ArmEmpty OnTable(C)

¬Holdning(C) Holding(C)

PickUp(A)

Holding(A)

¬ArmEmpty ¬OnTable(A) Clear(A) OnTable(A) ArmEmpty

PickUp(B)

Holding(B)

¬ArmEmpty ¬OnTable(B) Clear(B) OnTable(B) ArmEmpty

UnStack(C,A)

Holding(C) Clear(A)

¬ArmEmpty ¬On(C,A) On(C,A) Clear(C) ArmEmpty {x/A}

Ännu inte uppfyllt men först partialordnas delplanerna

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)

(9)

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)

Stack(B,C)

ArmEmpty On(B,C) ¬Clear(C) ¬Holdning(B) Clear(C) Holding(B)

PutDown(C)

ArmEmpty OnTable(C) ¬Holdning(C) Holding(C)

PickUp(A)

Holding(A) ¬ArmEmpty ¬OnTable(A) Clear(A) OnTable(A) ArmEmpty

PickUp(B)

Holding(B) ¬ArmEmpty ¬OnTable(B) Clear(B) OnTable(B) ArmEmpty

UnStack(C,A)

Holding(C) Clear(A) ¬ArmEmpty ¬On(C,A) On(C,A) Clear(C) ArmEmpty

(10)

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

Have(Cake)

¬Eaten(Cake)

Eat(Cake)

Have(Cake)

¬Have(Cake)

Eaten(Cake)

¬Eaten(Cake)

Mutexlänk

S0 A0 S1

Ö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

(11)

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)

(12)

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))

Remove(Spare,Trunk) ¬At(Spare,Trunk)

At(Spare,Ground)

At(Spare,Trunk)

S0 A0 S1

At(Flat,Axle)

At(Spare,Trunk)

At(Flat,Axle)

¬At(Spare,Axle)

¬At(Flat.Ground)

¬At(Spare,Ground) LeaveOvernight

¬At(Spare,Axle)

¬At(Flat,Ground)

¬At(Spare,Ground) CWA

Remove(Flat,Axle)

¬At(Flat,Axle)

At(Flat,Ground)

(13)

Remove(Spare,Trunk) ¬At(Spare,Trunk)

At(Spare,Ground) At(Spare,Trunk)

S0 A0 S1

At(Flat,Axle)

At(Spare,Trunk)

At(Flat,Axle)

¬At(Spare,Axle)

¬At(Flat.Ground)

¬At(Spare,Ground) LeaveOvernight

¬At(Spare,Axle)

¬At(Flat,Ground)

¬At(Spare,Ground)

Remove(Flat,Axle)

¬At(Flat,Axle)

At(Flat,Ground)

Remove(Spare,Trunk)

A1 S2

LeaveOvernight Remove(Flat,Axle)

PutOn(Spare,Axle) At(Spare,Axle)

¬At(Flat,Axle) At(Flat,Axle)

¬At(Spare,Axle)

At(Spare,Ground)

¬At(Flat.Ground)

¬At(Spare,Ground) At(Flat,Ground)

¬At(Spare,Trunk) At(Spare,Trunk)

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

References

Related documents

3 348351 Säkring Sulake Fuse 4 348352 Säkring Sulake Fuse 5 7001779 Relä Rele Relay 6 J15694-6599 Glödrelä Hehkurele Glow relay 7

Pos FigDetalj nrPart noAntalQuantityBenämningDescriptionAnmNot 12408221Lastarfäste vänster SMS TrimaLoader bracket left SMS Trima 22408231Lastarfäste höger SMS TrimaLoader bracket

Ett lyckat boksamtal är enligt studiens resultat ett lektionstillfälle där alla elever får komma till tals, eftersom lektionen är varierad med flera olika

De finns ett samband mellan säkerhetspolitiska mål och deltagandet i den militära insatsen. Detta är dock inte uppenbart eller inte tydligt uttryckt i beslut och

The vibratory identification results for sounds processed using the adapted version of Algorithm TRHA, TR1/3, TR, AMFM, and AMMC showed that the corresponding basic algorithms

Table 4.1 Table over diode output voltage dependence on input voltage 29 Table 4.2 Table over diode output voltage dependence on input current 30 Table 4.3 Table over SRD output

In this thesis, a CSC test (CSCT) was developed and administered to young adults with normal hearing and older adults with age-related hearing loss. CSCT required executive

In such cases the component does not have order point, batch size or safety stock as it will be purchased upon demand, allowing the organization to reduce the inventory holding