Spaces:
Running
Running
| import time | |
| import os | |
| from environment import BusRoutingEnv | |
| from tasks import get_task | |
| from agent import DQNAgent | |
| def run_demo(): | |
| print("\n" + "="*50) | |
| print(" OPENENV BUS OPTIMIZATION β LIVE DEMO") | |
| print("="*50 + "\n") | |
| task = get_task("medium") | |
| env = task.build_env() | |
| model_path = "models/dqn_bus_v5.pt" | |
| if not os.path.exists(model_path): | |
| print(f"[ERROR] Model not found at {model_path}") | |
| return | |
| agent = DQNAgent.load(model_path) | |
| obs_model = env.reset() | |
| obs = obs_model.to_array() | |
| for step in range(1, 11): | |
| action = agent.act(obs, greedy=True) | |
| obs_model, reward, done, info = env.step(action) | |
| obs = obs_model.to_array() | |
| render = env.render() | |
| bus_pos = render["bus_pos"] | |
| stops = render["stops"] | |
| # Simple ASCII Route | |
| route_str = "" | |
| for i, stop in enumerate(stops): | |
| char = f"[{stop['queue_len']:02d}]" | |
| if i == bus_pos: | |
| char = f"|π{stop['queue_len']:02d}|" | |
| route_str += char + " -- " | |
| print(f"Step {step:02d} | Action: {action} | Route: {route_str}") | |
| print(f" | Fuel: {render['fuel']:.1f}% | Onboard: {render['onboard']} | Reward: {reward.value:+.2f}") | |
| print("-" * 100) | |
| if done: break | |
| time.sleep(0.5) | |
| print("\nDemo concluded successfully.") | |
| if __name__ == "__main__": | |
| run_demo() | |