This repository was archived by the owner on Jan 27, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest.py
More file actions
104 lines (94 loc) · 2.99 KB
/
test.py
File metadata and controls
104 lines (94 loc) · 2.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
import re
import os
import sys
def get_layouts(path: str = "./layouts/") -> list:
layouts = []
for filename in os.listdir(path=path):
match = re.match(pattern="(\w*).lay", string=filename)
if match:
layouts.append(match.group(1))
return layouts
def prepare_problem_1():
layouts = ["tinyMaze", "mediumMaze", "bigMaze"]
fns = ["depthFirstSearch", "breadthFirstSearch", "uniformCostSearch", "aStarSearch"]
heuristics = ["nullHeuristic", "euclideanHeuristic", "manhattan_heuristic"]
argvs = []
for layout in layouts:
for fn in fns:
if fn == "aStarSearch":
for heuristic in heuristics:
argvs.append(
{
"layout": layout,
"pacman": "SearchAgent",
"agentArgs": {"fn": fn, "heuristic": heuristic},
}
)
else:
argvs.append(
{"layout": layout, "pacman": "SearchAgent", "agentArgs": {"fn": fn}}
)
return argvs
def prepare_problem_2():
argvs = [
{"layout": "mediumScaryMaze", "pacman": "yourSearchAgent"},
{"layout": "foodSearchMaze", "pacman": "yourSearchAgent"},
]
return argvs
def prepare_problem_3():
argvs = [
{
"layout": "trappedClassic",
"pacman": "MinimaxAgent",
"agentArgs": {"depth": 64},
"frameTime": 1,
},
{
"layout": "google",
"pacman": "MinimaxAgent",
"agentArgs": {"evalFn": "eval_fn", "depth": 1},
"frameTime": 0,
},
{
"layout": "trappedClassic",
"pacman": "AlphaBetaAgent",
"agentArgs": {"depth": 64},
"frameTime": 1,
},
{
"layout": "google",
"pacman": "AlphaBetaAgent",
"agentArgs": {"evalFn": "eval_fn", "depth": 1},
"frameTime": 0,
},
]
return argvs
if __name__ == "__main__":
argvs = []
if (len(sys.argv) < 2) or (sys.argv[1] == "1"):
argvs = prepare_problem_1()
elif sys.argv[1] == "2":
argvs = prepare_problem_2()
elif sys.argv[1] == "3":
argvs = prepare_problem_3()
pass
for argv in argvs:
cmd = [
"python",
"pacman.py",
f"--layout={argv['layout']}",
f"--pacman={argv['pacman']}",
"--quietTextGraphics",
# "--zoom=1.0",
"--fixRandomSeed",
]
if "frameTime" in argv:
cmd.append(f"--frameTime={argv['frameTime']}")
if "agentArgs" in argv:
agentArgs = []
for key, value in argv["agentArgs"].items():
agentArgs.append(f"{key}={value}")
agentArgs = ",".join(agentArgs)
cmd.append(f"--agentArgs={agentArgs}")
print(" ".join(cmd))
os.system(" ".join(cmd))