forked from UNN/2026-rff_mp
53 lines
1.8 KiB
Python
53 lines
1.8 KiB
Python
|
|
import pandas as pd
|
||
|
|
import matplotlib.pyplot as plt
|
||
|
|
import os
|
||
|
|
|
||
|
|
def main():
|
||
|
|
csv_file = 'experiment_results_2-nd-exercise.csv'
|
||
|
|
if not os.path.exists(csv_file):
|
||
|
|
print(f"File {csv_file} not found. Run experiments first.")
|
||
|
|
return
|
||
|
|
|
||
|
|
df = pd.read_csv(csv_file)
|
||
|
|
df_success = df[df['path_found'] == True]
|
||
|
|
|
||
|
|
mazes = df_success['maze'].unique()
|
||
|
|
strategies = df_success['strategy'].unique()
|
||
|
|
|
||
|
|
fig, axes = plt.subplots(1, 3, figsize=(18, 6))
|
||
|
|
fig.suptitle('Сравнение алгоритмов поиска в лабиринтах', fontsize=16)
|
||
|
|
|
||
|
|
for strat in strategies:
|
||
|
|
data = df_success[df_success['strategy'] == strat]
|
||
|
|
axes[0].plot(data['maze'], data['avg_time_ms'], marker='o', label=strat)
|
||
|
|
axes[0].set_title('Среднее время (мс)')
|
||
|
|
axes[0].set_xlabel('Лабиринт')
|
||
|
|
axes[0].set_ylabel('Время, мс')
|
||
|
|
axes[0].legend()
|
||
|
|
axes[0].grid(True)
|
||
|
|
|
||
|
|
for strat in strategies:
|
||
|
|
data = df_success[df_success['strategy'] == strat]
|
||
|
|
axes[1].plot(data['maze'], data['avg_visited'], marker='s', label=strat)
|
||
|
|
axes[1].set_title('Посещённые клетки')
|
||
|
|
axes[1].set_xlabel('Лабиринт')
|
||
|
|
axes[1].set_ylabel('Количество')
|
||
|
|
axes[1].legend()
|
||
|
|
axes[1].grid(True)
|
||
|
|
|
||
|
|
for strat in strategies:
|
||
|
|
data = df_success[df_success['strategy'] == strat]
|
||
|
|
axes[2].plot(data['maze'], data['avg_path_length'], marker='^', label=strat)
|
||
|
|
axes[2].set_title('Длина пути')
|
||
|
|
axes[2].set_xlabel('Лабиринт')
|
||
|
|
axes[2].set_ylabel('Шагов')
|
||
|
|
axes[2].legend()
|
||
|
|
axes[2].grid(True)
|
||
|
|
|
||
|
|
plt.tight_layout()
|
||
|
|
plt.savefig('plots_2-nd-exercise.png', dpi=150)
|
||
|
|
print("Графики сохранены в plots_2-nd-exercise.png")
|
||
|
|
#plt.show()
|
||
|
|
|
||
|
|
if __name__ == '__main__':
|
||
|
|
main()
|