def run_dfs(p): results = init_results() i = 0 progress = len(p) * 8 for puzzle in p: # for puzzle in ["4x4_01_00001.txt", "4x4_02_00001.txt", "4x4_03_00001.txt", "4x4_04_00001.txt", "4x4_05_00001.txt", "4x4_06_00001.txt", "4x4_07_00001.txt"]: for order in orders: dfs = DFS(search_order=order) dim, lay = load_config(os.path.join("puzzles", puzzle)) dfs.model.load_layout(dim, lay) t = time() path = dfs.run() t = round((time() - t) * 1000, 3) depth = int(puzzle.split('_')[1]) # print(r, puzzle, order) if path == -1: continue result = { "path_length": len(path), "frontier": len(dfs.frontier) + len(dfs.explored), "explored": len(dfs.explored), "depth": dfs.deepest, "time": t } results["DFS"][order][depth].append(result) print("DFS progress: {}%".format(round((i / progress) * 100, 2)), end='\r', flush=True) i += 1 return results
def run(self): if self.algorithm == "DFS": self.solution = DFS.run(self.source, self.destinations) if self.solution is not None: self.end_time = self.start_time + len(self.solution) - 1 self.end_time = self.end_time % 24 elif self.algorithm == "BFS": self.solution = BFS.run(self.source, self.destinations) if self.solution is not None: self.end_time = self.start_time + len(self.solution) - 1 self.end_time = self.end_time % 24 elif self.algorithm == "UCS": self.solution = UCS.run(self.start_time, self.source, self.destinations) if self.solution is not None: self.end_time = self.solution.pop(0) else: raise Exception("Unexpected Algorithm = " + self.algorithm)