Algorithms and Path Planning - GitHub Pages · 2018-12-10 · 14 Maze Exploration • Dijkstra to...

26
ECE 3400: Intelligent Physical Systems Algorithms and Path Planning Topics Simple Search Depth First Search Breadth First Search Dijkstra’s Search Greedy Search A* Search Classes of interest ECE2400: Computer Systems Programming CS4700: Foundations of Artificial Intelligence CS4701: Practicum of Artificial Intelligence CS3758/MAE4180: Autonomous Mobile Robots

Transcript of Algorithms and Path Planning - GitHub Pages · 2018-12-10 · 14 Maze Exploration • Dijkstra to...

Page 1: Algorithms and Path Planning - GitHub Pages · 2018-12-10 · 14 Maze Exploration • Dijkstra to find the next frontier • Search order: • Straight • Left, then straight •

ECE 3400: Intelligent Physical Systems

Algorithms and Path PlanningTopics• Simple Search• Depth First Search• Breadth First Search• Dijkstra’s Search• Greedy Search• A* Search

Classes of interest• ECE2400: Computer Systems Programming• CS4700: Foundations of Artificial Intelligence• CS4701: Practicum of Artificial Intelligence• CS3758/MAE4180: Autonomous Mobile Robots

Page 2: Algorithms and Path Planning - GitHub Pages · 2018-12-10 · 14 Maze Exploration • Dijkstra to find the next frontier • Search order: • Straight • Left, then straight •

2

Can you explore the entire maze?• 15s avg. for 6 squares• 3.4min for 81 squares• Unlikely, but possible.

End Game 5 weeks left till competition day

7Ups

Page 3: Algorithms and Path Planning - GitHub Pages · 2018-12-10 · 14 Maze Exploration • Dijkstra to find the next frontier • Search order: • Straight • Left, then straight •

S

Find a treasure

6 7

8

9

10

1112

13

14

15

5

Algorithms and Search• Depth First Search (DFS)

y

x

(0,0)(0,1) (1,0)

(0,2) (1,1)

(0,3) (1,2)

(0,4) (1,3)

and so on…

1

2

3

4

(1,4)

Search order: N, E, S, W

Memory grows linearly with the depth of the graph

Advantage?Disadvantage?

Page 4: Algorithms and Path Planning - GitHub Pages · 2018-12-10 · 14 Maze Exploration • Dijkstra to find the next frontier • Search order: • Straight • Left, then straight •

S

Find a treasure• Depth First Search (DFS)• Breadth First Search (BFS)

y

x

(0,0)(0,1) (1,0)

(0,2) (1,1)

and so on…

1

2

3

4

5

Algorithms and Search Search order: N, E, S, W

(2,0)(1,1)

(1,2)(0,3) (1,2) (2,1)(1,2) (2,1) (2,1) (3,0)

Memory grows exponentially with the depth of the graph

Advantage?Disadvantage?

Page 5: Algorithms and Path Planning - GitHub Pages · 2018-12-10 · 14 Maze Exploration • Dijkstra to find the next frontier • Search order: • Straight • Left, then straight •

5

BFS: Memory and ComputationWhat do we need?• Locations• Example issue from last year…

R

0 2 4 6 8

depth (distance from robot)

0

0.5

1

1.5

2

node

s ex

plor

ed

10 4 BFS: Growth of frontier

Arduino no go!

n = state(init)frontier.append(n)while(frontier not empty)

n = pull state from frontierif n = goal, return solutionfor all actions in n

n’ = a(n)frontier.append(n’)

Page 6: Algorithms and Path Planning - GitHub Pages · 2018-12-10 · 14 Maze Exploration • Dijkstra to find the next frontier • Search order: • Straight • Left, then straight •

6

BFS: Memory and Computation

R

What do we need?• Locations• ParentsFrontier size:

• 4• 12• 36• mem = 4۰3n-1 (n = depth)

0 2 4 6 8 10

depth

0

2000

4000

6000

8000

10000

node

s ex

plor

ed

BFS: Growth of frontier

etc…

1 2 3 4 5 6 7

depth

0

100

200

300

400

500

node

s ex

plor

ed

BFS: Growth of frontier

Don’t revisit parents/grandparents

Page 7: Algorithms and Path Planning - GitHub Pages · 2018-12-10 · 14 Maze Exploration • Dijkstra to find the next frontier • Search order: • Straight • Left, then straight •

7

BFS: Memory and Computation

R

What do we need?• Locations• Parents• Visited

• What is the maximum size of the frontier now?

0 2 4 6 8 10

depth

2

4

6

8

10

12

14

16

node

s ex

plor

ed

BFS: Growth of frontier • What is the issue with this approach?• Store branches with

lowest motion cost!

Page 8: Algorithms and Path Planning - GitHub Pages · 2018-12-10 · 14 Maze Exploration • Dijkstra to find the next frontier • Search order: • Straight • Left, then straight •

