-
Notifications
You must be signed in to change notification settings - Fork 0
/
generateOptimPlot.py
94 lines (85 loc) · 2.81 KB
/
generateOptimPlot.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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
import matplotlib.pyplot as plt
import pickle
import numpy as np
fit_mins=[]
fit_avgs=[]
fit_stds=[]
fit_maxs=[]
#
with open('fitEvol1Exp.dat', 'rb') as f:
ret = pickle.load(f)
fit_mins.append(ret[0])
fit_avgs.append(ret[1])
fit_stds.append(ret[2])
fit_maxs.append(ret[3])
for i in [2,3,4,5,6,7,8,9,10]:
with open('fitEvolExp'+str(i)+'.dat', 'rb') as f:
ret = pickle.load(f)
gen=range(len(ret[0]))
fit_mins.append(ret[0])
fit_avgs.append(ret[1])
fit_stds.append(ret[2])
fit_maxs.append(ret[3])
# for i in [1,2,3,4,5,6,7,8,9,10]:
# with open('fitEvolNoExp'+str(i)+'.dat', 'rb') as f:
# ret = pickle.load(f)
# gen=range(len(ret[0]))
# fit_mins.append(ret[0])
# fit_avgs.append(ret[1])
# fit_stds.append(ret[2])
# fit_maxs.append(ret[3])
fit_mins_med=np.median(fit_mins,axis=0)
fit_avgs_med=np.median(fit_avgs,axis=0)
fit_maxs_med=np.median(fit_maxs,axis=0)
fit_mins_q1=np.percentile(fit_mins,25,axis=0)
fit_avgs_q1=np.percentile(fit_avgs,25,axis=0)
fit_maxs_q1=np.percentile(fit_maxs,25,axis=0)
fit_mins_q3=np.percentile(fit_mins,75,axis=0)
fit_avgs_q3=np.percentile(fit_avgs,75,axis=0)
fit_maxs_q3=np.percentile(fit_maxs,75,axis=0)
minExp=fit_mins_med
fit_mins=[]
fit_avgs=[]
fit_stds=[]
fit_maxs=[]
for i in [1,2,3,4,5,6,7,8,9,10]:
with open('fitEvolNoExp'+str(i)+'.dat', 'rb') as f:
ret = pickle.load(f)
gen=range(len(ret[0]))
fit_mins.append(ret[0])
fit_avgs.append(ret[1])
fit_stds.append(ret[2])
fit_maxs.append(ret[3])
fit_mins_med=np.median(fit_mins,axis=0)
fit_avgs_med=np.median(fit_avgs,axis=0)
fit_maxs_med=np.median(fit_maxs,axis=0)
fit_mins_q1=np.percentile(fit_mins,25,axis=0)
fit_avgs_q1=np.percentile(fit_avgs,25,axis=0)
fit_maxs_q1=np.percentile(fit_maxs,25,axis=0)
fit_mins_q3=np.percentile(fit_mins,75,axis=0)
fit_avgs_q3=np.percentile(fit_avgs,75,axis=0)
fit_maxs_q3=np.percentile(fit_maxs,75,axis=0)
minNoExp=fit_mins_med
fig, ax1 = plt.subplots()
ax1.set_title("Fitness across generations")
ax1.plot(gen, minNoExp, "g-", label="Median Fitness without Expertise",linewidth=2)
ax1.plot(gen, minExp, "b-", label="Median Fitness with Expertise",linewidth=2)
#ax1.plot(gen, fit_stds_med, "k-", label="Std Fitness")
#ax1.plot(gen, fit_maxs_med, "r-", label="Maximum Fitness",linewidth=3)
#ax1.plot(gen, fit_mins_q1, "g-",)
#ax1.plot(gen, fit_avgs_q1, "y-")
#ax1.plot(gen, fit_stds_med, "k-", label="Std Fitness")
#ax1.plot(gen, fit_maxs_q1, "r-")
#ax1.plot(gen, fit_mins_q3, "g-")
#ax1.plot(gen, fit_avgs_q3, "y-")
#ax1.plot(gen, fit_stds_med, "k-", label="Std Fitness")
#ax1.plot(gen, fit_maxs_q3, "r-")
ax1.set_xlabel("Generation")
ax1.set_ylabel("Fitness")
#for tl in ax1.get_yticklabels():
# tl.set_color("b")
plt.legend()
plt.show()
fit_mins= np.array(fit_mins)
bestfits=fit_mins[:,100]
print("bestfits:"+np.mean(bestfits)+ " s:"+np.std(bestfits))