2019-09-06 08:44:55 +00:00
|
|
|
import numpy as np
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def evaluate_policy(model, env, n_eval_episodes=10, deterministic=True, render=False):
|
|
|
|
|
"""
|
|
|
|
|
Runs policy for n episodes and returns average reward
|
|
|
|
|
"""
|
2019-09-20 13:19:04 +00:00
|
|
|
episode_rewards, n_steps = [], 0
|
2019-09-06 08:44:55 +00:00
|
|
|
for _ in range(n_eval_episodes):
|
|
|
|
|
obs = env.reset()
|
|
|
|
|
done = False
|
2019-09-20 13:19:04 +00:00
|
|
|
episode_reward = 0.0
|
2019-09-06 08:44:55 +00:00
|
|
|
while not done:
|
2019-09-12 12:00:55 +00:00
|
|
|
action = model.predict(obs, deterministic=deterministic)
|
2019-09-06 08:44:55 +00:00
|
|
|
obs, reward, done, _ = env.step(action)
|
2019-09-20 13:19:04 +00:00
|
|
|
episode_reward += reward
|
2019-09-06 12:01:10 +00:00
|
|
|
n_steps += 1
|
2019-09-06 08:44:55 +00:00
|
|
|
if render:
|
|
|
|
|
env.render()
|
2019-09-20 13:19:04 +00:00
|
|
|
episode_rewards.append(episode_reward)
|
2019-09-06 08:44:55 +00:00
|
|
|
|
2019-09-20 13:19:04 +00:00
|
|
|
return np.mean(episode_rewards), n_steps
|