Kontext-basierte Suche für klassische Handlungsplanung

Werbung
Kontext-basierte Suche für klassische
Handlungsplanung
Bachelorarbeit
Lukas Songajlo
Betreuer: Manuel Heusner, Dr. Martin Wehrle
Prüfer: Prof. Dr. Malte Helmert
1. September 2014
Einführung
Gierige Bestensuche
Kontext-basierte Suche
Resultate
Diskussion
Was ist klassische Handlungsplanung?
Vorgehensweise:
• Agent beginnt in einem initialen Zustand
• Angewandte Aktionen wechseln Zustände
• Agent erreicht (wenn möglich) einen Zielzustand
Plan: Sequenz von Aktionen
Ziel: Automatisches Lösen von Planungsproblemen
2 / 19
Einführung
Gierige Bestensuche
Kontext-basierte Suche
Resultate
Diskussion
SAS+ -Planungsaufgaben (formal)
Eine Planungsaufgabe ist ein 4-Tupel Λ = hV, A, s0 , G i:
• V - Menge von Zustandsvariablen mit jeweils endlichen
Wertebereich
• A - Menge von Aktionen mit jeweils pre, eff und cost
• s0 - Anfangszustand
• G - Menge von belegten Zustandsvariablen
3 / 19
Einführung
Gierige Bestensuche
Kontext-basierte Suche
Resultate
Diskussion
Heuristische Suche
Heuristikfunktion h(s) liefert Informationen über den
Zustandsraum:
• Schätzt Abstand von Zustand s zu einem Zielzustand
• Weist potentiellem Nachfolge-Zustand einen numerischen
Wert zu
Bezug zur Handlungsplanung?
Heuristische Werte werden automatisch berechnet, ohne Kenntnis
über Domäne (z.B. hmax , hFF , ...)
4 / 19
Einführung
Gierige Bestensuche
Kontext-basierte Suche
Resultate
Diskussion
Bekanntes Problem - Suchplateaus
• Bei gleichbleibendem heuristischen Wert können
Suchplateaus entstehen
• Suche verläuft unter Gierige Bestensuche“ blind
”
h=3
...
h=4
h=3
h=3
h=3
h=2
...
h=3
5 / 19
Einführung
Gierige Bestensuche
Kontext-basierte Suche
Resultate
Diskussion
Motivation - Logistikproblem
Stadt A
Stadt B
Stadt C
Pos.1
Pos.5
Pos.9
Pos.2
Pos.6
Pos.10
Pos.3
Pos.7
Pos.11
LEGENDE
Besetzte Position
Unbesetzte Position
Pos.4
Pos.8
Pos.12
Zielposition
6 / 19
Einführung
Gierige Bestensuche
Kontext-basierte Suche
Resultate
Diskussion
Motivation - Logistikproblem
Stadt A
Stadt B
Stadt C
Pos.1
Pos.5
Pos.9
Pos.2
Pos.6
Pos.10
Pos.3
Pos.7
Pos.11
hmax = 3
LEGENDE
Besetzte Position
Unbesetzte Position
Pos.4
Pos.8
Pos.12
Zielposition
6 / 19
Einführung
Gierige Bestensuche
Kontext-basierte Suche
Resultate
Diskussion
Motivation - Logistikproblem
Stadt A
Stadt B
Stadt C
Pos.1
Pos.5
Pos.9
Pos.2
Pos.6
Pos.10
Pos.3
Pos.7
Pos.11
LEGENDE
Besetzte Position
Unbesetzte Position
Pos.4
Pos.8
Pos.12
Zielposition
6 / 19
Einführung
Gierige Bestensuche
Kontext-basierte Suche
Resultate
Diskussion
Motivation - Logistikproblem
Stadt A
Stadt B
Stadt C
Pos.1
Pos.5
Pos.9
Pos.2
Pos.6
Pos.10
Pos.3
Pos.7
Pos.11
hmax = 3
LEGENDE
Besetzte Position
Unbesetzte Position
Pos.4
Pos.8
Pos.12
Zielposition
6 / 19
Einführung
Gierige Bestensuche
Kontext-basierte Suche
Resultate
Diskussion
Mehr Orientierung! Thema dieser Arbeit
Gezieltere Suche durch zusätzliche Information:
• Ausnutzung von Aktions-Abhängigkeiten
• Erweiterung der gierigen Bestensuche
7 / 19
Einführung
Gierige Bestensuche
Kontext-basierte Suche
Resultate
Diskussion
Suchalgorithmus der gierigen Bestensuche
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
openlist := new priority queue ordered by h
openlist.initialize()
closedlist := { }
while openlist not empty do
node = openlist.getMinimum()
if closedlist.contains(node.state) = none then
closedlist.add(node.state)
if node.state is a goalstate then
return getPath(node)
for each successor s 0 of node.state do
if h(s 0 ) < ∞ then
openlist.add(createNode(s 0 ))
return unsolveable
8 / 19
Einführung
Gierige Bestensuche
Kontext-basierte Suche
Resultate
Diskussion
Idee der kontext-basierten Suche
• Aktion bevorzugen, die von der Vorgänger-Aktion profitiert
• Pfad solange folgen bis Teilziel erreicht ist
9 / 19
Einführung
Gierige Bestensuche
Kontext-basierte Suche
Resultate
Diskussion
Abhängigkeiten zwischen Aktionen
Gegeben: a1 , a2 ∈ A
Interferenz
• pre(a1 ) und eff(a2 ) enthalten gemeinsame Variablen
• pre(a2 ) und eff(a1 ) enthalten gemeinsame Variablen
• eff(a1 ) und eff(a2 ) enthalten gemeinsame Variablen
10 / 19
Einführung
Gierige Bestensuche
Kontext-basierte Suche
Resultate
Diskussion
Abhängigkeiten zwischen Aktionen
Stadt A
Pos.1
Stadt B
Stadt C
Pos.5
Pos.9
Pos.6
Pos.10
Pos.7
Pos.11
a1
Pos.2
a2
Pos.3
LEGENDE
Besetzte Position
Unbesetzte Position
Pos.4
Pos.8
Pos.12
Zielposition
10 / 19
Einführung
Gierige Bestensuche
Kontext-basierte Suche
Resultate
Diskussion
Abhängigkeiten zwischen Aktionen
Gegeben: a1 , a2 ∈ A und d ∈ N
Interferenz-Distanz
• Fall 1: a1 = a2 , dann gilt d = 0
• Fall 2: a1 , a2 interferieren über paarweisen Interferenzen
miteinander, dann gilt d = # paarw. Interferenzen
• Fall 3: a1 , a2 interferieren überhaupt nicht, dann gilt d = ∞
10 / 19
Einführung
Gierige Bestensuche
Kontext-basierte Suche
Resultate
Diskussion
Abhängigkeiten zwischen Aktionen
a1
a1
a4
a2
a2
a3
a5
a4
a5
10 / 19
Einführung
Gierige Bestensuche
Kontext-basierte Suche
Resultate
Diskussion
Umsetzung der Interferenz-Distanzen
• Repräsentation als Matrix
• Berechnung mit Flyod’s Algorithmus im Vorfeld der Suche
11 / 19
Einführung
Gierige Bestensuche
Kontext-basierte Suche
Resultate
Diskussion
Priorisierung von Zuständen
1. Priorisierung: Interferenz-Distanz
2. Priorisierung: Heuristischer Wert (Tiebreaker)
12 / 19
Einführung
Gierige Bestensuche
Kontext-basierte Suche
Resultate
Diskussion
Suchalgorithmus
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
openlist := new priority queue ordered by h
openlist.initialize()
closedlist := { }
while openlist not empty do
node = openlist.getMinimum()
if closedlist.contains(node.state) = none then
closedlist.add(node.state)
if node.state is a goalstate then
return getPath(node)
for each successor s 0 of node.state do
if h(s 0 ) < ∞ then
openlist.add(createNode(s 0 ))
return unsolveable
13 / 19
Einführung
Gierige Bestensuche
Kontext-basierte Suche
Resultate
Diskussion
Suchalgorithmus
Funktion: add(Node n)
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
priority-queues := given N + 1 priority queues
a := action to current state s
a0 := applicable action to switch state from s to n.state
if a not writes variable corresponding to G then
if D(a, a0 ) 6= ∞ then
priority-queues[D(a, a0 )].add(n)
else
prune n.state
else
priority-queues[0].add(n)
13 / 19
Einführung
Gierige Bestensuche
Kontext-basierte Suche
Resultate
Diskussion
Suchalgorithmus
Funktion: Node getMinimum()
1:
2:
3:
4:
5:
6:
bestlist = 0
for each queue do
if queue is not empty then
best list = queue.getIndex()
break
return priority-queues[best list].getMinimum()
13 / 19
Einführung
Gierige Bestensuche
Kontext-basierte Suche
Resultate
Diskussion
Resultate
• basierend auf Instanzen von Fast-Downward
Gliederung
Vergleich GBS und KBS mit...
• ...blinder Suche
• ...hmax
• ...hFF
14 / 19
Einführung
Gierige Bestensuche
Kontext-basierte Suche
Resultate
Diskussion
Ergebnisse mit blinder Suche
Gelöste Probleme - Summe
Evaluationen - im geom. Mittel
Expansionen - im geom. Mittel
Generierte Knoten - im geom. Mittel
Vorberechnungszeit - im geom. Mittel
Reine Suchzeit - im geom. Mittel
Gesamte Suchzeit - im geom. Mittel
GBS
KBS
260
78408.44
61134.44
379596.23
0.10
1.04
1.04
288
36075.39
15744.18
99261.75
1.02
0.36
0.87
15 / 19
Gierige Bestensuche
Kontext-basierte Suche
Resultate
Diskussion
Ergebnisse mit blinder Suche
103
Reine Suchzeit mit blinder Konfiguration
102
Kontext-basierte Suche
Einführung
101
100
10-1
10-2 -2
10
10-1
101
100
Gierige Bestensuche
102
103
15 / 19
Einführung
Gierige Bestensuche
Kontext-basierte Suche
Resultate
Diskussion
Ergebnisse mit hmax
Gelöste Probleme - Summe
Evaluationen - im geom. Mittel
Expansionen - im geom. Mittel
Generierte Knoten - im geom. Mittel
Vorberechnungszeit - im geom. Mittel
Reine Suchzeit - im geom. Mittel
Gesamte Suchzeit - im geom. Mittel
hmax -GBS
hmax -KBS
458
4208.74
1388.40
10007.14
0.10
0.33
0.33
416
4442.11
1331.32
9354.75
1.02
0.27
0.67
16 / 19
Einführung
Gierige Bestensuche
Kontext-basierte Suche
Resultate
Diskussion
Ergebnisse mit hFF
Gelöste Probleme - Summe
Evaluationen - im geom. Mittel
Expansionen - im geom. Mittel
Generierte Knoten - im geom. Mittel
Vorberechnungszeit - im geom. Mittel
Reine Suchzeit - im geom. Mittel
Gesamte Suchzeit - im geom. Mittel
hFF -GBS
hFF -KBS
764
377.54
90.98
591.55
0.10
0.13
0.13
492
1783.43
535.90
3613.31
1.02
0.17
0.60
17 / 19
Einführung
Gierige Bestensuche
Kontext-basierte Suche
Resultate
Diskussion
Verbesserungen
Berechnung der Interferenz-Distanzen
• on-the-fly während Suche
• Hohe Interferenz-Distanz approximieren
Priorisierung
• Umkehrung der Priorisierung
18 / 19
Einführung
Gierige Bestensuche
Kontext-basierte Suche
Resultate
Diskussion
Danke für Ihre Aufmerksamkeit!
Q&A
19 / 19
Herunterladen