2026-rff_mp/shekurovaa/2/docs/data/experiments.py

30 lines
1.1 KiB
Python
Raw Normal View History

2026-05-20 17:55:28 +00:00
import csv
from statistics import mean
def run_experiments(maze_files, strategies, runs=5, out_csv="output/results.csv"):
rows = []
for maze_name, maze in maze_files.items():
for strat_name, strat_cls in strategies.items():
times = []
visiteds = []
lengths = []
for _ in range(runs):
solver = maze["solver_factory"](strat_cls())
stats = solver.solve()
times.append(stats.timeMs)
visiteds.append(stats.visitedCells)
lengths.append(stats.pathLength)
rows.append({
"maze": maze_name,
"strategy": strat_name,
"time_ms": round(mean(times), 3),
"visited_cells": round(mean(visiteds), 1),
"path_length": round(mean(lengths), 1)
})
with open(out_csv, "w", newline="", encoding="utf-8") as f:
writer = csv.DictWriter(f, fieldnames=["maze", "strategy", "time_ms", "visited_cells", "path_length"])
writer.writeheader()
writer.writerows(rows)
return rows