import csv from solver.maze_solver import MazeSolver class BenchmarkRunner: def __init__( self, maze, strategies, cycles=5 ): self.maze = maze self.strategies = strategies self.cycles = cycles def launch(self): report = [] for strategy in self.strategies: solver = MazeSolver( self.maze, strategy ) total_time = 0 total_visited = 0 total_path = 0 for _ in range(self.cycles): _, stats = solver.solve() total_time += stats.time_ms total_visited += stats.visited_cells total_path += stats.path_length report.append( { "maze": "", "strategy": strategy.__class__.__name__, "time_ms": round( total_time / self.cycles, 4 ), "visited_cells": round( total_visited / self.cycles, 2 ), "path_length": round( total_path / self.cycles, 2 ) } ) return report def exportCSV( self, filename, results ): with open( filename, "w", newline="", encoding="utf-8" ) as file: writer = csv.DictWriter( file, fieldnames=[ "maze", "strategy", "time_ms", "visited_cells", "path_length" ] ) writer.writeheader() for row in results: writer.writerow(row)