-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathevaluation.py
51 lines (33 loc) · 998 Bytes
/
evaluation.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import gym
import pybullet_envs
from hebbian_weights_update import *
from policies import MLP_heb
import torch
import torch.nn as nn
import matplotlib.pyplot as plt
import pickle
from rollout import fitness_function
import numpy as np
from main import num_rules, num_params
N_EVALS = 10
SHOW_CURVES = True
results = pickle.load(open('','rb'))
if SHOW_CURVES:
pop_mean = np.trim_zeros(results[3])
pop_best = np.trim_zeros(results[4])
plt.plot(pop_mean, label='pop_mean')
plt.plot(pop_best, label='pop_best')
plt.legend()
plt.title('Training Curve')
plt.xlabel('generations')
plt.ylabel('score')
plt.show()
coeffs = results[0].mu.reshape(num_rules, num_params)
inds = results[1]
eval_episodes = []
for i in range(N_EVALS):
score = fitness_function(coeffs, inds)
print(i, 'score:', score)
eval_episodes.append(score)
print('Average score:', np.mean(eval_episodes))
pickle.dump(eval_episodes, open('evaluation_scores.pickle','wb'))