feat: docs

This commit is contained in:
zsq259
2024-06-24 15:46:49 +08:00
parent abfb098075
commit 6327553edf
214 changed files with 12760 additions and 0 deletions

View File

@ -0,0 +1,3 @@
# This is the solution file for test_cases/q4/0-eval-function-lose-states-1.test.
action: "Left"
generated: "lose1 lose2 root"

View File

@ -0,0 +1,30 @@
class: "GraphGameTreeTest"
alg: "ExpectimaxAgent"
depth: "2"
diagram: """
root
/ \
lose1 lose2
1 0
If your algorithm is returning a different
action, make sure you are calling the
evaluation function on losing states.
"""
num_agents: "2"
start_state: "root"
win_states: ""
lose_states: "lose1 lose2"
successors: """
root Left lose1
root Right lose2
"""
evaluation: """
lose1 1.0
lose2 0.0
"""

View File

@ -0,0 +1,3 @@
# This is the solution file for test_cases/q4/0-eval-function-lose-states-2.test.
action: "Right"
generated: "lose1 lose2 root"

View File

@ -0,0 +1,30 @@
class: "GraphGameTreeTest"
alg: "ExpectimaxAgent"
depth: "2"
diagram: """
root
/ \
lose1 lose2
0 1
If your algorithm is returning a different
action, make sure you are calling the
evaluation function on losing states.
"""
num_agents: "2"
start_state: "root"
win_states: ""
lose_states: "lose1 lose2"
successors: """
root Left lose1
root Right lose2
"""
evaluation: """
lose1 0.0
lose2 1.0
"""

View File

@ -0,0 +1,3 @@
# This is the solution file for test_cases/q4/0-eval-function-win-states-1.test.
action: "Left"
generated: "root win1 win2"

View File

@ -0,0 +1,30 @@
class: "GraphGameTreeTest"
alg: "ExpectimaxAgent"
depth: "2"
diagram: """
root
/ \
win1 win2
1 0
If your algorithm is returning a different
action, make sure you are calling the
evaluation function on winning states.
"""
num_agents: "2"
start_state: "root"
win_states: "win1 win2"
lose_states: ""
successors: """
root Left win1
root Right win2
"""
evaluation: """
win1 1.0
win2 0.0
"""

View File

@ -0,0 +1,3 @@
# This is the solution file for test_cases/q4/0-eval-function-win-states-2.test.
action: "Right"
generated: "root win1 win2"

View File

@ -0,0 +1,30 @@
class: "GraphGameTreeTest"
alg: "ExpectimaxAgent"
depth: "2"
diagram: """
root
/ \
win1 win2
0 1
If your algorithm is returning a different
action, make sure you are calling the
evaluation function on winning states.
"""
num_agents: "2"
start_state: "root"
win_states: "win1 win2"
lose_states: ""
successors: """
root Left win1
root Right win2
"""
evaluation: """
win1 0.0
win2 1.0
"""

View File

@ -0,0 +1,3 @@
# This is the solution file for test_cases/q4/0-expectimax1.test.
action: "Left"
generated: "A B C D E F G H I exp1 exp2 exp3 max"

View File

@ -0,0 +1,48 @@
class: "GraphGameTreeTest"
alg: "ExpectimaxAgent"
depth: "2"
# Tree adapted from lecture 6 slides
diagram: """
max
/-/ | \--\
/ | \
/ | \
exp1 exp2 exp3
/|\ /|\ /|\
/ | \ / | \ / | \
A B C D E F G H I
3 12 8 2 4 6 14 5 2
"""
num_agents: "2"
start_state: "max"
win_states: "A B C D E F G H I"
lose_states: ""
successors: """
max Left exp1
max Center exp2
max Right exp3
exp1 Left A
exp1 Center B
exp1 Right C
exp2 Left D
exp2 Center E
exp2 Right F
exp3 Left G
exp3 Center H
exp3 Right I
"""
evaluation: """
A 3.0
B 12.0
C 8.0
D 2.0
E 4.0
F 6.0
G 14.0
H 5.0
I 2.0
"""

View File

@ -0,0 +1,3 @@
# This is the solution file for test_cases/q4/1-expectimax2.test.
action: "Left"
generated: "A B C D E F G H I exp1 exp2 exp3 max"

View File

@ -0,0 +1,48 @@
class: "GraphGameTreeTest"
alg: "ExpectimaxAgent"
depth: "2"
# Tree from lecture 7 slides
diagram: """
max
/-/ | \--\
/ | \
/ | \
exp1 exp2 exp3
/|\ /|\ /|\
/ | \ / | \ / | \
A B C D E F G H I
3 12 9 2 4 6 15 6 0
"""
num_agents: "2"
start_state: "max"
win_states: "A B C D E F G H I"
lose_states: ""
successors: """
max Left exp1
max Center exp2
max Right exp3
exp1 Left A
exp1 Center B
exp1 Right C
exp2 Left D
exp2 Center E
exp2 Right F
exp3 Left G
exp3 Center H
exp3 Right I
"""
evaluation: """
A 3.0
B 12.0
C 9.0
D 2.0
E 4.0
F 6.0
G 15.0
H 6.0
I 0.0
"""

View File

@ -0,0 +1,3 @@
# This is the solution file for test_cases/q4/2-one-ghost-3level.test.
action: "Left"
generated: "a b1 b2 c1 c2 c3 c4 d1 d2 d3 d4 d5 d6 d7 d8"

View File

@ -0,0 +1,52 @@
class: "GraphGameTreeTest"
alg: "ExpectimaxAgent"
depth: "3"
diagram: """
/-----a------\
/ \
/ \
b1 b2
/ \ / \
c1 c2 c3 c4
/ \ / \ / \ / \
d1 d2 d3 d4 d5 d6 d7 d8
3 9 10 6 4 7 0 5
a - max
b - exp
c - max
"""
num_agents: "2"
start_state: "a"
win_states: "d1 d2 d3 d4 d5 d6 d7 d8"
lose_states: ""
successors: """
a Left b1
a Right b2
b1 Left c1
b1 Right c2
b2 Left c3
b2 Right c4
c1 Left d1
c1 Right d2
c2 Left d3
c2 Right d4
c3 Left d5
c3 Right d6
c4 Left d7
c4 Right d8
"""
evaluation: """
d1 3.0
d2 9.0
d3 10.0
d4 6.0
d5 4.0
d6 7.0
d7 0.0
d8 5.0
"""

