Spaces:
Build error
Build error
| import numpy as np | |
| from agent import RFTAgent | |
| import visualization # Added import for visualization | |
| class RFTSimulation: | |
| def __init__(self, num_agents, steps, mutation_rate, drift_rate, save_plots=False): # Added save_plots | |
| self.agents = [] | |
| self.steps = steps | |
| self.mutation_rate = mutation_rate | |
| self.drift_rate = drift_rate | |
| self.save_plots = save_plots # Stored save_plots | |
| self.coherence_list = [] # Initialized coherence_list | |
| self.stability_list = [] # Initialized stability_list | |
| for _ in range(num_agents): | |
| phi_init = np.random.uniform(-1, 1) | |
| tier = np.random.randint(1, 5) | |
| agent = RFTAgent(phi_init, tier, mutation_rate, drift_rate) | |
| self.agents.append(agent) | |
| def run(self): | |
| for _ in range(self.steps): | |
| for agent in self.agents: | |
| agent.step() | |
| # Append current coherence and stability after all agents have stepped | |
| self.coherence_list.append(self.compute_coherence()) | |
| self.stability_list.append(self.compute_stability()) | |
| # Conditional plot saving | |
| if self.save_plots: | |
| all_agents_history = self.get_history() | |
| visualization.plot_phi(all_agents_history, filename='phi_plot.png') | |
| visualization.plot_tau(all_agents_history, filename='tau_plot.png') | |
| visualization.plot_fitness(all_agents_history, filename='fitness_plot.png') | |
| visualization.plot_coherence(self.coherence_list, filename='coherence_plot.png') | |
| visualization.plot_stability(self.stability_list, filename='stability_plot.png') | |
| return (self.get_history(), self.coherence_list, self.stability_list) # Modified return value | |
| def get_history(self): | |
| return [agent.history for agent in self.agents] | |
| def compute_coherence(self): | |
| # Average phi across agents at the current step | |
| if not self.agents: | |
| return 0.0 | |
| return np.mean([agent.phi for agent in self.agents]) | |
| def compute_stability(self): | |
| # Variance of phi across agents at the current step | |
| if not self.agents: | |
| return 0.0 | |
| return np.var([agent.phi for agent in self.agents]) | |
| print("simulation.py updated successfully.") | |