@@ -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*
0 commit comments