200 likes | 349 Vues
Fun with Star Abstraction. Or: Hierarchical A*, Refinement and the Gray Area Between Them. Outline. Review Hierarchical A* Refinement and the W Parameter Conclusions Where I’m Going. Review: Star Abstraction. States represented explicitly in memory Any abstract state maps to:
E N D
Fun with Star Abstraction Or: Hierarchical A*, Refinement and the Gray Area Between Them
Outline • Review • Hierarchical A* • Refinement and the W Parameter • Conclusions • Where I’m Going
Review: Star Abstraction • States represented explicitly in memory • Any abstract state maps to: • A central hub • Its neighbors
Review: Refinement & HA* • Refinement (suboptimal solutions): • Abstract space is searched once • Search in base space limited to abstract path • Guided only by h-value • Hierarchical A* (optimal solutions): • Abstract space is searched every time an h-value is needed • Search travels anywhere A* would normally travel • Guided by f = g + h
Review: W and P • Refinement and HA* are points in a parameter space defined by W and P • W - weight given to the heuristic value • P - chance that a new h-value will be retrieved Pure Heuristic HA* Dijkstra 1 P Optimal Ref. Classical Ref. 0 1 0.5 W
New Stuff: What I'm doing • Previous work with W and P was done in only the forward direction • Refinement with Alternating Opportunism • Superior to forward refinement • Idea: Vary W and P and use alternating directions Abs 4 Abs 3 Abs 2 Abs 1 Base
Why alternating should be better Start Goal Goal Start
Hierarchical A*:A pain to say, spell and make work • Recall: • When we discussed HA*, it needed three modifications to be better than Dijkstra • Most of those modifications apply only in the forward direction • Backwards should be easier, right? • Well…
Development of Alternating HA*Test Bed: 100x100 Grid World • Search from bottom-left to top-right • Dijkstra: 10,000 nodes expanded • AHA* w/o abstract caching: Didn’t even try it • AHA* w/ abstract caching: 37,134,045 • Need some improvements…
Improvements • Resume abstract search from previous open list ? Goal Start
Improvements Continued • Only blank cache when absolutely necessary
Still Improving… • AHA* w/ caching & improvements: 411,115 • Problem: • Refreshing heuristic values for the open list • What if I refresh nodes on open list without search? • Idea 3: Refresh all with heuristic 0 • Down to 32,872 nodes expanded
Finally… • The must be a better way to initialize h… • g(X) >= g(x)* • d <= d2 • h >= h’ = d – g(x) • Init open nodes to h’ • Down to 19,670 nodes d S1 Start d2 g*(x) S2 h(x)? X (Open)
On to Refinement and W • Refinement on same problem: 485 nodes • Still optimal! • Okay… let’s forget about AHA* • Started examining the W axis Pure Heuristic A* Dijkstra 1 P Optimal Ref. 0 1 0.5 W
Conclusions & Questions • AHA*: • I think cache blanking is my problem • Refinement: • 0.99 is fast and relatively reliable • 0.5 is about twice as slow as 0.99, but very close to optimal – and still very fast • Why do Eight puzzle and Grid behave so well? • Low branching factor? Maybe…
Where I’m going… • I want to look at the rest of that triangle! • What about between W=0.7 and W=0.5? Pure Heuristic A* Dijkstra 1 P Optimal Ref. 0 1 0.5 0.7 W
Any Questions? • Russell & Norvig Text: $89.50 • Tuition at University of Alberta: $3,291.78 • Realizing you’ve been working on something called AHA*: Priceless