View File

@ -0,0 +1,3 @@
# This is the solution file for test_cases/q4/3-one-ghost-4level.test.
action: "Right"
generated: "A B C D E F G H I J K L M N O P a b1 b2 c1 c2 c3 c4 d1 d2 d3 d4 d5 d6 d7 d8"

View File

@ -0,0 +1,79 @@
class: "GraphGameTreeTest"
alg: "ExpectimaxAgent"
depth: "4"
diagram: """
/-----a------\
/ \
/ \
b1 b2
/ \ / \
c1 c2 c3 c4
/ \ / \ / \ / \
d1 d2 d3 d4 d5 d6 d7 d8
/ \ / \ / \ / \ / \ / \ / \ / \
A B C D E F G H I J K L M N O P
3 13 5 9 10 11 6 8 1 0 4 7 12 15 2 14
a - max
b - exp
c - max
d - exp
"""
num_agents: "2"
start_state: "a"
win_states: "A B C D E F G H I J K L M N O P"
lose_states: ""
successors: """
a Left b1
a Right b2
b1 Left c1
b1 Right c2
b2 Left c3
b2 Right c4
c1 Left d1
c1 Right d2
c2 Left d3
c2 Right d4
c3 Left d5
c3 Right d6
c4 Left d7
c4 Right d8
d1 Left A
d1 Right B
d2 Left C
d2 Right D
d3 Left E
d3 Right F
d4 Left G
d4 Right H
d5 Left I
d5 Right J
d6 Left K
d6 Right L
d7 Left M
d7 Right N
d8 Left O
d8 Right P
"""
evaluation: """
A 3.0
B 13.0
C 5.0
D 9.0
E 10.0
F 11.0
G 6.0
H 8.0
I 1.0
J 0.0
K 4.0
L 7.0
M 12.0
N 15.0
O 2.0
P 14.0
"""

View File

@ -0,0 +1,3 @@
# This is the solution file for test_cases/q4/4-two-ghosts-3level.test.
action: "Left"
generated: "a b1 b2 c1 c2 c3 c4 d1 d2 d3 d4 d5 d6 d7 d8"

View File

@ -0,0 +1,52 @@
class: "GraphGameTreeTest"
alg: "ExpectimaxAgent"
depth: "3"
diagram: """
/-----a------\
/ \
/ \
b1 b2
/ \ / \
c1 c2 c3 c4
/ \ / \ / \ / \
d1 d2 d3 d4 d5 d6 d7 d8
3 9 10 6 4 7 0 5
a - max
b - exp
c - exp
"""
num_agents: "3"
start_state: "a"
win_states: "d1 d2 d3 d4 d5 d6 d7 d8"
lose_states: ""
successors: """
a Left b1
a Right b2
b1 Left c1
b1 Right c2
b2 Left c3
b2 Right c4
c1 Left d1
c1 Right d2
c2 Left d3
c2 Right d4
c3 Left d5
c3 Right d6
c4 Left d7
c4 Right d8
"""
evaluation: """
d1 3.0
d2 9.0
d3 10.0
d4 6.0
d5 4.0
d6 7.0
d7 0.0
d8 5.0
"""

View File

@ -0,0 +1,3 @@
# This is the solution file for test_cases/q4/5-two-ghosts-4level.test.
action: "Left"
generated: "A B C D E F G H I J K L M N O P a b1 b2 c1 c2 c3 c4 d1 d2 d3 d4 d5 d6 d7 d8"

View File

@ -0,0 +1,79 @@
class: "GraphGameTreeTest"
alg: "ExpectimaxAgent"
depth: "4"
diagram: """
/-----a------\
/ \
/ \
b1 b2
/ \ / \
c1 c2 c3 c4
/ \ / \ / \ / \
d1 d2 d3 d4 d5 d6 d7 d8
/ \ / \ / \ / \ / \ / \ / \ / \
A B C D E F G H I J K L M N O P
3 13 5 9 10 11 6 8 1 0 4 7 12 15 2 14
a - max
b - exp
c - exp
d - max
"""
num_agents: "3"
start_state: "a"
win_states: "A B C D E F G H I J K L M N O P"
lose_states: ""
successors: """
a Left b1
a Right b2
b1 Left c1
b1 Right c2
b2 Left c3
b2 Right c4
c1 Left d1
c1 Right d2
c2 Left d3
c2 Right d4
c3 Left d5
c3 Right d6
c4 Left d7
c4 Right d8
d1 Left A
d1 Right B
d2 Left C
d2 Right D
d3 Left E
d3 Right F
d4 Left G
d4 Right H
d5 Left I
d5 Right J
d6 Left K
d6 Right L
d7 Left M
d7 Right N
d8 Left O
d8 Right P
"""
evaluation: """
A 3.0
B 13.0
C 5.0
D 9.0
E 10.0
F 11.0
G 6.0
H 8.0
I 1.0
J 0.0
K 4.0
L 7.0
M 12.0
N 15.0
O 2.0
P 14.0
"""

View File

@ -0,0 +1,3 @@
# This is the solution file for test_cases/q4/6-1a-check-depth-one-ghost.test.
action: "Left"
generated: "a b1 b2 b3 c1 c2 c3"

View File

