PowwerUp / rl_evaluator.py
pvsai's picture
Upload folder using huggingface_hub
88bc772 verified
Raw
History Blame Contribute Delete
1.27 kB
import pandas as pd
import numpy as np
def run_rl_inference(model, env):
obs, _ = env.reset()
done = False
history = []
while not done:
# action is [market_choice, charge_fraction]
action, _ = model.predict(obs, deterministic=True)
# Capture state BEFORE the step for the dashboard
current_step_idx = env.current_step
prices = env.input_data.iloc[current_step_idx]
# Step the environment
obs, reward, terminated, truncated, _ = env.step(action)
done = terminated or truncated
# Logic for the dashboard
market = "Ancillary (FCR)" if action[0] >= 0.5 else "Arbitrage"
decision = "Idle"
if market == "Arbitrage":
if action[1] > 0.1: decision = "Sell (Discharge)"
elif action[1] < -0.1: decision = "Buy (Charge)"
history.append({
"Timestamp": prices.name,
"Market_Choice": market,
"Decision": decision,
"Action_Value": action[1],
"Energy_Price": prices.get("energy", 0),
"FCR_Price": prices.get("fcr", 0),
"SoC": env.battery.soc,
"Hourly_Revenue": reward
})
return pd.DataFrame(history)