code: def run(self, num_episodes):
      steps_buffer = []
      rewards_buffer = []
  
      for _ in range(num_episodes):
          _ = self.env.reset()
          max_day = (
              self.env.chronics_handler.max_timestep() - MAX_TIMESTEP
          ) // 288
          start_timestep = (
              np.random.randint(max_day) * 288 - 1
          )  # start at 00:00
          if start_timestep > 0:
              self.env.fast_forward_chronics(start_timestep)
  
          obs = self.env.get_obs()
          done = False
          steps = 0
          rewards = 0
          while not done:
              action = self.agent.act(obs, None, None)
              obs, reward, done, info = self.env.step(action)
              assert not info["is_illegal"] and not info["is_ambiguous"]
              rewards += reward
              steps += 1
              if steps >= MAX_TIMESTEP:
                  break
          steps_buffer.append(steps)
          rewards_buffer.append(rewards)
  
      return np.mean(steps_buffer), np.mean(rewards_buffer)
  
file_path: PARL/examples/NeurIPS2020-Learning-to-Run-a-Power-Network-Challenge/track2/evaluate.py
imports: import grid2op
  import lightsim2grid
  from lightsim2grid.LightSimBackend import LightSimBackend
  import numpy
  from agent import Track2PowerNetAgent
  import argparse
label_desc: Use image node_id 2 for calling the Evaluator obj's underlying member method code with example usage: obj.run(num_episodes) and returns: np,  np