|
|
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() |
|
|
|