@ -0,0 +1,83 @@
class: "GraphGameTreeTest"
alg: "ExpectimaxAgent"
depth: "1"
diagram: """
a
/-/ | \--\
/ | \
0 b1 0 b2 b3 8
| | |
10 c1 0 c2 c3 8
| | |
0 d1 0 d2 d3 8
| | |
0 e1 10 e2 e3 8
| | |
0 f1 0 f2 f3 8
| | |
g1 g2 g3
0 0 8
a - max
b - min
c - max
d - min
e - max
f - min
At depth 1, the evaluation function is called at level c,
so Left should be returned. If your algorithm is returning a
different action, check how you implemented your depth.
"""
num_agents: "2"
start_state: "a"
win_states: "g1 g2 g3"
lose_states: ""
successors: """
a Left b1
a Center b2
a Right b3
b1 Center c1
b2 Center c2
b3 Center c3
c1 Center d1
c2 Center d2
c3 Center d3
d1 Center e1
d2 Center e2
d3 Center e3
e1 Center f1
e2 Center f2
e3 Center f3
f1 Center g1
f2 Center g2
f3 Center g3
"""
evaluation: """
b1 0.0
b2 0.0
b3 8.0
c1 10.0
c2 0.0
c3 8.0
d1 0.0
d2 0.0
d3 8.0
e1 0.0
e2 10.0
e3 8.0
f1 0.0
f2 0.0
f3 8.0
g1 0.0
g2 0.0
g3 8.0
"""

View File

@ -0,0 +1,3 @@
# This is the solution file for test_cases/q4/6-1b-check-depth-one-ghost.test.
action: "Center"
generated: "a b1 b2 b3 c1 c2 c3 d1 d2 d3 e1 e2 e3"

View File

@ -0,0 +1,83 @@
class: "GraphGameTreeTest"
alg: "ExpectimaxAgent"
depth: "2"
diagram: """
a
/-/ | \--\
/ | \
0 b1 0 b2 b3 8
| | |
10 c1 0 c2 c3 8
| | |
0 d1 0 d2 d3 8
| | |
0 e1 10 e2 e3 8
| | |
0 f1 0 f2 f3 8
| | |
g1 g2 g3
0 0 8
a - max
b - min
c - max
d - min
e - max
f - min
At depth 2, the evaluation function is called at level e,
so Center should be returned. If your algorithm is returning a
different action, check how you implemented your depth.
"""
num_agents: "2"
start_state: "a"
win_states: "g1 g2 g3"
lose_states: ""
successors: """
a Left b1
a Center b2
a Right b3
b1 Center c1
b2 Center c2
b3 Center c3
c1 Center d1
c2 Center d2
c3 Center d3
d1 Center e1
d2 Center e2
d3 Center e3
e1 Center f1
e2 Center f2
e3 Center f3
f1 Center g1
f2 Center g2
f3 Center g3
"""
evaluation: """
b1 0.0
b2 0.0
b3 8.0
c1 10.0
c2 0.0
c3 8.0
d1 0.0
d2 0.0
d3 8.0
e1 0.0
e2 10.0
e3 8.0
f1 0.0
f2 0.0
f3 8.0
g1 0.0
g2 0.0
g3 8.0
"""

View File

@ -0,0 +1,3 @@
# This is the solution file for test_cases/q4/6-1c-check-depth-one-ghost.test.
action: "Right"
generated: "a b1 b2 b3 c1 c2 c3 d1 d2 d3 e1 e2 e3 f1 f2 f3 g1 g2 g3"

View File

@ -0,0 +1,83 @@
class: "GraphGameTreeTest"
alg: "ExpectimaxAgent"
depth: "3"
diagram: """
a
/-/ | \--\
/ | \
0 b1 0 b2 b3 8
| | |
10 c1 0 c2 c3 8
| | |
0 d1 0 d2 d3 8
| | |
0 e1 10 e2 e3 8
| | |
0 f1 0 f2 f3 8
| | |
g1 g2 g3
0 0 8
a - max
b - min
c - max
d - min
e - max
f - min
At depth 3, the evaluation function is called at level g,
so Right should be returned. If your algorithm is returning a
different action, check how you implemented your depth.
"""
num_agents: "2"
start_state: "a"
win_states: "g1 g2 g3"
lose_states: ""
successors: """
a Left b1
a Center b2
a Right b3
b1 Center c1
b2 Center c2
b3 Center c3
c1 Center d1
c2 Center d2
c3 Center d3
d1 Center e1
d2 Center e2
d3 Center e3
e1 Center f1
e2 Center f2
e3 Center f3
f1 Center g1
f2 Center g2
f3 Center g3
"""
evaluation: """
b1 0.0
b2 0.0
b3 8.0
c1 10.0
c2 0.0
c3 8.0
d1 0.0
d2 0.0
d3 8.0
e1 0.0
e2 10.0
e3 8.0
f1 0.0
f2 0.0
f3 8.0
g1 0.0
g2 0.0
g3 8.0
"""

View File

@ -0,0 +1,3 @@
# This is the solution file for test_cases/q4/6-2a-check-depth-two-ghosts.test.
action: "Left"
generated: "a b1 b2 b3 c1 c2 c3 d1 d2 d3"

View File

@ -0,0 +1,110 @@
class: "GraphGameTreeTest"
alg: "ExpectimaxAgent"
depth: "1"
diagram: """
a
/-/ | \--\
/ | \
0 b1 0 b2 b3 8
| | |
0 c1 0 c2 c3 8
| | |
10 d1 0 d2 d3 8
| | |
0 e1 0 e2 e3 8
| | |
0 f1 0 f2 f3 8
| | |
0 g1 10 g2 g3 8
| | |
0 h1 0 h2 h3 8
| | |
0 i1 0 i2 i3 8
| | |
j1 j2 j3
0 0 8
a - max
b - min
c - min
d - max
e - min
f - min
g - max
h - min
i - min
At depth 1, the evaluation function is called at level d,
so Left should be returned. If your algorithm is returning a
different action, check how you implemented your depth.
"""
num_agents: "3"
start_state: "a"
win_states: "j1 j2 j3"
lose_states: ""
successors: """
a Left b1
a Center b2
a Right b3
b1 Center c1
b2 Center c2
b3 Center c3
c1 Center d1
c2 Center d2
c3 Center d3
d1 Center e1
d2 Center e2
d3 Center e3
e1 Center f1
e2 Center f2
e3 Center f3
f1 Center g1
f2 Center g2
f3 Center g3
g1 Center h1
g2 Center h2
g3 Center h3
h1 Center i1
h2 Center i2
h3 Center i3
i1 Center j1
i2 Center j2
i3 Center j3
"""
evaluation: """
b1 0.0
b2 0.0
b3 8.0
c1 0.0
c2 0.0
c3 8.0
d1 10.0
d2 0.0
d3 8.0
e1 0.0
e2 0.0
e3 8.0
f1 0.0
f2 0.0
f3 8.0
g1 0.0
g2 10.0
g3 8.0
h1 0.0
h2 0.0
h3 8.0
i1 0.0
i2 0.0
i3 8.0
j1 0.0
j2 0.0
j3 8.0
"""

