Two Primary Techniques (Node Pruning) презентация

Содержание

Слайд 2

JPS+: Over 100x Faster than A* JPS+ now with Goal Bounding: Over 1000x Faster

than A*

Слайд 3

Slides: www.gameaipro.com

Слайд 4

Coming out April 2015
…however, back in
June 2014…
…however,
2 months ago…

Слайд 5

Two Primary Techniques (Node Pruning)

JPS+ (ICAPS July 2014)
“Avoid redundant paths on grids”
Goal Bounding

(developed in Jan 2015)
“Avoid wrong directions on any kind of map”

Слайд 6

Test Maps (movingai.com)

75 StarCraft maps (198,230 problems)
156 Dragon Age Origins maps (159,465 problems)
36

Warcraft III maps (50,971 problems)

Слайд 7

Test Maps (movingai.com)

75 StarCraft maps (198,230 problems)
156 Dragon Age Origins maps (159,465 problems)
36

Warcraft III maps (50,971 problems)

Слайд 8

A*

JPS+

JPS+ Goal Bounding

Слайд 9

A*

JPS+

JPS+ Goal Bounding

Слайд 10

A*

JPS+

JPS+ Goal Bounding

Слайд 11

A*

JPS+

JPS+ Goal Bounding

Слайд 12

A*

JPS+

JPS+ Goal Bounding

Слайд 13

JPS+

Goal Bounding

1400x to 5000x
faster

Avoid
Redundant
Paths

Avoid
Wrong
Directions

70x to 350x
faster

20x to 60x
faster

Слайд 14

StarCraft Maps: JPS+

Слайд 15

StarCraft Maps: Subgoal Graph

Слайд 16

StarCraft Maps: JPS+ Goal Bounds

Слайд 17

StarCraft Maps: Comparison

JPS+

Subgoal Graph

JPS+ Goal Bounds

Слайд 18

StarCraft Maps: Comparison

JPS+

Subgoal Graph

JPS+ Goal Bounds

Слайд 19

JPS+

Goal Bounding

Grids, NavMesh, Graphs

No Map
Changes

Uniform
Cost

Avoid
Redundant
Paths

Avoid
Wrong
Directions

Non-Uniform
Cost

1 value
Per Edge

4 values
Per Edge

Dijkstra, A*,
other algorithms

Slow O(n2)
Precompute

Fast O(n)
Precompute

Слайд 20

Overview

JPS+ Preprocessing & Runtime
Goal Bounding Preprocessing & Runtime
Results and Analysis
Future Work

Слайд 21

JPS+ Explained

Слайд 22

Equivalent Paths on Grids

Слайд 23

JPS Search Strategy

Слайд 24

JPS Search Strategy

Слайд 25

JPS Search Strategy

Слайд 26

JPS Search Strategy

Слайд 27

JPS Search Strategy

Слайд 28

JPS Search Strategy

Слайд 29

Forced Neighbor Cases

Слайд 30

Fewer Open List Nodes

Слайд 31

Four Types of Jump Points

Primary
Straight
Diagonal
Target

Слайд 32

Primary Jump Points

Слайд 33

Straight Jump Points

Слайд 34

Straight Jump Point Distance

Слайд 35

Diagonal Jump Points

Слайд 36

Add in Wall Distances (0 or neg)

Слайд 37

Four Types of Jump Points

Primary
Straight
Diagonal
Target (runtime)

Слайд 38

JPS+ Runtime Example

Слайд 49

Goal Bounding

Слайд 50

Reachable optimally
by exploring left

A* Search

Optimal goal bounds
when exploring left

Слайд 51

Reachable optimally
by exploring left

Optimal goal bounds
when exploring left

JPS+ Search

Слайд 52

A* Search

JPS+ Search

Goal Bounds

Goal Bounds

Слайд 53

Goal Bounding
A* Search

Слайд 54

Goal Bounding
A* Search

Слайд 55

Goal Bounding
A* Search

Слайд 56

Goal Bounding
A* Search

Слайд 57

Goal Bounding
A* Search

Слайд 58

Goal Bounding
A* Search

Слайд 59

Goal Bounding
A* Search

Слайд 60

Goal Bounding
A* Search

Слайд 61

Goal Bounding
A* Search

Слайд 62

Goal Bounding
A* Search

Слайд 63

Goal Bounding
A* Search

Слайд 64

Goal Bounding
A* Search

Слайд 65

Goal Bounding
A* Search

Слайд 68

How to calculate Goal Bounds

Dijkstra floodfill from each node
When you put a node

on the Closed list
Update start node’s Goal Bounds
(for the edge it originally came from!)
Embarrassingly parallel

