Repository navigation
Expand file tree
/
Copy pathrun_simulation.py
More file actions
51 lines (41 loc) · 2.38 KB
/
Copy pathrun_simulation.py
File metadata and controls
51 lines (41 loc) · 2.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import os
os.environ["KMP_DUPLICATE_LIB_OK"] = "TRUE"
os.environ["OMP_NUM_THREADS"] = "1"
import argparse
import json
from evo_brain import AutonomousAgent, Visualizer
def main():
parser = argparse.ArgumentParser(description="Run EvoBrain Autonomous Self-Evolving Agent Simulation")
parser.add_argument("--stages", type=int, default=5, help="Number of life cycle stages")
parser.add_argument("--threshold", type=float, default=0.2, help="Plateau MSE threshold for synaptic expansion")
parser.add_argument("--initial-hidden", type=int, default=16, help="Initial hidden units in brain")
parser.add_argument("--expansion-size", type=int, default=8, help="Hidden units to add upon synaptic expansion")
parser.add_argument("--output-dir", type=str, default="results", help="Directory to save generated outputs")
args = parser.parse_args()
os.makedirs(args.output_dir, exist_ok=True)
os.makedirs(os.path.join(args.output_dir, "figures"), exist_ok=True)
print(f"=== Initializing EvoBrain (Initial Hidden: {args.initial_hidden}, Threshold: {args.threshold}) ===")
agent = AutonomousAgent(
input_dim=16,
initial_hidden=args.initial_hidden,
target_threshold=args.threshold,
expansion_size=args.expansion_size
)
records = agent.run_life_cycle(stages=args.stages)
losses = [r["final_loss"] for r in records]
stages = [r["stage"] for r in records]
print("\n=== Simulation Summary ===")
for r in records:
ev_msg = f"-> Synaptic growth: {r['old_hidden']} -> {r['new_hidden']} units" if r["evolved"] else "Converged (No expansion)"
print(f"Stage {r['stage']}: Loss = {r['final_loss']:.4f} | {ev_msg}")
loss_fig_path = os.path.join(args.output_dir, "figures", "cli_loss_trend.png")
Visualizer.plot_loss_trend(stages, losses, target_threshold=args.threshold, save_path=loss_fig_path)
print(f"\nLoss curve saved to: {loss_fig_path}")
tsne_2d_path = os.path.join(args.output_dir, "figures", "cli_tsne_2d.png")
Visualizer.plot_tsne_2d(agent.brain, steps=args.stages, save_path=tsne_2d_path)
print(f"2D t-SNE latent map saved to: {tsne_2d_path}")
tsne_3d_path = os.path.join(args.output_dir, "figures", "cli_tsne_3d.png")
Visualizer.plot_tsne_3d(agent.brain, steps=args.stages, save_path=tsne_3d_path)
print(f"3D t-SNE latent map saved to: {tsne_3d_path}")
if __name__ == "__main__":
main()