8

BFS: Memory and Computation

R

What do we need?• Locations• Parents• Visited• Cost• Action

n = state(init)frontier.append(n)visited.append(n)while(frontier not empty)

n = pull state from frontierif n = goal, return solutionfor all actions in n

n’ = a(n)if n’ not visited or cost is lower

frontier.append(n’)visited.append(n’)

**

**

*

Page 9: Algorithms and Path Planning - GitHub Pages · 2018-12-10 · 14 Maze Exploration • Dijkstra to find the next frontier • Search order: • Straight • Left, then straight •

9

BFS: Memory and Computation

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

robot?visited? N,E,S,W

walls?treasure

7 6 5 4 3 2 1 0

visited?N,E,S,Wwalls?treasure

• …Teams are at 75-35% capacity (512B-1331B)• Frontier (x,y-locations + parent + cost): 80B• Visited: 81B, or 0B!• Maze: 162B• Maze: 81B

R

Page 10: Algorithms and Path Planning - GitHub Pages · 2018-12-10 · 14 Maze Exploration • Dijkstra to find the next frontier • Search order: • Straight • Left, then straight •

10

Maze Exploration• Depth First Search

• Search order:• Straight• Left, then straight• Right, then straight• U-turn, then straight

• If stuck, find shortest path to the next frontier in the tree

• What treasure does the robot find first?

R

R

Page 11: Algorithms and Path Planning - GitHub Pages · 2018-12-10 · 14 Maze Exploration • Dijkstra to find the next frontier • Search order: • Straight • Left, then straight •

S

Find a treasure• Depth First Search (DFS)• Breadth First Search (BFS)• Add motion cost• Dijkstra’s to save computation/memory

y

x

(0,0)(0,1) (1,0)

(0,2) (1,1)

and so on…

1

2

3

4

5

Algorithms and Search Search order: N, E, S, W

(2,0)(1,1)

(1,2)(0,3) (1,2) (2,1)(1,2) (2,1) (2,1) (3,0)

1 2

1 1221122

1 2 2 1

Page 12: Algorithms and Path Planning - GitHub Pages · 2018-12-10 · 14 Maze Exploration • Dijkstra to find the next frontier • Search order: • Straight • Left, then straight •

S

Find a treasure• Depth First Search (DFS)• Breadth First Search (BFS)• Add motion cost • Dijkstra’s to save computation/memory

y

x

(0,0)

and so on…

1

2

3

4

5

Algorithms and Search Search order: N, E, S, W

(0,1) (1,0)1 2

(1,2)(0,3)1 2

(0,2) (1,1)1 2 (2,0)(1,1) 2 1

Page 13: Algorithms and Path Planning - GitHub Pages · 2018-12-10 · 14 Maze Exploration • Dijkstra to find the next frontier • Search order: • Straight • Left, then straight •

13

Maze Exploration• Depth First Search

• Search order:• Straight• Left, then straight• Right, then straight• U-turn, then straight

• If stuck, find shortest path to the next frontier in the tree

• What treasure does the robot find first?

• What treasure does the robot find second?

• Could we be more efficient?

R

R

R

Page 14: Algorithms and Path Planning - GitHub Pages · 2018-12-10 · 14 Maze Exploration • Dijkstra to find the next frontier • Search order: • Straight • Left, then straight •

14

Maze Exploration• Dijkstra to find the next frontier

• Search order:• Straight• Left, then straight• Right, then straight• U-turn, then straight

• What treasure does the robot find first?

• Next treasure?• Extra computation (Dijkstra for

every square), but maybe better• Better path planning?

• Add cost for revisiting nodes R 6

6

6

Page 15: Algorithms and Path Planning - GitHub Pages · 2018-12-10 · 14 Maze Exploration • Dijkstra to find the next frontier • Search order: • Straight • Left, then straight •

S

Find a treasure• Dijkstra’s Search• Could you be more

efficient by looking ahead?

y

x

(0,0)

and so on…

1

3

2

Maze Exploration Search order: N, E, S, W

(0,1) (1,0)1 2

(1,2)(0,3)1+1 2+1

(0,2) (1,1)1 2+1 (2,0)1

Only reasons about the cost to get there…

4

(3,0)(2,1)2 1

5

Page 16: Algorithms and Path Planning - GitHub Pages · 2018-12-10 · 14 Maze Exploration • Dijkstra to find the next frontier • Search order: • Straight • Left, then straight •

S

Find a treasure

1

2

3 4

y

x

(0,0)

Informed Search Search order: N, E, S, W

(0,1) (1,0)

(1,2)(0,3)

(0,2) (1,1)

• Greedy Search

(1,3)(0,4)

(1,4) (2,3)

Define a heuristic to target the goal• Manhatten distance• abs(xS-xG)+abs(yS-yG)

4 4

3 3

2 2

3 1

2 0

