400 likes | 486 Views
Spezialvorlesung Suchalgorithmen. Thema: Realzeitsuche Stefan Edelkamp. Struktur des Buchs. Überblick. Einleitung & Motivation Beispiel: Realzeitsuche im (n^2-1)-Puzzle LRTA* mit und ohne Lokale Suchräume Varianten Zielfindung: RTA*, SLRTA* Konvergenzbeschleunigung: FALCON
E N D
SpezialvorlesungSuchalgorithmen Thema: Realzeitsuche Stefan Edelkamp
Überblick • Einleitung & Motivation • Beispiel: Realzeitsuche im (n^2-1)-Puzzle • LRTA* mit und ohne Lokale Suchräume • Varianten • Zielfindung: RTA*, SLRTA* • Konvergenzbeschleunigung: FALCON • Adaption: RTAA* • Robotik
Realzeitsuche Zeitkritische Entscheidungen nicht oder nur schwer korrigieren Gerade diese Momente erfordern Erfahrung Aktionen ausführen, bevor die sich daraus ergebenden Konsequenzen bekannt sind. Ursachen: • Unzureichende Information über die Domäne, • Ein für eine optimale Entscheidungsfindung zu großer Suchraum • Aktive Veränderung des Suchraumes selbst, z.B. durch Interaktion mit der Umgebung. Beispiele: Robotersteuerung, Schachspiel
Beispiel: Polynomiale Lösung des 15-Puzzles Untere Schranke (links): O(n^3) - Manhattandistanz Obere Schranke (rechts): Rekursion T(n) <= T(n −1)+15n^2
Analyse obere Schranke Um (1,k) zu plazieren, müssen max. 8n − 2k − 7 Züge gemacht werden: • 2n−k −1 Züge zum Erreichen des Steines, • 6(n−k −1) Züge, um ihn dann nach (k +1, k) zu befördern, • 5k Z¨uge, um ihn hinauf zum Ziel zu bewegen. Σ1 ≤k ≤ n/2 (8n−2k−7) = 15n^2/4−4n Züge für die erste Hälfte der oberen Reihe + Mehraufwand zur Integration des letzten Spielsteins 8n
LRTA* Idee: Approximation der Bellmann’schen Optimalitätsgleichung: • h(u) = 0, für u G • h(u) = min {w(u, v)+h(v) | v Succ(u)}, sonst Algorithmus LRTA* 1. Für jeden Zustand u setze initial h(u) = h0(u) 2. Setze den derzeitigen Zustand u auf einen Startzustand u0 3. Führe die folgenden Schritte durch bis u G • Wertaktualisierung:h(u) = min {w(u, v)+h(v) | v Succ(u)} • Aktionsausführung: Gehe zu dem Kind u‘ mit u‘ = argmin {w(u, v)+h(v) | v Succ(u)} (Tie: wähle einen (beliebigen) aus)
Schnelle Lösung in Real-Time A* (RTA*) Algorithmus RTA* (Annahme Ungerichteter Graph) 1. Für jeden Zustand u setze initial h(u) = h0(u) 2. Setze den derzeitigen Zustand u auf einen Startzustand u0 3. Führe die folgenden Schritte durch bis u G • Wertaktualisierung: h(u) = 2nd-best {w(u, v)+h(v) | v Succ(u)} • Aktionsausführung: Gehe zu dem Kind u‘ mit u‘ = argmin {w(u, v)+h(v) | v Succ(u)} (Tie: wähle einen (beliebigen) aus)
Eigenschaften RTA* Lokal Optimal auf Bäumen: RTA* wendet sich immer in Richtung des Horizontknotens mit geringster Bewertung. Beweisidee: Auf dem Weg von v nach u die Bewertung h(v) als das Minimum aller Horizontbewertungen h(w)+g(v,w) im Teilbaum T(u,v) zu erkennen, dessen Wurzel durch die Kante (u, v) beschrieben wird. Algorithmus findet einen Lösung, sofern sie existiert. Beweisidee: RTA* muß aus jedem Zyklus irgendwann ausbrechen. Problem: Einige der Knoten u überschätzen die Distanz zum Ziel, da ihr h-Wert immer noch auf dem zweitbesten Wert gesetzt ist kein „Lernen“ (erneuter Aufruf unmöglich)
SRTA* Idee: Entkoppelung von Zielfindung und unterer Schrankenberechnung durch die „Schilder“ 1. Für alle vSucc(u) setze h(v) auf den zweitbesten Wert sign(v,w) aller Kanten (v,w). Existiert keiner, setze h(v) auf unendlich. Weiterhin setze sign(u, v) auf h(v)+w(u,v). 2. Gehe zu dem Knoten v mit dem besten f-Wert
Robotik Mobiler Roboter Einarm Industrieroboter
Diskretisierungen Uniform: Parti-Game Algorithmus
Lokalisierungsproblem Suchraum