Skip to content

Commit 6f4c69b

Browse files
Add DFS
1 parent 268b6b0 commit 6f4c69b

File tree

5 files changed

+43
-3
lines changed

5 files changed

+43
-3
lines changed

2022/FA22/intro-ai-series/workshop-1-ai-search-algorithms/0

Whitespace-only changes.

2022/FA22/intro-ai-series/workshop-1-ai-search-algorithms/src/search.py

Lines changed: 43 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,53 @@ def __init__(self, environment):
1111
def dfs(self):
1212
print("Algo: Depth-First Search")
1313
# TODO: Implement DFS
14+
MAPS = {"4x4":["SGFF", "FHFH", "FFFH", "HFFF"],
15+
"8x8":["SFFFFFFF", "FFFFFFFF", "FFGHFFFF", "FFFFFHFF",
16+
"FFFHFFFF", "FHHFFFHF", "FHFFHFHF", "FFFHFFFF"]}
17+
MAP = "8x8" # can be 8x8 or 4x4
18+
19+
ACTIONS = {0: "LEFT", 1: "DOWN", 2: "RIGHT", 3: "UP"}
20+
RENDER_MODE="rgb_array_list"
21+
env = gym.make("FrozenLake-v1", desc=MAPS[MAP], render_mode=RENDER_MODE, is_slippery=False)
22+
env.action_space.seed(42)
23+
observation, info = env.reset(seed=42)
24+
stack = [[]]
25+
while len(stack) > 0 :
26+
acs = stack.pop(0)
27+
for i in range(4):
28+
rew = -1
29+
done = False
30+
obs, info = env.reset(seed=42)
31+
for a in acs:
32+
obs,rew, terminated, truncated, _ = env.step(a)
33+
if terminated or truncated:
34+
done=True
35+
break
36+
if rew > 0.0:
37+
print('Found path by taking following actions: ', acs)
38+
save_video(
39+
env.render(),
40+
"videos/dfs",
41+
fps=env.metadata["render_fps"],
42+
#step_starting_index=step_starting_index,
43+
#episode_index=episode_index,
44+
name_prefix=MAP
45+
)
46+
env.close()
47+
return acs
48+
if done:
49+
break
50+
stack.append(acs +[i] )
51+
env.close()
52+
print("No sol found")
53+
return None
1454

1555

1656
def bfs(self):
1757
print("Algo: Breadth-First Search")
1858
# TODO: Implement BFS
1959
MAPS = {"4x4":["SGFF", "FHFH", "FFFH", "HFFF"],
20-
"8x8":["SFGFFFFF", "FFFFFFFF", "FFFHFFFF", "FFFFFHFF",
60+
"8x8":["SFFFFFFF", "FFFGFFFF", "FFFHFFFF", "FFFFFHFF",
2161
"FFFHFFFF", "FHHFFFHF", "FHFFHFHF", "FFFHFFFF"]}
2262
MAP = "8x8" # can be 8x8 or 4x4
2363

@@ -42,7 +82,7 @@ def bfs(self):
4282
print('Found path by taking following actions: ', acs)
4383
save_video(
4484
env.render(),
45-
"videos",
85+
"videos/bfs",
4686
fps=env.metadata["render_fps"],
4787
#step_starting_index=step_starting_index,
4888
#episode_index=episode_index,
@@ -65,4 +105,4 @@ def ucs(self):
65105

66106
def a_star(self):
67107
print("Algo: A* Search")
68-
# TODO: Implement A*
108+
# TODO: Implement A*
Binary file not shown.
Binary file not shown.
Binary file not shown.

0 commit comments

Comments
 (0)