Page 17: Algorithms and Path Planning - GitHub Pages · 2018-12-10 · 14 Maze Exploration • Dijkstra to find the next frontier • Search order: • Straight • Left, then straight •

Informed Search Search order: N, E, S, W

• Greedy Search

n = state(init)frontier.append(n)while(frontier not empty)

n = pull state from frontiervisited.append(n)if n = goal, return solutionfor all actions in n

n’ = a(n)if n’ not visited

priority = heuristic(goal,n’)frontier.append(priority)

Cause for concern?

S

Find a treasure

1

2

3 4

y

x

Page 18: Algorithms and Path Planning - GitHub Pages · 2018-12-10 · 14 Maze Exploration • Dijkstra to find the next frontier • Search order: • Straight • Left, then straight •

S

Find a treasure

1

2 3

45

y

x

Informed Search Search order: N, E, S, W

• Greedy Search• Faster, but does not guarantee optimal

Cause for concern?6 7 8 9

10

Page 19: Algorithms and Path Planning - GitHub Pages · 2018-12-10 · 14 Maze Exploration • Dijkstra to find the next frontier • Search order: • Straight • Left, then straight •

Informed Search• Breadth First Search

• Guarantee: Finds a path• Searches everything

• Dijkstra’s Algorithm• Guarantee: Finds the shortest path• …but it wastes time exploring in directions that aren’t promising

• Greedy Search • Guarantee: Finds a path• …only explores promising directions

Considers parent cost

Considers goal

A*

Page 20: Algorithms and Path Planning - GitHub Pages · 2018-12-10 · 14 Maze Exploration • Dijkstra to find the next frontier • Search order: • Straight • Left, then straight •

S

Find a treasureInformed Search Search order: N, E, S, W

• A* (“A-star”)

n = state(init)frontier.append(n)while(frontier not empty)

n = pull state from frontierif n = goal, return solutionfor all actions in n

n’ = a(n)if ((n’ not visited or

(visited and n’.cost < n_old.cost))priority = heuristic(goal,n’)+costfrontier.append(priority)visited.append(n’)

Page 21: Algorithms and Path Planning - GitHub Pages · 2018-12-10 · 14 Maze Exploration • Dijkstra to find the next frontier • Search order: • Straight • Left, then straight •

S

Find a treasure

7

1

2

3

4

5y

x

Informed Search Search order: N, E, S, W

• A* (“A-star”)• Cost and goal heuristic

6

8

9

10(0,0)

(0,1) (1,0)

(0,2) (1,1) (2,0)

(1,2)(0,3) (2,1) (3,0)

1 2

121 2

1 2 1

4 4

3 3 3

2 2 2 4

(1,3)(0,4) 3 11 2

5

9 10

12 13

6

10

1514

16 15(3,1)(2,2) 211 3

16 19

(1,4)2 2

20 (3,2)(2,3)

11

0 221

goal

Page 22: Algorithms and Path Planning - GitHub Pages · 2018-12-10 · 14 Maze Exploration • Dijkstra to find the next frontier • Search order: • Straight • Left, then straight •

Informed Search• What if the heuristic is too optimistic?

• Estimated cost < true cost• What if the heuristic is too pessimistic?

• Estimated cost > true cost• No longer guaranteed to be optimal

• What if the heuristic is just right?• Pre-compute the cost between all nodes• Feasible for you?

admissible heuristic

inadmissible heuristic

Page 23: Algorithms and Path Planning - GitHub Pages · 2018-12-10 · 14 Maze Exploration • Dijkstra to find the next frontier • Search order: • Straight • Left, then straight •

S

Greedy

S

A*

23

Summary

7

1

2

3

4

5

6

8

9

10

11

1

2 3

45

6 7 8

S

Dijkstra

1

3

2

5

6

4

8

11

9

7

10

13

14

12 15

minimum pathminimum pathand efficient

Page 24: Algorithms and Path Planning - GitHub Pages · 2018-12-10 · 14 Maze Exploration • Dijkstra to find the next frontier • Search order: • Straight • Left, then straight •

24

Page 25: Algorithms and Path Planning - GitHub Pages · 2018-12-10 · 14 Maze Exploration • Dijkstra to find the next frontier • Search order: • Straight • Left, then straight •

25

Game Theory• Pick a whole number between 1 and 100. • The winner is the person who picks the value which

is closest to two thirds of the class average.• E.g.

• [10, 20, 60]. • Class average 30.• Winner: 20.

• https://bit.ly/2z9R56F• The poll will close at the end of the class (12.10pm

10/29th)

Page 26: Algorithms and Path Planning - GitHub Pages · 2018-12-10 · 14 Maze Exploration • Dijkstra to find the next frontier • Search order: • Straight • Left, then straight •

26

Class website: https://cei-lab.github.io/ece3400-2018/Piazza: https://piazza.com/cornell/fall2018/ece3400/home