Spaces:
Sleeping
Sleeping
| import json | |
| from pathlib import Path | |
| import torch | |
| from traffic_rl.env.traffic_env import TrafficEnv | |
| from traffic_rl.training.trainer import TrainingConfig, train_dqn | |
| from traffic_rl.evaluation.evaluator import evaluate_agent | |
| env_config = { | |
| "max_steps": 120, | |
| "arrival_mode": "stochastic", | |
| "lane_bias": (1.6, 0.8, 1.4, 0.6), | |
| "peak_rates": (3.8, 2.2, 3.4, 1.5), | |
| "offpeak_rates": (1.4, 0.9, 1.2, 0.7), | |
| "peak_duration": 35, | |
| "cycle_duration": 60, | |
| "service_rate": 2, | |
| "ambulance_spawn_prob": 0.08, | |
| "seed": 42, | |
| } | |
| cfg = TrainingConfig(episodes=80, max_steps=120, batch_size=64, target_sync_interval=10, epsilon_decay=0.97) | |
| env = TrafficEnv(config=env_config) | |
| agent, history = train_dqn(env, cfg) | |
| metrics = evaluate_agent(agent=agent, env_config=env_config, episodes=20) | |
| artifacts = Path("artifacts") | |
| artifacts.mkdir(exist_ok=True) | |
| torch.save(agent.q_network.state_dict(), artifacts / "dqn_state_dict.pt") | |
| (artifacts / "model_metrics.json").write_text(json.dumps(metrics, indent=2), encoding="utf-8") | |
| (artifacts / "model_config.json").write_text(json.dumps(env_config, indent=2), encoding="utf-8") | |
| print(json.dumps({"metrics": metrics, "artifact_dir": str(artifacts)}, indent=2)) | |