Слайд 69

Calculating
Goal Bounds

Слайд 70

Calculating
Goal Bounds

Слайд 71

Calculating
Goal Bounds

Слайд 72

Calculating
Goal Bounds

Слайд 73

Calculating
Goal Bounds

Слайд 74

Calculating
Goal Bounds

Слайд 75

Calculating
Goal Bounds

Слайд 76

Calculating
Goal Bounds

Слайд 77

Calculating
Goal Bounds

Слайд 78

Calculating
Goal Bounds

Слайд 79

Calculating
Goal Bounds

Слайд 80

Calculating
Goal Bounds

Слайд 81

Calculating
Goal Bounds

Слайд 82

Calculating
Goal Bounds

Слайд 83

Calculating
Goal Bounds

Слайд 84

Calculating
Goal Bounds

Слайд 85

Calculating
Goal Bounds

Слайд 86

Calculating
Goal Bounds

Слайд 87

Calculating
Goal Bounds

Слайд 88

Calculating
Goal Bounds

Слайд 89

Calculating
Goal Bounds

Слайд 90

Calculating
Goal Bounds

Слайд 91

Calculating
Goal Bounds

Слайд 92

Calculating
Goal Bounds

Слайд 93

Calculating
Goal Bounds

Слайд 94

Calculating
Goal Bounds

Слайд 95

Calculating
Goal Bounds

Слайд 96

Calculating
Goal Bounds

Слайд 97

Calculating
Goal Bounds

Слайд 98

Calculating
Goal Bounds

Слайд 99

Calculating
Goal Bounds

Слайд 100

Calculating
Goal Bounds

Слайд 101

Calculating
Goal Bounds

Слайд 102

Calculating
Goal Bounds

Слайд 103

Calculating
Goal Bounds

Слайд 104

Calculating
Goal Bounds

Слайд 105

Calculating
Goal Bounds

Слайд 106

Calculating
Goal Bounds

Слайд 107

Calculating
Goal Bounds

Слайд 108

Calculating
Goal Bounds

Слайд 109

Calculating
Goal Bounds

Слайд 110

Calculating
Goal Bounds

Слайд 111

Calculating
Goal Bounds

Слайд 112

Calculating
Goal Bounds

Слайд 113

Optimizations

Слайд 114

JPS+ Goal Bounding

Fast stack and unsorted Open list
Only works for grids using Octile

heuristic

Слайд 115

Across the Cape (768x768)

2940 tests
From 4.41 to 1176.61

Слайд 116

Across the Cape (768x768)

2940 tests
From 4.41 to 1176.61

Слайд 117

Across the Cape (768x768)

2940 tests
From 4.41 to 1176.61

Слайд 118

Across the Cape (768x768)

2940 tests
From 4.41 to 1176.61

Слайд 119

Across the Cape (768x768)

2940 tests
From 4.41 to 1176.61

3711x faster than A*

Слайд 120

Arctic Station (768x768)

4100 tests
From 4 to 1643.06 long

Слайд 121

Arctic Station (768x768)

4100 tests
From 4 to 1643.06 long

Слайд 122

Arctic Station (768x768)

4100 tests
From 4 to 1643.06 long

4907x faster than A*

Слайд 123

JPS+ Goal Bounding

Function pointer table
256 wall permutations X 8 parent directions
2048 look-up table

pointing at 42 functions

Слайд 124

Problem: Dynamic Maps

Слайд 125

Goal Bounding
Gates

Слайд 126

Goal Bounding
Gates

Слайд 127

Goal Bounding
Gates

Слайд 129

JPS+

Goal Bounding

1400x to 5000x
faster

Avoid
Redundant
Paths

Avoid
Wrong
Directions

70x to 350x
faster

20x to 60x
faster

Слайд 130

JPS+

Goal Bounding

Grids, NavMesh, Graphs

No Map
Changes

Uniform
Cost

Avoid
Redundant
Paths

Avoid
Wrong
Directions

Non-Uniform
Cost

1 value
Per Edge

4 values
Per Edge

Dijkstra, A*,
other algorithms

Slow O(n2)
Precompute

Fast O(n)
Precompute

Слайд 131

StarCraft Maps: Comparison

JPS+

Subgoal Graph

JPS+ Goal Bounds

Слайд 132

Future Work

Can Goal Bounding work with Subgoal?
Can the precompute be done in O(n)?
Are

there better bounds than a box?
How much does it actually speed up A* on a NavMesh?
Имя файла: Two-Primary-Techniques-(Node-Pruning).pptx
Количество просмотров: 30
Количество скачиваний: 0