getting right starter files

This commit is contained in:
Arjun Patel
2019-02-20 15:24:24 -08:00
parent 48d11417be
commit ade293719f
358 changed files with 8770 additions and 4878 deletions
+1 -1
View File
@@ -1 +1 @@
order: "q1 q2 q3 q4 q5 q6 q7 q8"
order: "q1 q2 q3 q4 q5"
@@ -1,3 +1,2 @@
max_points: "0"
class: "PartialCreditQuestion"
max_points: "4"
depends: "q4"
+11
View File
@@ -0,0 +1,11 @@
class: "EvalAgentTest"
agentName: "ContestAgent"
layoutName: "contestClassic"
maxTime: "180"
numGames: "5"
scoreThresholds: "2500 2900"
randomSeed: "0"
ghosts: "[DirectionalGhost(1), DirectionalGhost(2), DirectionalGhost(3)]"
+2 -2
View File
@@ -1,2 +1,2 @@
max_points: "3"
class: "PassAllTestsQuestion"
max_points: "4"
class: "PartialCreditQuestion"
+2
View File
@@ -0,0 +1,2 @@
# This is the solution file for test_cases/q1/grade-agent.test.
# File intentionally blank.
+18
View File
@@ -0,0 +1,18 @@
class: "EvalAgentTest"
agentName: "ReflexAgent"
layoutName: "openClassic"
maxTime: "120"
numGames: "10"
nonTimeoutMinimum: "10"
scoreThresholds: "500 1000"
winsMinimum: "1"
winsThresholds: "5 10"
randomSeed: "0"
ghosts: "[RandomGhost(1)]"
-7
View File
@@ -1,7 +0,0 @@
# This is the solution file for test_cases/q1/graph_backtrack.test.
# This solution is designed to support both right-to-left
# and left-to-right implementations.
solution: "1:A->C 0:C->G"
expanded_states: "A D C"
rev_solution: "1:A->C 0:C->G"
rev_expanded_states: "A B C"
-32
View File
@@ -1,32 +0,0 @@
class: "GraphSearchTest"
algorithm: "depthFirstSearch"
diagram: """
B
^
|
*A --> C --> G
|
V
D
A is the start state, G is the goal. Arrows mark
possible state transitions. This tests whether
you extract the sequence of actions correctly even
if your search backtracks. If you fail this, your
nodes are not correctly tracking the sequences of
actions required to reach them.
"""
# The following section specifies the search problem and the solution.
# The graph is specified by first the set of start states, followed by
# the set of goal states, and lastly by the state transitions which are
# of the form:
# <start state> <actions> <end state> <cost>
graph: """
start_state: A
goal_states: G
A 0:A->B B 1.0
A 1:A->C C 2.0
A 2:A->D D 4.0
C 0:C->G G 8.0
"""
-7
View File
@@ -1,7 +0,0 @@
# This is the solution file for test_cases/q1/graph_bfs_vs_dfs.test.
# This solution is designed to support both right-to-left
# and left-to-right implementations.
solution: "2:A->D 0:D->G"
expanded_states: "A D"
rev_solution: "0:A->B 0:B->D 0:D->G"
rev_expanded_states: "A B D"
-30
View File
@@ -1,30 +0,0 @@
# Graph where BFS finds the optimal solution but DFS does not
class: "GraphSearchTest"
algorithm: "depthFirstSearch"
diagram: """
/-- B
| ^
| |
| *A -->[G]
| | ^
| V |
\-->D ----/
A is the start state, G is the goal. Arrows
mark possible transitions
"""
# The following section specifies the search problem and the solution.
# The graph is specified by first the set of start states, followed by
# the set of goal states, and lastly by the state transitions which are
# of the form:
# <start state> <actions> <end state> <cost>
graph: """
start_state: A
goal_states: G
A 0:A->B B 1.0
A 1:A->G G 2.0
A 2:A->D D 4.0
B 0:B->D D 8.0
D 0:D->G G 16.0
"""
-7
View File
@@ -1,7 +0,0 @@
# This is the solution file for test_cases/q1/graph_infinite.test.
# This solution is designed to support both right-to-left
# and left-to-right implementations.
solution: "0:A->B 1:B->C 1:C->G"
expanded_states: "A B C"
rev_solution: "0:A->B 1:B->C 1:C->G"
rev_expanded_states: "A B C"
-30
View File
@@ -1,30 +0,0 @@
# Graph where natural action choice leads to an infinite loop
class: "GraphSearchTest"
algorithm: "depthFirstSearch"
diagram: """
B <--> C
^ /|
| / |
V / V
*A<-/ [G]
A is the start state, G is the goal. Arrows mark
possible state transitions.
"""
# The following section specifies the search problem and the solution.
# The graph is specified by first the set of start states, followed by
# the set of goal states, and lastly by the state transitions which are
# of the form:
# <start state> <actions> <end state> <cost>
graph: """
start_state: A
goal_states: G
A 0:A->B B 1.0
B 0:B->A A 2.0
B 1:B->C C 4.0
C 0:C->A A 8.0
C 1:C->G G 16.0
C 2:C->B B 32.0
"""
-7
View File
@@ -1,7 +0,0 @@
# This is the solution file for test_cases/q1/graph_manypaths.test.
# This solution is designed to support both right-to-left
# and left-to-right implementations.
solution: "2:A->B2 0:B2->C 0:C->D 2:D->E2 0:E2->F 0:F->G"
expanded_states: "A B2 C D E2 F"
rev_solution: "0:A->B1 0:B1->C 0:C->D 0:D->E1 0:E1->F 0:F->G"
rev_expanded_states: "A B1 C D E1 F"
-39
View File
@@ -1,39 +0,0 @@
class: "GraphSearchTest"
algorithm: "depthFirstSearch"
diagram: """
B1 E1
^ \ ^ \
/ V / V
*A --> C --> D --> F --> [G]
\ ^ \ ^
V / V /
B2 E2
A is the start state, G is the goal. Arrows mark
possible state transitions. This graph has multiple
paths to the goal, where nodes with the same state
are added to the fringe multiple times before they
are expanded.
"""
# The following section specifies the search problem and the solution.
# The graph is specified by first the set of start states, followed by
# the set of goal states, and lastly by the state transitions which are
# of the form:
# <start state> <actions> <end state> <cost>
graph: """
start_state: A
goal_states: G
A 0:A->B1 B1 1.0
A 1:A->C C 2.0
A 2:A->B2 B2 4.0
B1 0:B1->C C 8.0
B2 0:B2->C C 16.0
C 0:C->D D 32.0
D 0:D->E1 E1 64.0
D 1:D->F F 128.0
D 2:D->E2 E2 256.0
E1 0:E1->F F 512.0
E2 0:E2->F F 1024.0
F 0:F->G G 2048.0
"""
-40
View File
@@ -1,40 +0,0 @@
# This is the solution file for test_cases/q1/pacman_1.test.
# This solution is designed to support both right-to-left
# and left-to-right implementations.
# Number of nodes expanded must be with a factor of 1.0 of the numbers below.
solution: """
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 West
West West West West West South South South South South South South
South South East East East North North North North North North North
East East South South South South South South East East North North
North North North North East East South South South South East East
North North East East East East East East East East South South South
East East East East East East East South South South South South South
South West West West West West West West West West West West West West
West West West West South West West West West West West West West West
"""
expanded_nodes: "146"
rev_solution: """
South South West West West West South South East East East East South
South West West West West South South East East East East South South
West West West West South South South East North East East East South
South South West West West West West West West North North North North
North North North North West West West West West West West North North
North East East East East South East East East North North North West
West North North West West West West West West West West West West
West West West West West West West West West West West West West West
South South South South South South South South South East East East
North North North North North North North East East South South South
South South South East East North North North North North North East
East South South South South East East North North North North East
East East East East South South West West West South South East East
East South South West West West West West West South South West West
West West West South West West West West West South South East East
East East East East East North East East East East East North North
East East East East East East North East East East East East South
South West West West South West West West West West West South South
West West West West West South West West West West West West West West
West
"""
rev_expanded_nodes: "269"
-27
View File
@@ -1,27 +0,0 @@
# This is a basic depth first search test
class: "PacmanSearchTest"
algorithm: "depthFirstSearch"
# The following specifies the layout to be used
layoutName: "mediumMaze"
layout: """
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% P%
% %%%%%%%%%%%%%%%%%%%%%%% %%%%%%%% %
% %% % % %%%%%%% %% %
% %% % % % % %%%% %%%%%%%%% %% %%%%%
% %% % % % % %% %% %
% %% % % % % % %%%% %%% %%%%%% %
% % % % % % %% %%%%%%%% %
% %% % % %%%%%%%% %% %% %%%%%
% %% % %% %%%%%%%%% %% %
% %%%%%% %%%%%%% %% %%%%%% %
%%%%%% % %%%% %% % %
% %%%%%% %%%%% % %% %% %%%%%
% %%%%%% % %%%%% %% %
% %%%%%% %%%%%%%%%%% %% %% %
%%%%%%%%%% %%%%%% %
%. %%%%%%%%%%%%%%%% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
"""
@@ -0,0 +1,3 @@
# This is the solution file for test_cases/q2/0-eval-function-lose-states-1.test.
action: "Left"
generated: "lose1 lose2 root"
@@ -0,0 +1,30 @@
class: "GraphGameTreeTest"
alg: "MinimaxAgent"
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
"""
@@ -0,0 +1,3 @@
# This is the solution file for test_cases/q2/0-eval-function-lose-states-2.test.
action: "Right"
generated: "lose1 lose2 root"
@@ -0,0 +1,30 @@
class: "GraphGameTreeTest"
alg: "MinimaxAgent"
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
"""
@@ -0,0 +1,3 @@
# This is the solution file for test_cases/q2/0-eval-function-win-states-1.test.
action: "Left"
generated: "root win1 win2"
@@ -0,0 +1,30 @@
class: "GraphGameTreeTest"
alg: "MinimaxAgent"
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
"""
@@ -0,0 +1,3 @@
# This is the solution file for test_cases/q2/0-eval-function-win-states-2.test.
action: "Right"
generated: "root win1 win2"
@@ -0,0 +1,30 @@
class: "GraphGameTreeTest"
alg: "MinimaxAgent"
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
"""
+3
View File
@@ -0,0 +1,3 @@
# This is the solution file for test_cases/q2/0-lecture-6-tree.test.
action: "Center"
generated: "A B C D E F G H I max min1 min2 min3"
+50
View File
@@ -0,0 +1,50 @@
class: "GraphGameTreeTest"
alg: "MinimaxAgent"
depth: "2"
# Tree from lecture 6 slides
diagram: """
max
/-/ | \--\
/ | \
/ | \
min1 min2 min3
/|\ /|\ /|\
/ | \ / | \ / | \
A B C D E F G H I
3 12 8 5 4 6 14 1 11
"""
num_agents: "2"
start_state: "max"
win_states: "A B C D E F G H I"
lose_states: ""
successors: """
max Left min1
max Center min2
max Right min3
min1 Left A
min1 Center B
min1 Right C
min2 Left D
min2 Center E
min2 Right F
min3 Left G
min3 Center H
min3 Right I
"""
evaluation: """
A 3.0
B 12.0
C 8.0
D 5.0
E 4.0
F 6.0
G 14.0
H 1.0
I 11.0
"""
+3
View File
@@ -0,0 +1,3 @@
# This is the solution file for test_cases/q2/0-small-tree.test.
action: "pacLeft"
generated: "A B C D deeper minLeft minRight root"
+36
View File
@@ -0,0 +1,36 @@
class: "GraphGameTreeTest"
alg: "MinimaxAgent"
depth: "3"
diagram: """
root
/ \
minLeft minRight
/ \ / \
A B C deeper
4 3 2 |
D
1000
"""
num_agents: "2"
start_state: "root"
win_states: "A C"
lose_states: "B D"
successors: """
root pacLeft minLeft
root pacRight minRight
minLeft gLeft A
minLeft gRight B
minRight gLeft C
minRight gRight deeper
deeper pacLeft D
"""
evaluation: """
A 4.0
B 3.0
C 2.0
D 1000.0
"""
+3
View File
@@ -0,0 +1,3 @@
# This is the solution file for test_cases/q2/1-1-minmax.test.
action: "Left"
generated: "a b1 b2 c1 c2 cx d1 d2 d3 d4 dx"
+47
View File
@@ -0,0 +1,47 @@
class: "GraphGameTreeTest"
alg: "MinimaxAgent"
depth: "3"
diagram: """
/-----a------\
/ \
/ \
b1 b2
/ \ |
c1 c2 cx
/ \ / \ |
d1 d2 d3 d4 dx
-3 -9 10 6 -3.01
a - max
b - min
c - max
Note that the minimax value of b1 is -3.
"""
num_agents: "2"
start_state: "a"
win_states: "d1 d2 d3 d4 dx"
lose_states: ""
successors: """
a Left b1
a Right b2
b1 Left c1
b1 Right c2
b2 Down cx
c1 Left d1
c1 Right d2
c2 Left d3
c2 Right d4
cx Down dx
"""
evaluation: """
d1 -3.0
d2 -9.0
d3 10.0
d4 6.0
dx -3.01
"""
+3
View File
@@ -0,0 +1,3 @@
# This is the solution file for test_cases/q2/1-2-minmax.test.
action: "Right"
generated: "a b1 b2 c1 c2 cx d1 d2 d3 d4 dx"
+47
View File
@@ -0,0 +1,47 @@
class: "GraphGameTreeTest"
alg: "MinimaxAgent"
depth: "3"
diagram: """
/-----a------\
/ \
/ \
b1 b2
/ \ |
c1 c2 cx
/ \ / \ |
d1 d2 d3 d4 dx
-3 -9 10 6 -2.99
a - max
b - min
c - max
Note that the minimax value of b1 is -3.
"""
num_agents: "2"
start_state: "a"
win_states: "d1 d2 d3 d4 dx"
lose_states: ""
successors: """
a Left b1
a Right b2
b1 Left c1
b1 Right c2
b2 Down cx
c1 Left d1
c1 Right d2
c2 Left d3
c2 Right d4
cx Down dx
"""
evaluation: """
d1 -3.0
d2 -9.0
d3 10.0
d4 6.0
dx -2.99
"""
+3
View File
@@ -0,0 +1,3 @@
# This is the solution file for test_cases/q2/1-3-minmax.test.
action: "Left"
generated: "a b1 b2 c3 c4 cx d5 d6 d7 d8 dx"
+47
View File
@@ -0,0 +1,47 @@
class: "GraphGameTreeTest"
alg: "MinimaxAgent"
depth: "3"
diagram: """
/-----a------\
/ \
/ \
b1 b2
| / \
cx c3 c4
| / \ / \
dx d5 d6 d7 d8
4.01 4 -7 0 5
a - max
b - min
c - max
Note that the minimax value of b2 is 4.
"""
num_agents: "2"
start_state: "a"
win_states: "d1 d2 d3 d4 d5 d6 d7 d8 dx"
lose_states: ""
successors: """
a Left b1
a Right b2
b1 Down cx
b2 Left c3
b2 Right c4
c3 Left d5
c3 Right d6
c4 Left d7
c4 Right d8
cx Down dx
"""
evaluation: """
d5 4.0
d6 -7.0
d7 0.0
d8 5.0
dx 4.01
"""
+3
View File
@@ -0,0 +1,3 @@
# This is the solution file for test_cases/q2/1-4-minmax.test.
action: "Right"
generated: "a b1 b2 c3 c4 cx d5 d6 d7 d8 dx"
+47
View File
@@ -0,0 +1,47 @@
class: "GraphGameTreeTest"
alg: "MinimaxAgent"
depth: "3"
diagram: """
/-----a------\
/ \
/ \
b1 b2
| / \
cx c3 c4
| / \ / \
dx d5 d6 d7 d8
3.99 4 -7 0 5
a - max
b - min
c - max
Note that the minimax value of b2 is 4.
"""
num_agents: "2"
start_state: "a"
win_states: "d1 d2 d3 d4 d5 d6 d7 d8 dx"
lose_states: ""
successors: """
a Left b1
a Right b2
b1 Down cx
b2 Left c3
b2 Right c4
c3 Left d5
c3 Right d6
c4 Left d7
c4 Right d8
cx Down dx
"""
evaluation: """
d5 4.0
d6 -7.0
d7 0.0
d8 5.0
dx 3.99
"""
+3
View File
@@ -0,0 +1,3 @@
# This is the solution file for test_cases/q2/1-5-minmax.test.
action: "Right"
generated: "A B C D E F G H Z a b1 b2 c1 c2 cx d1 d2 d3 d4 dx"
+75
View File
@@ -0,0 +1,75 @@
class: "GraphGameTreeTest"
alg: "MinimaxAgent"
depth: "4"
diagram: """
/-----a------\
/ \
/ \
b1 b2
/ \ |
c1 c2 cx
/ \ / \ |
d1 d2 d3 d4 dx
/ \ / \ / \ / \ |
A B C D E F G H Z
-3 13 5 9 10 3 -6 8 3.01
a - max
b - min
c - max
d - min
Note the minimax value of b1 is 3.
"""
num_agents: "2"
start_state: "a"
win_states: "A B C D E F G H I J K L M N O P Z"
lose_states: ""
successors: """
a Left b1
a Right b2
b1 Left c1
b1 Right c2
b2 Down cx
c1 Left d1
c1 Right d2
c2 Left d3
c2 Right d4
c3 Left d5
c3 Right d6
c4 Left d7
c4 Right d8
cx Down dx
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
dx Down Z
"""
evaluation: """
A -3.0
B 13.0
C 5.0
D 9.0
E 10.0
F 3.0
G -6.0
H 8.0
Z 3.01
"""
+3
View File
@@ -0,0 +1,3 @@
# This is the solution file for test_cases/q2/1-6-minmax.test.
action: "Left"
generated: "A B C D E F G H Z a b1 b2 c1 c2 cx d1 d2 d3 d4 dx"
+75
View File
@@ -0,0 +1,75 @@
class: "GraphGameTreeTest"
alg: "MinimaxAgent"
depth: "4"
diagram: """
/-----a------\
/ \
/ \
b1 b2
/ \ |
c1 c2 cx
/ \ / \ |
d1 d2 d3 d4 dx
/ \ / \ / \ / \ |
A B C D E F G H Z
-3 13 5 9 10 3 -6 8 2.99
a - max
b - min
c - max
d - min
Note the minimax value of b1 is 3.
"""
num_agents: "2"
start_state: "a"
win_states: "A B C D E F G H I J K L M N O P Z"
lose_states: ""
successors: """
a Left b1
a Right b2
b1 Left c1
b1 Right c2
b2 Down cx
c1 Left d1
c1 Right d2
c2 Left d3
c2 Right d4
c3 Left d5
c3 Right d6
c4 Left d7
c4 Right d8
cx Down dx
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
dx Down Z
"""
evaluation: """
A -3.0
B 13.0
C 5.0
D 9.0
E 10.0
F 3.0
G -6.0
H 8.0
Z 2.99
"""
+3
View File
@@ -0,0 +1,3 @@
# This is the solution file for test_cases/q2/1-7-minmax.test.
action: "Left"
generated: "I J K L M N O P Z a b1 b2 c3 c4 cx d5 d6 d7 d8 dx"
+75
View File
@@ -0,0 +1,75 @@
class: "GraphGameTreeTest"
alg: "MinimaxAgent"
depth: "4"
diagram: """
/-----a------\
/ \
/ \
b1 b2
| / \
cx c3 c4
| / \ / \
dx d5 d6 d7 d8
| / \ / \ / \ / \
Z I J K L M N O P
-1.99 -1 -9 4 7 2 5 -3 -2
a - max
b - min
c - min
d - max
Note that the minimax value of b2 is -2
"""
num_agents: "3"
start_state: "a"
win_states: "A B C D E F G H I J K L M N O P Z"
lose_states: ""
successors: """
a Left b1
a Right b2
b1 Down cx
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
cx Down dx
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
dx Down Z
"""
evaluation: """
I -1.0
J -9.0
K 4.0
L 7.0
M 2.0
N 5.0
O -3.0
P -2.0
Z -1.99
"""
+3
View File
@@ -0,0 +1,3 @@
# This is the solution file for test_cases/q2/1-8-minmax.test.
action: "Right"
generated: "I J K L M N O P Z a b1 b2 c3 c4 cx d5 d6 d7 d8 dx"
+75
View File
@@ -0,0 +1,75 @@
class: "GraphGameTreeTest"
alg: "MinimaxAgent"
depth: "4"
diagram: """
/-----a------\
/ \
/ \
b1 b2
| / \
cx c3 c4
| / \ / \
dx d5 d6 d7 d8
| / \ / \ / \ / \
Z I J K L M N O P
-2.01 -1 -9 4 7 2 5 -3 -2
a - max
b - min
c - min
d - max
Note that the minimax value of b2 is -2.01
"""
num_agents: "3"
start_state: "a"
win_states: "A B C D E F G H I J K L M N O P Z"
lose_states: ""
successors: """
a Left b1
a Right b2
b1 Down cx
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
cx Down dx
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
dx Down Z
"""
evaluation: """
I -1.0
J -9.0
K 4.0
L 7.0
M 2.0
N 5.0
O -3.0
P -2.0
Z -2.01
"""
+3
View File
@@ -0,0 +1,3 @@
# This is the solution file for test_cases/q2/2-1a-vary-depth.test.
action: "Left"
generated: "a b1 b2 c1 c2 cx"
+52
View File
@@ -0,0 +1,52 @@
class: "GraphGameTreeTest"
alg: "MinimaxAgent"
depth: "1"
diagram: """
/-----a------\
/ \
/ \
b1 b2
/ \ |
-4 c1 c2 9 cx -4.01
/ \ / \ |
d1 d2 d3 d4 dx
-3 -9 10 6 -4.01
a - max
b - min
c - max
Note that the minimax value of b1 is -3, but the depth=1 limited value is -4.
The values next to c1, c2, and cx are the values of the evaluation function, not
necessarily the correct minimax backup.
"""
num_agents: "2"
start_state: "a"
win_states: "d1 d2 d3 d4 dx"
lose_states: ""
successors: """
a Left b1
a Right b2
b1 Left c1
b1 Right c2
b2 Down cx
c1 Left d1
c1 Right d2
c2 Left d3
c2 Right d4
cx Down dx
"""
evaluation: """
c1 -4.0
c2 9.0
cx -4.01
d1 -3.0
d2 -9.0
d3 10.0
d4 6.0
dx -4.01
"""
+3
View File
@@ -0,0 +1,3 @@
# This is the solution file for test_cases/q2/2-1b-vary-depth.test.
action: "Left"
generated: "a b1 b2 c1 c2 cx d1 d2 d3 d4 dx"
+52
View File
@@ -0,0 +1,52 @@
class: "GraphGameTreeTest"
alg: "MinimaxAgent"
depth: "2"
diagram: """
/-----a------\
/ \
/ \
b1 b2
/ \ |
-4 c1 c2 9 cx -4.01
/ \ / \ |
d1 d2 d3 d4 dx
-3 -9 10 6 -4.01
a - max
b - min
c - max
Note that the minimax value of b1 is -3, but the depth=1 limited value is -4.
The values next to c1, c2, and cx are the values of the evaluation function, not
necessarily the correct minimax backup.
"""
num_agents: "2"
start_state: "a"
win_states: "d1 d2 d3 d4 dx"
lose_states: ""
successors: """
a Left b1
a Right b2
b1 Left c1
b1 Right c2
b2 Down cx
c1 Left d1
c1 Right d2
c2 Left d3
c2 Right d4
cx Down dx
"""
evaluation: """
c1 -4.0
c2 9.0
cx -4.01
d1 -3.0
d2 -9.0
d3 10.0
d4 6.0
dx -4.01
"""
+3
View File
@@ -0,0 +1,3 @@
# This is the solution file for test_cases/q2/2-2a-vary-depth.test.
action: "Right"
generated: "a b1 b2 c1 c2 cx"
+52
View File
@@ -0,0 +1,52 @@
class: "GraphGameTreeTest"
alg: "MinimaxAgent"
depth: "1"
diagram: """
/-----a------\
/ \
/ \
b1 b2
/ \ |
-4 c1 c2 9 cx -3.99
/ \ / \ |
d1 d2 d3 d4 dx
-3 -9 10 6 -3.99
a - max
b - min
c - max
Note that the minimax value of b1 is -3, but the depth=1 limited value is -4.
The values next to c1, c2, and cx are the values of the evaluation function, not
necessarily the correct minimax backup.
"""
num_agents: "2"
start_state: "a"
win_states: "d1 d2 d3 d4 dx"
lose_states: ""
successors: """
a Left b1
a Right b2
b1 Left c1
b1 Right c2
b2 Down cx
c1 Left d1
c1 Right d2
c2 Left d3
c2 Right d4
cx Down dx
"""
evaluation: """
c1 -4.0
c2 9.0
cx -3.99
d1 -3.0
d2 -9.0
d3 10.0
d4 6.0
dx -3.99
"""
+3
View File
@@ -0,0 +1,3 @@
# This is the solution file for test_cases/q2/2-2b-vary-depth.test.
action: "Left"
generated: "a b1 b2 c1 c2 cx d1 d2 d3 d4 dx"
+52
View File
@@ -0,0 +1,52 @@
class: "GraphGameTreeTest"
alg: "MinimaxAgent"
depth: "2"
diagram: """
/-----a------\
/ \
/ \
b1 b2
/ \ |
-4 c1 c2 9 cx -3.99
/ \ / \ |
d1 d2 d3 d4 dx
-3 -9 10 6 -3.99
a - max
b - min
c - max
Note that the minimax value of b1 is -3, but the depth=1 limited value is -4.
The values next to c1, c2, and cx are the values of the evaluation function, not
necessarily the correct minimax backup.
"""
num_agents: "2"
start_state: "a"
win_states: "d1 d2 d3 d4 dx"
lose_states: ""
successors: """
a Left b1
a Right b2
b1 Left c1
b1 Right c2
b2 Down cx
c1 Left d1
c1 Right d2
c2 Left d3
c2 Right d4
cx Down dx
"""
evaluation: """
c1 -4.0
c2 9.0
cx -3.99
d1 -3.0
d2 -9.0
d3 10.0
d4 6.0
dx -3.99
"""
+3
View File
@@ -0,0 +1,3 @@
# This is the solution file for test_cases/q2/2-3a-vary-depth.test.
action: "Left"
generated: "a b1 b2 c3 c4 cx"
+52
View File
@@ -0,0 +1,52 @@
class: "GraphGameTreeTest"
alg: "MinimaxAgent"
depth: "1"
diagram: """
/-----a------\
/ \
/ \
b1 b2
| / \
5.01 cx 8 c3 c4 5
| / \ / \
dx d5 d6 d7 d8
5.01 4 -7 0 5
a - max
b - min
c - max
Note that the minimax value of b1 is 4, but the depth=1 limited value is 5.
The values next to c3, c4, and cx are the values of the evaluation function, not
necessarily the correct minimax backup.
"""
num_agents: "2"
start_state: "a"
win_states: "d1 d2 d3 d4 d5 d6 d7 d8 dx"
lose_states: ""
successors: """
a Left b1
a Right b2
b1 Down cx
b2 Left c3
b2 Right c4
c3 Left d5
c3 Right d6
c4 Left d7
c4 Right d8
cx Down dx
"""
evaluation: """
c3 8.0
c4 5.0
cx 5.01
d5 4.0
d6 -7.0
d7 0.0
d8 5.0
dx 5.01
"""
+3
View File
@@ -0,0 +1,3 @@
# This is the solution file for test_cases/q2/2-3b-vary-depth.test.
action: "Left"
generated: "a b1 b2 c3 c4 cx d5 d6 d7 d8 dx"
+52
View File
@@ -0,0 +1,52 @@
class: "GraphGameTreeTest"
alg: "MinimaxAgent"
depth: "2"
diagram: """
/-----a------\
/ \
/ \
b1 b2
| / \
5.01 cx 8 c3 c4 5
| / \ / \
dx d5 d6 d7 d8
5.01 4 -7 0 5
a - max
b - min
c - max
Note that the minimax value of b1 is 4, but the depth=1 limited value is 5.
The values next to c3, c4, and cx are the values of the evaluation function, not
necessarily the correct minimax backup.
"""
num_agents: "2"
start_state: "a"
win_states: "d1 d2 d3 d4 d5 d6 d7 d8 dx"
lose_states: ""
successors: """
a Left b1
a Right b2
b1 Down cx
b2 Left c3
b2 Right c4
c3 Left d5
c3 Right d6
c4 Left d7
c4 Right d8
cx Down dx
"""
evaluation: """
c3 8.0
c4 5.0
cx 5.01
d5 4.0
d6 -7.0
d7 0.0
d8 5.0
dx 5.01
"""
+3
View File
@@ -0,0 +1,3 @@
# This is the solution file for test_cases/q2/2-4a-vary-depth.test.
action: "Right"
generated: "a b1 b2 c3 c4 cx"
+52
View File
@@ -0,0 +1,52 @@
class: "GraphGameTreeTest"
alg: "MinimaxAgent"
depth: "1"
diagram: """
/-----a------\
/ \
/ \
b1 b2
| / \
4.99 cx 8 c3 c4 5
| / \ / \
dx d5 d6 d7 d8
4.99 4 -7 0 5
a - max
b - min
c - max
Note that the minimax value of b1 is 4, but the depth=1 limited value is 5.
The values next to c3, c4, and cx are the values of the evaluation function, not
necessarily the correct minimax backup.
"""
num_agents: "2"
start_state: "a"
win_states: "d1 d2 d3 d4 d5 d6 d7 d8 dx"
lose_states: ""
successors: """
a Left b1
a Right b2
b1 Down cx
b2 Left c3
b2 Right c4
c3 Left d5
c3 Right d6
c4 Left d7
c4 Right d8
cx Down dx
"""
evaluation: """
c3 8.0
c4 5.0
cx 4.99
d5 4.0
d6 -7.0
d7 0.0
d8 5.0
dx 4.99
"""
+3
View File
@@ -0,0 +1,3 @@
# This is the solution file for test_cases/q2/2-4b-vary-depth.test.
action: "Left"
generated: "a b1 b2 c3 c4 cx d5 d6 d7 d8 dx"
+52
View File
@@ -0,0 +1,52 @@
class: "GraphGameTreeTest"
alg: "MinimaxAgent"
depth: "2"
diagram: """
/-----a------\
/ \
/ \
b1 b2
| / \
4.99 cx 8 c3 c4 5
| / \ / \
dx d5 d6 d7 d8
4.99 4 -7 0 5
a - max
b - min
c - max
Note that the minimax value of b1 is 4, but the depth=1 limited value is 5.
The values next to c3, c4, and cx are the values of the evaluation function, not
necessarily the correct minimax backup.
"""
num_agents: "2"
start_state: "a"
win_states: "d1 d2 d3 d4 d5 d6 d7 d8 dx"
lose_states: ""
successors: """
a Left b1
a Right b2
b1 Down cx
b2 Left c3
b2 Right c4
c3 Left d5
c3 Right d6
c4 Left d7
c4 Right d8
cx Down dx
"""
evaluation: """
c3 8.0
c4 5.0
cx 4.99
d5 4.0
d6 -7.0
d7 0.0
d8 5.0
dx 4.99
"""
@@ -0,0 +1,3 @@
# This is the solution file for test_cases/q2/2-one-ghost-3level.test.
action: "Left"
generated: "a b1 b2 c1 c2 c3 c4 d1 d2 d3 d4 d5 d6 d7 d8"
+52
View File
@@ -0,0 +1,52 @@
class: "GraphGameTreeTest"
alg: "MinimaxAgent"
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 - min
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
"""
@@ -0,0 +1,3 @@
# This is the solution file for test_cases/q2/3-one-ghost-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"
+79
View File
@@ -0,0 +1,79 @@
class: "GraphGameTreeTest"
alg: "MinimaxAgent"
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 - min
c - max
d - min
"""
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
"""
@@ -0,0 +1,3 @@
# This is the solution file for test_cases/q2/4-two-ghosts-3level.test.
action: "Left"
generated: "a b1 b2 c1 c2 c3 c4 d1 d2 d3 d4 d5 d6 d7 d8"
+52
View File
@@ -0,0 +1,52 @@
class: "GraphGameTreeTest"
alg: "MinimaxAgent"
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 - min
c - min
"""
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
"""
@@ -0,0 +1,3 @@
# This is the solution file for test_cases/q2/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"
+79
View File
@@ -0,0 +1,79 @@
class: "GraphGameTreeTest"
alg: "MinimaxAgent"
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 - min
c - min
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
"""
+3
View File
@@ -0,0 +1,3 @@
# This is the solution file for test_cases/q2/6-tied-root.test.
action: "Left"
generated: "A B C max min1 min2"
+31
View File
@@ -0,0 +1,31 @@
class: "GraphGameTreeTest"
alg: "MinimaxAgent"
depth: "3"
diagram: """
max
/ \
min1 min2
| / \
A B C
10 10 0
"""
num_agents: "2"
start_state: "max"
win_states: "A B"
lose_states: "C"
successors: """
max Left min1
max Right min2
min1 Down A
min2 Left B
min2 Right C
"""
evaluation: """
A 10.0
B 10.0
C 0.0
"""
@@ -0,0 +1,3 @@
# This is the solution file for test_cases/q2/7-1a-check-depth-one-ghost.test.
action: "Left"
generated: "a b1 b2 b3 c1 c2 c3"
@@ -0,0 +1,83 @@
class: "GraphGameTreeTest"
alg: "MinimaxAgent"
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
"""
@@ -0,0 +1,3 @@
# This is the solution file for test_cases/q2/7-1b-check-depth-one-ghost.test.
action: "Center"
generated: "a b1 b2 b3 c1 c2 c3 d1 d2 d3 e1 e2 e3"
@@ -0,0 +1,83 @@
class: "GraphGameTreeTest"
alg: "MinimaxAgent"
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
"""
@@ -0,0 +1,3 @@
# This is the solution file for test_cases/q2/7-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"
@@ -0,0 +1,83 @@
class: "GraphGameTreeTest"
alg: "MinimaxAgent"
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
"""
@@ -0,0 +1,3 @@
# This is the solution file for test_cases/q2/7-2a-check-depth-two-ghosts.test.
action: "Left"
generated: "a b1 b2 b3 c1 c2 c3 d1 d2 d3"
@@ -0,0 +1,110 @@
class: "GraphGameTreeTest"
alg: "MinimaxAgent"
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
"""
@@ -0,0 +1,3 @@
# This is the solution file for test_cases/q2/7-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"
@@ -0,0 +1,110 @@
class: "GraphGameTreeTest"
alg: "MinimaxAgent"
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
"""
@@ -0,0 +1,3 @@
# This is the solution file for test_cases/q2/7-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"
@@ -0,0 +1,110 @@
class: "GraphGameTreeTest"
alg: "MinimaxAgent"
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
"""
+444
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]]
[[["Stop", "East"], 154], [["East"], 103]]
[[["East"], 156], [["East"], 101]]
[[["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], [["South"], 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"], ["Stop", "North"], ["North"]]
[["East"], ["East"], ["Stop", "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"]]
[["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", "North"], ["East", "North"]]
[["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"], ["Stop", "East"], ["South"]]
[["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", "East"], ["East"]]
[["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"]]
"""
+19
View File
@@ -0,0 +1,19 @@
class: "PacmanGameTreeTest"
alg: "MinimaxAgent"
seed: "0"
depth: "2"
max_points: "4"
# The following specifies the layout to be used
layoutName: "smallClassic"
layout: """
%%%%%%%%%%%%%%%%%%%%
%......%G G%......%
%.%%...%% %%...%%.%
%.%o.%........%.o%.%
%.%%.%.%%%%%%.%.%%.%
%........P.........%
%%%%%%%%%%%%%%%%%%%%
"""
+1 -1
View File
@@ -1,2 +1,2 @@
max_points: "3"
max_points: "5"
class: "PassAllTestsQuestion"
-7
View File
@@ -1,7 +0,0 @@
# This is the solution file for test_cases/q2/graph_backtrack.test.
# This solution is designed to support both right-to-left
# and left-to-right implementations.
solution: "1:A->C 0:C->G"
expanded_states: "A B C D"
rev_solution: "1:A->C 0:C->G"
rev_expanded_states: "A D C B"
-32
View File
@@ -1,32 +0,0 @@
class: "GraphSearchTest"
algorithm: "breadthFirstSearch"
diagram: """
B
^
|
*A --> C --> G
|
V
D
A is the start state, G is the goal. Arrows mark
possible state transitions. This tests whether
you extract the sequence of actions correctly even
if your search backtracks. If you fail this, your
nodes are not correctly tracking the sequences of
actions required to reach them.
"""
# The following section specifies the search problem and the solution.
# The graph is specified by first the set of start states, followed by
# the set of goal states, and lastly by the state transitions which are
# of the form:
# <start state> <actions> <end state> <cost>
graph: """
start_state: A
goal_states: G
A 0:A->B B 1.0
A 1:A->C C 2.0
A 2:A->D D 4.0
C 0:C->G G 8.0
"""
-7
View File
@@ -1,7 +0,0 @@
# This is the solution file for test_cases/q2/graph_bfs_vs_dfs.test.
# This solution is designed to support both right-to-left
# and left-to-right implementations.
solution: "1:A->G"
expanded_states: "A B"
rev_solution: "1:A->G"
rev_expanded_states: "A D"
-30
View File
@@ -1,30 +0,0 @@
# Graph where BFS finds the optimal solution but DFS does not
class: "GraphSearchTest"
algorithm: "breadthFirstSearch"
diagram: """
/-- B
| ^
| |
| *A -->[G]
| | ^
| V |
\-->D ----/
A is the start state, G is the goal. Arrows
mark possible transitions
"""
# The following section specifies the search problem and the solution.
# The graph is specified by first the set of start states, followed by
# the set of goal states, and lastly by the state transitions which are
# of the form:
# <start state> <actions> <end state> <cost>
graph: """
start_state: A
goal_states: G
A 0:A->B B 1.0
A 1:A->G G 2.0
A 2:A->D D 4.0
B 0:B->D D 8.0
D 0:D->G G 16.0
"""
-7
View File
@@ -1,7 +0,0 @@
# This is the solution file for test_cases/q2/graph_infinite.test.
# This solution is designed to support both right-to-left
# and left-to-right implementations.
solution: "0:A->B 1:B->C 1:C->G"
expanded_states: "A B C"
rev_solution: "0:A->B 1:B->C 1:C->G"
rev_expanded_states: "A B C"
-30
View File
@@ -1,30 +0,0 @@
# Graph where natural action choice leads to an infinite loop
class: "GraphSearchTest"
algorithm: "breadthFirstSearch"
diagram: """
B <--> C
^ /|
| / |
V / V
*A<-/ [G]
A is the start state, G is the goal. Arrows mark
possible state transitions.
"""
# The following section specifies the search problem and the solution.
# The graph is specified by first the set of start states, followed by
# the set of goal states, and lastly by the state transitions which are
# of the form:
# <start state> <actions> <end state> <cost>
graph: """
start_state: A
goal_states: G
A 0:A->B B 1.0
B 0:B->A A 2.0
B 1:B->C C 4.0
C 0:C->A A 8.0
C 1:C->G G 16.0
C 2:C->B B 32.0
"""
-7
View File
@@ -1,7 +0,0 @@
# This is the solution file for test_cases/q2/graph_manypaths.test.
# This solution is designed to support both right-to-left
# and left-to-right implementations.
solution: "1:A->C 0:C->D 1:D->F 0:F->G"
expanded_states: "A B1 C B2 D E1 F E2"
rev_solution: "1:A->C 0:C->D 1:D->F 0:F->G"
rev_expanded_states: "A B2 C B1 D E2 F E1"
-39
View File
@@ -1,39 +0,0 @@
class: "GraphSearchTest"
algorithm: "breadthFirstSearch"
diagram: """
B1 E1
^ \ ^ \
/ V / V
*A --> C --> D --> F --> [G]
\ ^ \ ^
V / V /
B2 E2
A is the start state, G is the goal. Arrows mark
possible state transitions. This graph has multiple
paths to the goal, where nodes with the same state
are added to the fringe multiple times before they
are expanded.
"""
# The following section specifies the search problem and the solution.
# The graph is specified by first the set of start states, followed by
# the set of goal states, and lastly by the state transitions which are
# of the form:
# <start state> <actions> <end state> <cost>
graph: """
start_state: A
goal_states: G
A 0:A->B1 B1 1.0
A 1:A->C C 2.0
A 2:A->B2 B2 4.0
B1 0:B1->C C 8.0
B2 0:B2->C C 16.0
C 0:C->D D 32.0
D 0:D->E1 E1 64.0
D 1:D->F F 128.0
D 2:D->E2 E2 256.0
E1 0:E1->F F 512.0
E2 0:E2->F F 1024.0
F 0:F->G G 2048.0
"""
-22
View File
@@ -1,22 +0,0 @@
# This is the solution file for test_cases/q2/pacman_1.test.
# This solution is designed to support both right-to-left
# and left-to-right implementations.
# Number of nodes expanded must be with a factor of 1.0 of the numbers below.
solution: """
West West West West West West West West West South South East East
South South South West West West North West West West West South South
South East East East East East East East South South South South South
South South West West West West West West West West West West West
West West West West West West South West West West West West West West
West West
"""
expanded_nodes: "269"
rev_solution: """
West West West West West West West West West South South East East
South South South West West West North West West West West South South
South East East East East East East East South South South South South
South South West West West West West West West West West West West
West West West West West West South West West West West West West West
West West
"""
rev_expanded_nodes: "269"
-27
View File
@@ -1,27 +0,0 @@
# This is a basic breadth first search test
class: "PacmanSearchTest"
algorithm: "breadthFirstSearch"
# The following specifies the layout to be used
layoutName: "mediumMaze"
layout: """
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% P%
% %%%%%%%%%%%%%%%%%%%%%%% %%%%%%%% %
% %% % % %%%%%%% %% %
% %% % % % % %%%% %%%%%%%%% %% %%%%%
% %% % % % % %% %% %
% %% % % % % % %%%% %%% %%%%%% %
% % % % % % %% %%%%%%%% %
% %% % % %%%%%%%% %% %% %%%%%
% %% % %% %%%%%%%%% %% %
% %%%%%% %%%%%%% %% %%%%%% %
%%%%%% % %%%% %% % %
% %%%%%% %%%%% % %% %% %%%%%
% %%%%%% % %%%%% %% %
% %%%%%% %%%%%%%%%%% %% %% %
%%%%%%%%%% %%%%%% %
%. %%%%%%%%%%%%%%%% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
"""
@@ -0,0 +1,3 @@
# This is the solution file for test_cases/q3/0-eval-function-lose-states-1.test.
action: "Left"
generated: "lose1 lose2 root"
@@ -0,0 +1,30 @@
class: "GraphGameTreeTest"
alg: "AlphaBetaAgent"
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
"""
@@ -0,0 +1,3 @@
# This is the solution file for test_cases/q3/0-eval-function-lose-states-2.test.
action: "Right"
generated: "lose1 lose2 root"
@@ -0,0 +1,30 @@
class: "GraphGameTreeTest"
alg: "AlphaBetaAgent"
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
"""
@@ -0,0 +1,3 @@
# This is the solution file for test_cases/q3/0-eval-function-win-states-1.test.
action: "Left"
generated: "root win1 win2"

Some files were not shown because too many files have changed in this diff Show More