monte-carlo-sim / mcp_server /visualize_metrics.py
surfiniaburger's picture
Setup Monte Carlo MCP Server with Git LFS
215dd01
import matplotlib.pyplot as plt
import numpy as np
import sys
import os
# Add current directory to path so we can import main
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
import main
def visualize_simulation_results():
print("Initializing simulation...")
if not main.initialize_simulation():
print("Failed to initialize simulation. Cannot visualize.")
return
mc_sim = main.mc_simulation
strategies = {
"1-stop": [28],
"2-stop": [20, 40],
"3-stop": [15, 30, 45]
}
strategy_names = []
avg_times = []
print("Running simulations...")
for name, pit_stops in strategies.items():
print(f"Simulating {name} strategy...")
simulation_times = []
# Run fewer simulations for visualization speed
for _ in range(100):
total_time = mc_sim.run_strategy_simulation(pit_stops)
simulation_times.append(total_time)
avg_time = np.mean(simulation_times)
strategy_names.append(name)
avg_times.append(avg_time)
print(f"{name}: {avg_time:.2f}s")
# Plotting
print("Generating plot...")
plt.figure(figsize=(10, 6))
bars = plt.bar(strategy_names, avg_times, color=['skyblue', 'salmon', 'lightgreen'])
# Add labels
plt.ylabel('Average Race Time (seconds)')
plt.title('Pit Stop Strategy Comparison (Monte Carlo Simulation)')
plt.ylim(min(avg_times) * 0.99, max(avg_times) * 1.01) # Zoom in on the differences
# Add values on top of bars
for bar in bars:
yval = bar.get_height()
plt.text(bar.get_x() + bar.get_width()/2.0, yval, f'{yval:.1f}s', va='bottom', ha='center')
output_file = "simulation_results.png"
plt.savefig(output_file)
print(f"Visualization saved to {output_file}")
if __name__ == "__main__":
visualize_simulation_results()