| import json |
| from env.ev_charge_env import EVChargeEnv |
| from agent.price_aware_agent import PriceAwareAgent |
|
|
|
|
| def run_episode(env, agent, seed=None): |
| obs, _ = env.reset(seed=seed) |
| total_reward = 0.0 |
| steps = 0 |
|
|
| while True: |
| action = agent.select_action(obs) |
| obs, reward, terminated, truncated, _ = env.step(action) |
| total_reward += reward |
| steps += 1 |
| if terminated or truncated: |
| break |
|
|
| return total_reward, steps |
|
|
|
|
| def main(): |
| |
| env = EVChargeEnv(scenario="medium") |
| agent = PriceAwareAgent() |
|
|
| rewards = [] |
| steps_list = [] |
|
|
| num_episodes = 10 |
| for i in range(num_episodes): |
| total_reward, steps = run_episode(env, agent, seed=i) |
| rewards.append(total_reward) |
| steps_list.append(steps) |
|
|
| output = { |
| "agent_type": "price_aware", |
| "scenario": "medium", |
| "avg_reward": sum(rewards) / len(rewards), |
| "avg_steps": sum(steps_list) / len(steps_list), |
| "episodes": num_episodes, |
| } |
|
|
| print(json.dumps(output, indent=2)) |
|
|
|
|
| if __name__ == "__main__": |
| main() |
|
|