View File

@ -0,0 +1,3 @@
# This is the solution file for test_cases/q4/6-2b-check-depth-two-ghosts.test.
action: "Center"
generated: "a b1 b2 b3 c1 c2 c3 d1 d2 d3 e1 e2 e3 f1 f2 f3 g1 g2 g3"

View File

@ -0,0 +1,110 @@
class: "GraphGameTreeTest"
alg: "ExpectimaxAgent"
depth: "2"
diagram: """
a
/-/ | \--\
/ | \
0 b1 0 b2 b3 8
| | |
0 c1 0 c2 c3 8
| | |
10 d1 0 d2 d3 8
| | |
0 e1 0 e2 e3 8
| | |
0 f1 0 f2 f3 8
| | |
0 g1 10 g2 g3 8
| | |
0 h1 0 h2 h3 8
| | |
0 i1 0 i2 i3 8
| | |
j1 j2 j3
0 0 8
a - max
b - min
c - min
d - max
e - min
f - min
g - max
h - min
i - min
At depth 2, the evaluation function is called at level g,
so Center should be returned. If your algorithm is returning
a different action, check how you implemented your depth.
"""
num_agents: "3"
start_state: "a"
win_states: "j1 j2 j3"
lose_states: ""
successors: """
a Left b1
a Center b2
a Right b3
b1 Center c1
b2 Center c2
b3 Center c3
c1 Center d1
c2 Center d2
c3 Center d3
d1 Center e1
d2 Center e2
d3 Center e3
e1 Center f1
e2 Center f2
e3 Center f3
f1 Center g1
f2 Center g2
f3 Center g3
g1 Center h1
g2 Center h2
g3 Center h3
h1 Center i1
h2 Center i2
h3 Center i3
i1 Center j1
i2 Center j2
i3 Center j3
"""
evaluation: """
b1 0.0
b2 0.0
b3 8.0
c1 0.0
c2 0.0
c3 8.0
d1 10.0
d2 0.0
d3 8.0
e1 0.0
e2 0.0
e3 8.0
f1 0.0
f2 0.0
f3 8.0
g1 0.0
g2 10.0
g3 8.0
h1 0.0
h2 0.0
h3 8.0
i1 0.0
i2 0.0
i3 8.0
j1 0.0
j2 0.0
j3 8.0
"""

View File

@ -0,0 +1,3 @@
# This is the solution file for test_cases/q4/6-2c-check-depth-two-ghosts.test.
action: "Right"
generated: "a b1 b2 b3 c1 c2 c3 d1 d2 d3 e1 e2 e3 f1 f2 f3 g1 g2 g3 h1 h2 h3 i1 i2 i3 j1 j2 j3"

View File

@ -0,0 +1,110 @@
class: "GraphGameTreeTest"
alg: "ExpectimaxAgent"
depth: "3"
diagram: """
a
/-/ | \--\
/ | \
0 b1 0 b2 b3 8
| | |
0 c1 0 c2 c3 8
| | |
10 d1 0 d2 d3 8
| | |
0 e1 0 e2 e3 8
| | |
0 f1 0 f2 f3 8
| | |
0 g1 10 g2 g3 8
| | |
0 h1 0 h2 h3 8
| | |
0 i1 0 i2 i3 8
| | |
j1 j2 j3
0 0 8
a - max
b - min
c - min
d - max
e - min
f - min
g - max
h - min
i - min
At depth 3, the evaluation function is called at level j,
so Right should be returned. If your algorithm is returning
a different action, check how you implemented your depth.
"""
num_agents: "3"
start_state: "a"
win_states: "j1 j2 j3"
lose_states: ""
successors: """
a Left b1
a Center b2
a Right b3
b1 Center c1
b2 Center c2
b3 Center c3
c1 Center d1
c2 Center d2
c3 Center d3
d1 Center e1
d2 Center e2
d3 Center e3
e1 Center f1
e2 Center f2
e3 Center f3
f1 Center g1
f2 Center g2
f3 Center g3
g1 Center h1
g2 Center h2
g3 Center h3
h1 Center i1
h2 Center i2
h3 Center i3
i1 Center j1
i2 Center j2
i3 Center j3
"""
evaluation: """
b1 0.0
b2 0.0
b3 8.0
c1 0.0
c2 0.0
c3 8.0
d1 10.0
d2 0.0
d3 8.0
e1 0.0
e2 0.0
e3 8.0
f1 0.0
f2 0.0
f3 8.0
g1 0.0
g2 10.0
g3 8.0
h1 0.0
h2 0.0
h3 8.0
i1 0.0
i2 0.0
i3 8.0
j1 0.0
j2 0.0
j3 8.0
"""

View File

