| import numpy as np |
| import random |
|
|
| class RFTAgent: |
| def __init__(self, phi_init, tier, mutation_rate, drift_rate): |
| self.phi = phi_init |
| self.tau_eff = 0.0 |
| self.tier = tier |
| self.fitness = 0.0 |
| self.mutation_rate = mutation_rate |
| self.drift_rate = drift_rate |
| self.history = { |
| 'phi': [], |
| 'tau_eff': [], |
| 'tier': [], |
| 'fitness': [] |
| } |
|
|
| def update_tau(self): |
| |
| self.tau_eff = 0.5 * self.phi + random.uniform(-0.1, 0.1) |
|
|
| def mutate(self): |
| |
| self.phi += np.random.normal(0, self.mutation_rate) |
|
|
| def drift(self): |
| |
| self.phi += self.drift_rate * self.tau_eff |
|
|
| def update_fitness(self): |
| |
| self.fitness = abs(self.phi) + abs(self.tau_eff) + self.tier * 0.1 |
|
|
| def step(self): |
| self.mutate() |
| self.drift() |
| self.update_tau() |
| self.update_fitness() |
| self._log_history() |
|
|
| def _log_history(self): |
| self.history['phi'].append(self.phi) |
| self.history['tau_eff'].append(self.tau_eff) |
| self.history['tier'].append(self.tier) |
| self.history['fitness'].append(self.fitness) |
|
|
| print("agent.py created successfully.") |
|
|