42 lines
1.4 KiB
Python
42 lines
1.4 KiB
Python
import sys
|
|
import os
|
|
|
|
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
|
|
|
from builders.text_file_maze_builder import TextFileMazeBuilder
|
|
from strategies.bfs_strategy import BFSStrategy
|
|
from strategies.dfs_strategy import DFSStrategy
|
|
from strategies.astar_strategy import AStarStrategy
|
|
from solver.maze_solver import MazeSolver
|
|
|
|
PROJECT_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
|
MAZES_DIR = os.path.join(PROJECT_ROOT, "mazes")
|
|
|
|
mazes = ["small.txt", "medium.txt", "large.txt", "no_exit.txt", "empty.txt"]
|
|
strategies = [BFSStrategy(), DFSStrategy(), AStarStrategy()]
|
|
results = []
|
|
builder = TextFileMazeBuilder()
|
|
|
|
for maze_file in mazes:
|
|
try:
|
|
maze_path = os.path.join(MAZES_DIR, maze_file)
|
|
maze = builder.build_from_file(maze_path)
|
|
|
|
for strategy in strategies:
|
|
solver = MazeSolver(maze, strategy)
|
|
stats = solver.solve(maze_file)
|
|
results.append(stats)
|
|
except ValueError as e:
|
|
print(f"Error with {maze_file}: {e}")
|
|
except FileNotFoundError as e:
|
|
print(f"File not found: {e}")
|
|
|
|
os.makedirs(os.path.join(PROJECT_ROOT, "experiments"), exist_ok=True)
|
|
|
|
results_path = os.path.join(PROJECT_ROOT, "experiments", "results.csv")
|
|
with open(results_path, "w") as file:
|
|
file.write("maze,strategy,time_ms,visited_cells,path_length\n")
|
|
for stat in results:
|
|
file.write(stat.to_csv_row())
|
|
|
|
print(f"Saved {len(results)} results to {results_path}") |