### Monsters and Mazes

```A-mAIze-in
The Top Men
Christian Dell, Joe Hall, Alex Reeser, Landon
Rogge, Jason Todd, Jared Whitaker
Abstract
 Mazes
 Find a particular location
in a maze and discover a
path to the location.
 Use different h(x) with A*
to determine best of the
code
Implementation
 Java using awt/swing
 Select which test maze to use
 Select the heustric to use
 Will run the selected mode and output raw data on left
A General PEAS
 Agent: Maze Traversing Agent
 Performance: Number of moves it takes to solve the maze or
find cheese
 Environment: Maze
 Actuators: performMovement function
 Sensors: examineEnvironment function
Rules
 A* with various h(x)
 From a starting point, find a path to another point
 Cannot walk through walls
Maze Solving
 Fully Observable:Yes
 Deterministic: Yes
 Episodic:Yes
 Static:Yes
 Discrete:Yes
 Multi-agent: No
A* Heuristics Implemented
 Euclidean
 Manhattan
 Number of Walls (Method 1)
 Number of Walls (Method 2)
 Last in List (f(x) = 0; udlr)
 Dijkstra’s (h(x) = 0)
 Random Numbers (0-15)
Number of Walls (Method 1)
 Take starting position x1 and y1, take ending position x2 and
y2, set wall = 0
Repeat until x1 = x2 and y1 = y2
If x1 > x2, x1 – 1; if x1 < x2, x1 + 1; else x1
If y1 > y2, y1 – 1; if y1 < y2, y1 + 1; else y1
If a wall exists at the new (x1, y1), wall + 1
S
***
***
***
***
***
X
Number of Walls (Method 2)
 Take starting position x1 and y1, take ending position x2 and
y2, set wall = 0
Repeat until x1 = x2
If x1 > x2, x1 – 1; if x1 < x2, x1 + 1; else x1
If a wall exists at the new (x1, y1), wall + 1
Repeat until y1 = y2
If y1 > y2, y1 – 1; if y1 < y2, y1 + 1; else y1
If a wall exists at the new (x1, y1), wall + 1
*** *** *** *** S
***
***
***
***
***
X
Last in List
 Chooses the last member of the closed set (most recently
added)
 Results in a unique order – find the most recent expanded
node with adjacent unexpanded nodes and select the top,
bottom, left, right node to continue down in that order.
 Bizzare, efficient results in some cases. Similar to depth first
search. Accidental mis-implementation of Dijkstra’s which
occurs when f(x) = 0 instead of h(x) = 0.
X
--------------***
***
***
***
***
***
***
***
***
*** *** ----- S ----- -------------
Some Results
Euclidean Manhattan Walls 1
Walls 2
Last in
List
Dijkstra Random
89+2
88+2
65+4
57+4
76+2
95+1
94 (100 Avg)
85+5
87+3
82+8
87+6
59+5
97+4
95
57+2
56+2
40+5
58+4
52+5
75+2
74
Some images
Maze 1
Maze 1 Solution
Some images
Maze 1 Random
Maze 1 Wall Method 2
Some images
Maze 2
Maze 2 Solution
Some images
Maze 2 Last in List
Maze 2 Wall Method 2
Some images
Maze 3
Maze 3 Solution
Some images
Maze 3 Euclidean
Maze 3 Wall Method 1
A graph of some sort
120
100
80
60
40
20
0
Maze 1
Maze 2
Maze 3
A graph of some sort
120
100
Euclidean
Manhattan
Walls (1)
Walls (2)
Last in List
Dijkstra's
Random
80
60
40
20
0
Maze 1
Maze 2
Maze 3
Maze Conclusions
 Random Heuristics are useless in general
 Dijkstra’s fared even worse than random heuristics?
 Euclidian/Manhattan performance depended on maze,
usually not well, many misleading paths in mazes
 Number of walls did relatively okay
 Depth first did well, but likely because of good random
positioning of the
starting location
and the cheese
```