Exemplo n.º 1
0
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
Exemplo n.º 2
0
 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)