@ -0,0 +1,444 @@
optimalActions: """
[[["West", "East"], 59], [["West", "East"], 35]]
[[["West"], 190], [["West"], 127]]
[[["West"], 190], [["West"], 135]]
[[["West", "North"], 120], [["West", "North"], 82]]
[[["West"], 77], [["West"], 57]]
[[["West", "North"], 143], [["West", "North"], 97]]
[[["West"], 155], [["West"], 110]]
[[["West"], 40], [["West"], 27]]
[[["North"], 64], [["North"], 43]]
[[["North"], 85], [["North"], 57]]
[[["North"], 106], [["North"], 71]]
[[["North"], 97], [["North"], 65]]
[[["East"], 154], [["East"], 103]]
[[["Stop"], 130], [["West"], 85]]
[[["West"], 30], [["West"], 17]]
[[["South"], 15], [["South"], 9]]
[[["South"], 15], [["South"], 9]]
[[["South"], 15], [["South"], 9]]
[[["South"], 15], [["South"], 9]]
[[["East"], 15], [["East"], 9]]
[[["East"], 15], [["East"], 9]]
[[["East"], 18], [["East"], 12]]
[[["North"], 29], [["North"], 18]]
[[["North"], 50], [["North"], 31]]
[[["West"], 55], [["West"], 36]]
[[["East"], 29], [["East"], 16]]
[[["North"], 89], [["North"], 61]]
[[["East", "North"], 161], [["East", "North"], 121]]
[[["East", "North"], 221], [["East", "North"], 166]]
[[["North", "South"], 105], [["North", "South"], 77]]
[[["West"], 69], [["West"], 51]]
[[["West"], 94], [["West"], 69]]
[[["West", "Stop"], 57], [["West"], 42]]
[[["West", "Stop", "East"], 69], [["West", "East"], 49]]
[[["West", "Stop", "East"], 61], [["West", "East"], 41]]
[[["Stop", "East", "South"], 55], [["East", "South"], 37]]
[[["Stop", "East", "South"], 28], [["East", "South"], 19]]
[[["Stop", "East", "South"], 34], [["East", "South"], 23]]
[[["Stop", "East", "South"], 55], [["East", "South"], 37]]
[[["Stop", "East", "South"], 55], [["East", "South"], 37]]
[[["Stop", "East", "South"], 61], [["East", "South"], 41]]
[[["Stop", "East", "South"], 85], [["East", "South"], 57]]
[[["Stop", "East", "South"], 64], [["East", "South"], 43]]
[[["Stop", "East", "South"], 61], [["East", "South"], 41]]
[[["Stop", "East", "South"], 61], [["East", "South"], 41]]
[[["Stop", "East", "South"], 85], [["East", "South"], 57]]
[[["Stop", "East", "South"], 102], [["East", "South"], 67]]
[[["Stop", "South"], 23], [["South"], 13]]
[[["South"], 15], [["South"], 9]]
[[["South"], 15], [["South"], 9]]
[[["South"], 15], [["South"], 9]]
[[["South"], 15], [["South"], 9]]
[[["East"], 15], [["East"], 9]]
[[["East"], 15], [["East"], 9]]
[[["East"], 18], [["East"], 12]]
[[["East", "North"], 29], [["East", "North"], 18]]
[[["East"], 38], [["East"], 22]]
[[["North"], 29], [["North"], 18]]
[[["North"], 38], [["North"], 22]]
[[["East"], 33], [["East"], 22]]
[[["East"], 37], [["East"], 18]]
[[["East"], 18], [["East"], 12]]
[[["East"], 37], [["East"], 26]]
[[["East"], 69], [["East"], 41]]
[[["East"], 56], [["East"], 26]]
[[["East"], 44], [["East"], 29]]
[[["North", "South"], 83], [["North", "South"], 52]]
[[["East", "North"], 121], [["East", "North"], 74]]
[[["East", "North"], 97], [["East", "North"], 73]]
[[["North", "South"], 173], [["North", "South"], 130]]
[[["West", "East"], 90], [["West", "East"], 66]]
[[["West", "Stop", "East"], 161], [["West", "East"], 118]]
[[["Stop", "East", "South"], 58], [["East", "South"], 43]]
[[["Stop", "East"], 120], [["East"], 85]]
[[["East"], 78], [["East"], 45]]
[[["West"], 77], [["West"], 42]]
[[["South"], 83], [["South"], 48]]
[[["South"], 49], [["South"], 37]]
[[["South"], 185], [["South"], 104]]
[[["South"], 68], [["South"], 41]]
[[["West"], 30], [["West"], 18]]
[[["West"], 56], [["West"], 29]]
[[["West"], 14], [["West"], 10]]
[[["West"], 20], [["West"], 14]]
[[["West"], 13], [["West"], 9]]
[[["West"], 13], [["West"], 9]]
[[["West"], 16], [["West"], 12]]
[[["West", "North"], 30], [["West", "North"], 20]]
[[["West"], 38], [["West"], 23]]
[[["West", "Stop", "East", "North"], 70], [["West", "East", "North"], 46]]
[[["West", "Stop", "East"], 128], [["West", "East"], 89]]
[[["West", "Stop", "East"], 31], [["West", "East"], 20]]
[[["Stop", "East", "North"], 69], [["East", "North"], 45]]
[[["Stop", "North"], 58], [["North"], 31]]
[[["North"], 34], [["North"], 19]]
[[["North"], 30], [["North"], 17]]
[[["North"], 19], [["North"], 11]]
[[["North"], 34], [["North"], 19]]
[[["East"], 30], [["East"], 17]]
[[["East"], 19], [["East"], 11]]
[[["East"], 44], [["East"], 29]]
[[["East", "South"], 87], [["East", "South"], 60]]
[[["East", "South"], 108], [["East", "South"], 62]]
[[["South"], 120], [["South"], 61]]
[[["North", "South"], 209], [["North", "South"], 132]]
[[["West"], 108], [["West"], 60]]
[[["West", "Stop", "East", "South"], 83], [["West", "East", "South"], 61]]
[[["West", "Stop", "East", "South"], 90], [["West", "East", "South"], 66]]
[[["West", "Stop", "East"], 134], [["West", "East"], 95]]
[[["West", "Stop", "East"], 82], [["West", "East"], 55]]
[[["Stop", "East", "South"], 142], [["East", "South"], 95]]
[[["Stop", "East", "South"], 98], [["East", "South"], 65]]
[[["Stop", "East", "South"], 128], [["East", "South"], 86]]
[[["Stop", "East", "South"], 82], [["East", "South"], 55]]
[[["Stop", "East", "South"], 85], [["East", "South"], 57]]
[[["Stop", "East", "South"], 190], [["East", "South"], 127]]
[[["Stop", "East", "South"], 158], [["East", "South"], 103]]
[[["Stop", "South"], 50], [["South"], 27]]
[[["South"], 30], [["South"], 17]]
[[["South"], 15], [["South"], 9]]
[[["South"], 15], [["South"], 9]]
[[["South"], 15], [["South"], 9]]
[[["East"], 15], [["East"], 9]]
[[["East"], 15], [["East"], 9]]
[[["East"], 18], [["East"], 12]]
[[["East", "North"], 29], [["East", "North"], 18]]
[[["East"], 37], [["East"], 22]]
[[["East", "North"], 41], [["East", "North"], 24]]
[[["East"], 59], [["East"], 29]]
[[["East"], 19], [["East"], 11]]
[[["East"], 26], [["East"], 15]]
[[["East"], 15], [["East"], 9]]
[[["East"], 15], [["East"], 9]]
[[["East"], 18], [["East"], 12]]
[[["East"], 29], [["East"], 18]]
[[["East"], 37], [["East"], 22]]
[[["East", "North"], 41], [["East", "North"], 24]]
[[["East"], 59], [["East"], 29]]
[[["East"], 19], [["East"], 11]]
[[["North"], 26], [["North"], 15]]
[[["North"], 19], [["North"], 11]]
[[["North"], 30], [["North"], 17]]
[[["North"], 34], [["North"], 19]]
[[["West"], 34], [["West"], 19]]
[[["West"], 25], [["West"], 13]]
[[["West", "Stop", "East"], 7], [["West", "East"], 3]]
"""
altDepthActions: """
[["West", "East"], ["West", "East"], ["West", "East"], ["West", "East"]]
[["West"], ["West"], ["West"], ["West"]]
[["West"], ["West"], ["West"], ["West"]]
[["West", "North"], ["West", "North"], ["West", "North"], ["West", "North"]]
[["West"], ["West"], ["West"], ["West"]]
[["West", "North"], ["West", "North"], ["West", "North"], ["West", "North"]]
[["West"], ["West"], ["West"], ["West"]]
[["West"], ["West"], ["West"], ["West"]]
[["North"], ["North"], ["North"], ["North"]]
[["North"], ["North"], ["North"], ["North"]]
[["North"], ["North"], ["North"], ["North"]]
[["North"], ["North"], ["North"], ["North"]]
[["East"], ["East"], ["East"], ["East"]]
[["West", "Stop"], ["West"], ["Stop"], ["West"]]
[["West"], ["West"], ["West"], ["West"]]
[["South"], ["South"], ["South"], ["South"]]
[["South"], ["South"], ["South"], ["South"]]
[["South"], ["South"], ["South"], ["South"]]
[["South"], ["South"], ["South"], ["South"]]
[["East"], ["East"], ["East"], ["East"]]
[["East"], ["East"], ["East"], ["East"]]
[["East"], ["East"], ["East"], ["East"]]
[["North"], ["North"], ["North"], ["North"]]
[["North"], ["North"], ["North"], ["North"]]
[["North"], ["North"], ["West"], ["West"]]
[["East"], ["East"], ["East"], ["East"]]
[["North"], ["North"], ["North"], ["North"]]
[["East", "North"], ["East", "North"], ["East", "North"], ["East", "North"]]
[["East", "North"], ["East", "North"], ["East"], ["East"]]
[["North", "South"], ["North", "South"], ["North"], ["North"]]
[["West"], ["West"], ["West"], ["West"]]
[["West"], ["West"], ["West", "Stop"], ["West"]]
[["West"], ["West"], ["West", "Stop", "East", "South"], ["West", "East", "South"]]
[["West", "Stop", "East"], ["West", "East"], ["West", "Stop", "East"], ["West", "East"]]
[["West", "Stop", "East"], ["West", "East"], ["West", "Stop", "East"], ["West", "East"]]
[["Stop", "East", "South"], ["East", "South"], ["Stop", "East", "South"], ["East", "South"]]
[["Stop", "East", "South"], ["East", "South"], ["Stop", "East", "South"], ["East", "South"]]
[["Stop", "East", "South"], ["East", "South"], ["Stop", "East", "South"], ["East", "South"]]
[["Stop", "East", "South"], ["East", "South"], ["Stop", "East", "South"], ["East", "South"]]
[["Stop", "East", "South"], ["East", "South"], ["Stop", "East", "South"], ["East", "South"]]
[["Stop", "East", "South"], ["East", "South"], ["Stop", "East", "South"], ["East", "South"]]
[["Stop", "East", "South"], ["East", "South"], ["Stop", "East", "South"], ["East", "South"]]
[["Stop", "East", "South"], ["East", "South"], ["Stop", "East", "South"], ["East", "South"]]
[["Stop", "East", "South"], ["East", "South"], ["Stop", "East", "South"], ["East", "South"]]
[["Stop", "East", "South"], ["East", "South"], ["Stop", "East", "South"], ["East", "South"]]
[["Stop", "East", "South"], ["East", "South"], ["Stop", "East", "South"], ["East", "South"]]
[["Stop", "East", "South"], ["East", "South"], ["Stop", "East", "South"], ["East", "South"]]
[["Stop", "South"], ["South"], ["Stop", "South"], ["South"]]
[["South"], ["South"], ["South"], ["South"]]
[["South"], ["South"], ["South"], ["South"]]
[["South"], ["South"], ["South"], ["South"]]
[["South"], ["South"], ["South"], ["South"]]
[["East"], ["East"], ["East"], ["East"]]
[["East"], ["East"], ["East"], ["East"]]
[["East"], ["East"], ["East"], ["East"]]
[["East", "North"], ["East", "North"], ["East"], ["East"]]
[["East"], ["East"], ["East"], ["East"]]
[["North"], ["North"], ["North"], ["North"]]
[["North"], ["North"], ["North"], ["North"]]
[["East"], ["East"], ["East"], ["East"]]
[["East"], ["East"], ["East"], ["East"]]
[["East"], ["East"], ["East"], ["East"]]
[["East"], ["East"], ["East"], ["East"]]
[["East"], ["East"], ["East"], ["East"]]
[["East"], ["East"], ["East"], ["East"]]
[["East"], ["East"], ["East"], ["East"]]
[["North", "South"], ["North", "South"], ["South"], ["South"]]
[["East", "North"], ["East", "North"], ["East", "North"], ["East", "North"]]
[["East", "North"], ["East", "North"], ["East", "North"], ["East", "North"]]
[["North", "South"], ["North", "South"], ["North"], ["North"]]
[["West", "East"], ["West", "East"], ["East"], ["East"]]
[["West"], ["West"], ["East"], ["East"]]
[["Stop", "East", "South"], ["East", "South"], ["East"], ["East"]]
[["Stop", "East"], ["East"], ["East"], ["East"]]
[["East"], ["East"], ["East"], ["East"]]
[["West"], ["West"], ["West"], ["West"]]
[["South"], ["South"], ["South"], ["South"]]
[["South"], ["South"], ["South"], ["South"]]
[["South"], ["South"], ["South"], ["South"]]
[["South"], ["South"], ["South"], ["South"]]
[["West", "East"], ["West", "East"], ["West"], ["West"]]
[["West"], ["West"], ["West"], ["West"]]
[["West"], ["West"], ["West"], ["West"]]
[["West"], ["West"], ["West"], ["West"]]
[["West"], ["West"], ["West"], ["West"]]
[["West"], ["West"], ["West"], ["West"]]
[["West"], ["West"], ["West"], ["West"]]
[["West", "North"], ["West", "North"], ["West", "North"], ["West", "North"]]
[["West"], ["West"], ["West"], ["West"]]
[["West", "Stop", "East", "North"], ["West", "East", "North"], ["West", "Stop", "East", "North"], ["West", "East", "North"]]
[["West", "Stop", "East"], ["West", "East"], ["West", "Stop", "East"], ["West", "East"]]
[["West", "Stop", "East"], ["West", "East"], ["West", "Stop", "East"], ["West", "East"]]
[["Stop", "East", "North"], ["East", "North"], ["Stop", "East", "North"], ["East", "North"]]
[["Stop", "North"], ["North"], ["Stop", "North"], ["North"]]
[["North"], ["North"], ["North"], ["North"]]
[["North"], ["North"], ["North"], ["North"]]
[["North"], ["North"], ["North"], ["North"]]
[["North"], ["North"], ["North"], ["North"]]
[["East"], ["East"], ["East"], ["East"]]
[["East"], ["East"], ["East"], ["East"]]
[["East"], ["East"], ["East"], ["East"]]
[["East", "South"], ["East", "South"], ["East", "South"], ["East", "South"]]
[["East", "South"], ["East", "South"], ["East", "South"], ["East", "South"]]
[["South"], ["South"], ["South"], ["South"]]
[["North", "South"], ["North", "South"], ["North", "South"], ["North", "South"]]
[["West"], ["West"], ["West"], ["West"]]
[["West", "Stop", "East", "South"], ["West", "East", "South"], ["West", "Stop", "East", "South"], ["West", "East", "South"]]
[["West", "Stop", "East", "South"], ["West", "East", "South"], ["West", "Stop", "East", "South"], ["West", "East", "South"]]
[["West", "Stop", "East"], ["West", "East"], ["West", "Stop", "East"], ["West", "East"]]
[["West", "Stop", "East"], ["West", "East"], ["West", "Stop", "East"], ["West", "East"]]
[["Stop", "East", "South"], ["East", "South"], ["Stop", "East", "South"], ["East", "South"]]
[["Stop", "East", "South"], ["East", "South"], ["Stop", "East", "South"], ["East", "South"]]
[["Stop", "East", "South"], ["East", "South"], ["Stop", "East", "South"], ["East", "South"]]
[["Stop", "East", "South"], ["East", "South"], ["Stop", "East", "South"], ["East", "South"]]
[["Stop", "East", "South"], ["East", "South"], ["Stop", "East", "South"], ["East", "South"]]
[["Stop", "East", "South"], ["East", "South"], ["Stop", "East", "South"], ["East", "South"]]
[["Stop", "East", "South"], ["East", "South"], ["Stop", "East", "South"], ["East", "South"]]
[["Stop", "South"], ["South"], ["Stop", "South"], ["South"]]
[["South"], ["South"], ["South"], ["South"]]
[["South"], ["South"], ["South"], ["South"]]
[["South"], ["South"], ["South"], ["South"]]
[["South"], ["South"], ["South"], ["South"]]
[["East"], ["East"], ["East"], ["East"]]
[["East"], ["East"], ["East"], ["East"]]
[["East"], ["East"], ["East"], ["East"]]
[["East", "North"], ["East", "North"], ["East", "North"], ["East", "North"]]
[["East"], ["East"], ["East"], ["East"]]
[["East", "North"], ["East", "North"], ["East", "North"], ["East", "North"]]
[["East"], ["East"], ["East"], ["East"]]
[["East"], ["East"], ["East"], ["East"]]
[["East"], ["East"], ["East"], ["East"]]
[["East"], ["East"], ["East"], ["East"]]
[["East"], ["East"], ["East"], ["East"]]
[["East"], ["East"], ["East"], ["East"]]
[["East"], ["East"], ["East"], ["East"]]
[["East"], ["East"], ["East"], ["East"]]
[["East", "North"], ["East", "North"], ["East"], ["East"]]
[["East"], ["East"], ["East"], ["East"]]
[["East"], ["East"], ["East"], ["East"]]
[["North"], ["North"], ["North"], ["North"]]
[["North"], ["North"], ["North"], ["North"]]
[["North"], ["North"], ["North"], ["North"]]
[["North"], ["North"], ["North"], ["North"]]
[["West"], ["West"], ["West"], ["West"]]
[["West"], ["West"], ["West"], ["West"]]
[["West", "Stop", "East"], ["West", "East"], ["West", "Stop", "East"], ["West", "East"]]
"""
partialPlyBugActions: """
[["West", "East"], ["West", "East"]]
[["West"], ["West"]]
[["West"], ["West"]]
[["West", "North"], ["West", "North"]]
[["West"], ["West"]]
[["West", "North"], ["West", "North"]]
[["West"], ["West"]]
[["West"], ["West"]]
[["North"], ["North"]]
[["North"], ["North"]]
[["North"], ["North"]]
[["North"], ["North"]]
[["East"], ["East"]]
[["Stop"], ["West"]]
[["West"], ["West"]]
[["South"], ["South"]]
[["South"], ["South"]]
[["South"], ["South"]]
[["South"], ["South"]]
[["East"], ["East"]]
[["East"], ["East"]]
[["East"], ["East"]]
[["North"], ["North"]]
[["North"], ["North"]]
[["West"], ["West"]]
[["East"], ["East"]]
[["North"], ["North"]]
[["East", "North"], ["East", "North"]]
[["East", "North"], ["East", "North"]]
[["North", "South"], ["North", "South"]]
[["West"], ["West"]]
[["West"], ["West"]]
[["West", "Stop"], ["West"]]
[["West", "Stop", "East"], ["West", "East"]]
[["West", "Stop", "East"], ["West", "East"]]
[["Stop", "East", "South"], ["East", "South"]]
[["Stop", "East", "South"], ["East", "South"]]
[["Stop", "East", "South"], ["East", "South"]]
[["Stop", "East", "South"], ["East", "South"]]
[["Stop", "East", "South"], ["East", "South"]]
[["Stop", "East", "South"], ["East", "South"]]
[["Stop", "East", "South"], ["East", "South"]]
[["Stop", "East", "South"], ["East", "South"]]
[["Stop", "East", "South"], ["East", "South"]]
[["Stop", "East", "South"], ["East", "South"]]
[["Stop", "East", "South"], ["East", "South"]]
[["Stop", "East", "South"], ["East", "South"]]
[["Stop", "South"], ["South"]]
[["South"], ["South"]]
[["South"], ["South"]]
[["South"], ["South"]]
[["South"], ["South"]]
[["East"], ["East"]]
[["East"], ["East"]]
[["East"], ["East"]]
[["East", "North"], ["East", "North"]]
[["East"], ["East"]]
[["North"], ["North"]]
[["North"], ["North"]]
[["East"], ["East"]]
[["East"], ["East"]]
[["East"], ["East"]]
[["East"], ["East"]]
[["East"], ["East"]]
[["East"], ["East"]]
[["East"], ["East"]]
[["North", "South"], ["North", "South"]]
[["East", "North"], ["East", "North"]]
[["East", "North"], ["East", "North"]]
[["North", "South"], ["North", "South"]]
[["West", "East"], ["West", "East"]]
[["West", "Stop", "East"], ["West", "East"]]
[["Stop", "East", "South"], ["East", "South"]]
[["Stop", "East"], ["East"]]
[["East"], ["East"]]
[["West"], ["West"]]
[["South"], ["South"]]
[["South"], ["South"]]
[["South"], ["South"]]
[["South"], ["South"]]
[["West"], ["West"]]
[["West"], ["West"]]
[["West"], ["West"]]
[["West"], ["West"]]
[["West"], ["West"]]
[["West"], ["West"]]
[["West"], ["West"]]
[["West", "North"], ["West", "North"]]
[["West"], ["West"]]
[["West", "Stop", "East", "North"], ["West", "East", "North"]]
[["West", "Stop", "East"], ["West", "East"]]
[["West", "Stop", "East"], ["West", "East"]]
[["Stop", "East", "North"], ["East", "North"]]
[["Stop", "North"], ["North"]]
[["North"], ["North"]]
[["North"], ["North"]]
[["North"], ["North"]]
[["North"], ["North"]]
[["East"], ["East"]]
[["East"], ["East"]]
[["East"], ["East"]]
[["East", "South"], ["East", "South"]]
[["East", "South"], ["East", "South"]]
[["South"], ["South"]]
[["North", "South"], ["North", "South"]]
[["West"], ["West"]]
[["West", "Stop", "East", "South"], ["West", "East", "South"]]
[["West", "Stop", "East", "South"], ["West", "East", "South"]]
[["West", "Stop", "East"], ["West", "East"]]
[["West", "Stop", "East"], ["West", "East"]]
[["Stop", "East", "South"], ["East", "South"]]
[["Stop", "East", "South"], ["East", "South"]]
[["Stop", "East", "South"], ["East", "South"]]
[["Stop", "East", "South"], ["East", "South"]]
[["Stop", "East", "South"], ["East", "South"]]
[["Stop", "East", "South"], ["East", "South"]]
[["Stop", "East", "South"], ["East", "South"]]
[["Stop", "South"], ["South"]]
[["South"], ["South"]]
[["South"], ["South"]]
[["South"], ["South"]]
[["South"], ["South"]]
[["East"], ["East"]]
[["East"], ["East"]]
[["East"], ["East"]]
[["East", "North"], ["East", "North"]]
[["East"], ["East"]]
[["East", "North"], ["East", "North"]]
[["East"], ["East"]]
[["East"], ["East"]]
[["East"], ["East"]]
[["East"], ["East"]]
[["East"], ["East"]]
[["East"], ["East"]]
[["East"], ["East"]]
[["East"], ["East"]]
[["East", "North"], ["East", "North"]]
[["East"], ["East"]]
[["East"], ["East"]]
[["North"], ["North"]]
[["North"], ["North"]]
[["North"], ["North"]]
[["North"], ["North"]]
[["West"], ["West"]]
[["West"], ["West"]]
[["West", "Stop", "East"], ["West", "East"]]
"""

View File

@ -0,0 +1,19 @@
class: "PacmanGameTreeTest"
alg: "ExpectimaxAgent"
seed: "0"
depth: "2"
max_points: "4"
# The following specifies the layout to be used
layoutName: "smallClassic"
layout: """
%%%%%%%%%%%%%%%%%%%%
%......%G G%......%
%.%%...%% %%...%%.%
%.%o.%........%.o%.%
%.%%.%.%%%%%%.%.%%.%
%........P.........%
%%%%%%%%%%%%%%%%%%%%
"""

View File

@ -0,0 +1,2 @@
max_points: "5"
class: "PassAllTestsQuestion"