/
objects.go
191 lines (173 loc) · 7.62 KB
/
objects.go
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
package analysis
import (
"github.com/martinomburajr/masters-go/evolution"
"github.com/martinomburajr/masters-go/simulation"
)
func ScaleCCAlgorithmToOrdinal(algorithm string) int {
switch algorithm {
case evolution.TopologyHallOfFame:
return 0
case evolution.TopologyRoundRobin:
return 1
case evolution.TopologyKRandom:
return 2
case evolution.TopologySingleEliminationTournament:
return 3
}
return -1
}
func ScaleCrosoverToOrdinal(crossover string) int {
switch crossover {
case evolution.CrossoverSinglePoint:
return 0
case evolution.CrossoverUniform:
return 1
}
return -1
}
type CSVBestAll struct {
FileID string `csv:"ID"`
bestIndividualStatistic simulation.RunBestIndividualStatistic `csv:"bestIndividualStatistic"`
params evolution.EvolutionParams `csv:"evolutionaryParams"`
//BEST INDIVIDUAL
SpecEquation string `csv:"specEquation"`
SpecRange int `csv:"range"`
SpecSeed int `csv:"seed"`
AntagonistID string `csv:"AID"`
ProtagonistID string `csv:"PID"`
Antagonist float64 `csv:"AAvg"`
Protagonist float64 `csv:"PAvg"`
AntagonistBestFitness float64 `csv:"ABestFit"`
ProtagonistBestFitness float64 `csv:"PBestFit"`
AntagonistStdDev float64 `csv:"AStdDev"`
ProtagonistStdDev float64 `csv:"PStdDev"`
AntagonistAverageDelta float64 `csv:"AAvgDelta"`
ProtagonistAverageDelta float64 `csv:"PAvgDelta"`
AntagonistBestDelta float64 `csv:"ABestDelta"`
ProtagonistBestDelta float64 `csv:"PBestDelta"`
AntagonistEquation string `csv:"AEquation"`
ProtagonistEquation string `csv:"PEquation"`
AntagonistStrategy string `csv:"AStrat"`
ProtagonistStrategy string `csv:"PStrat"`
AntagonistDominantStrategy string `csv:"ADomStrat"`
ProtagonistDominantStrategy string `csv:"PDomStrat"`
AntagonistGeneration int `csv:"AGen"`
ProtagonistGeneration int `csv:"PGen"`
AntagonistBirthGen int `csv:"ABirthGen"`
ProtagonistBirthGen int `csv:"PBirthGen"`
AntagonistRun int `csv:"ARun"`
ProtagonistRun int `csv:"PRun"`
AntagonistAge int `csv:"AAge"`
ProtagonistAge int `csv:"PAge"`
AntagonistNoOComp int `csv:"ANoC"`
ProtagonistNoOComp int `csv:"PNoC"`
FinalAntagonist float64 `csv:"finAAvg"`
FinalProtagonist float64 `csv:"finPAvg"`
FinalAntagonistBestFitness float64 `csv:"finABestFit"`
FinalProtagonistBestFitness float64 `csv:"finPBestFit"`
FinalAntagonistStdDev float64 `csv:"finAStdDev"`
FinalProtagonistStdDev float64 `csv:"finPStdDev"`
FinalAntagonistAverageDelta float64 `csv:"finAAvgDelta"`
FinalProtagonistAverageDelta float64 `csv:"finPAvgDelta"`
FinalAntagonistBestDelta float64 `csv:"finABestDelta"`
FinalProtagonistBestDelta float64 `csv:"finPBestDelta"`
FinalAntagonistEquation string `csv:"finAEquation"`
FinalProtagonistEquation string `csv:"finPEquation"`
FinalAntagonistStrategy string `csv:"finAStrat"`
FinalProtagonistStrategy string `csv:"finPStrat"`
FinalAntagonistDominantStrategy string `csv:"finADomStrat"`
FinalProtagonistDominantStrategy string `csv:"finPDomStrat"`
FinalAntagonistBirthGen int `csv:"finABirthGen"`
FinalProtagonistBirthGen int `csv:"finPBirthGen"`
FinalAntagonistAge int `csv:"finAAge"`
FinalProtagonistAge int `csv:"finPAge"`
FinalAntagonistNoOComp int `csv:"finANoC"`
FinalProtagonistNoOComp int `csv:"finPNoC"`
Run int `csv:"run"`
// PARAMS
GenerationCount int `csv:"genCount"`
EachPopulationSize int `csv:"popCount"`
TopologyType string `csv:"topology"`
AntStratCount int `csv:"antStratCount"`
ProStratCount int `csv:"proStratCount"`
AntStrat string `csv:"antStrat"`
ProStrat string `csv:"proStrat"`
RandTreeDepth int `csv:"randTreeDepth"`
AntThreshMult float64 `csv:"antThreshMult"`
ProThresMult float64 `csv:"proThresMult"`
CrossPercent float64 `csv:"crossPercent"`
ProbMutation float64 `csv:"probMutation"`
ParentSelect string `csv:"parentSelect"`
TournamentSize int `csv:"tournamentSize"`
SurvivorSelect string `csv:"survivorSelect"`
SurvivorPercent float64 `csv:"survivorPercent"`
DivByZero string `csv:"d0"`
DivByZeroPen float64 `csv:"d0Pen"`
CrossoverType string `csv:"crossoverType"`
CrossoverScale int `csv:"crossoverScale"`
TopologyScale int `csv:"topologyScale"`
}
type CSVCombinedGenerations struct {
FileID string `csv:"ID"`
params evolution.EvolutionParams `csv:"evolutionaryParams"`
//BEST INDIVIDUAL
Generation int `csv:"gen"`
SpecEquation string `csv:"specEquation"`
SpecRange int `csv:"range"`
SpecSeed int `csv:"seed"`
TopAEquation string `csv:"topAEquation"`
TopPEquation string `csv:"topPEquation"`
Correlation float64 `csv:"correlation"`
Covariance float64 `csv:"covariance"`
Antagonist float64 `csv:"AMean"`
Protagonist float64 `csv:"PMean"`
TopAntagonistMean float64 `csv:"topAMean"`
TopProtagonistMean float64 `csv:"topPMean"`
TopAntagonistBestFitness float64 `csv:"topABest"`
TopProtagonistBestFitness float64 `csv:"topPBest"`
TopAntagonistStdDev float64 `csv:"AStd"`
TopProtagonistStdDev float64 `csv:"PStd"`
TopAntagonistVar float64 `csv:"AVar"`
TopProtagonistVar float64 `csv:"PVar"`
TopAntagonistSkew float64 `csv:"ASkew"`
TopProtagonistSkew float64 `csv:"PSkew"`
TopAntagonistKurtosis float64 `csv:"AExKur"`
TopProtagonistKurtosis float64 `csv:"PExKur"`
TopAntagonistAverageDelta float64 `csv:"topAMeanDelta"`
TopProtagonistAverageDelta float64 `csv:"topPMeanDelta"`
TopAntagonistBestDelta float64 `csv:"topABestDelta"`
TopProtagonistBestDelta float64 `csv:"topPBestDelta"`
TopAntagonistStrategy string `csv:"topAStrat"`
TopProtagonistStrategy string `csv:"topPStrat"`
TopAntagonistDominantStrategy string `csv:"topADomStrat"`
TopProtagonistDominantStrategy string `csv:"topPDomStrat"`
TopAntagonistGeneration int `csv:"topAGen"`
TopProtagonistGeneration int `csv:"topPGen"`
TopAntagonistBirthGen int `csv:"topABirthGen"`
TopProtagonistBirthGen int `csv:"topPBirthGen"`
TopAntagonistAge int `csv:"topAAge"`
TopProtagonistAge int `csv:"topPAge"`
Run int `csv:"run"`
// PARAMS
GenerationCount int `csv:"genCount"`
EachPopulationSize int `csv:"popCount"`
TopologyType string `csv:"topology"`
AntStratCount int `csv:"antStratCount"`
ProStratCount int `csv:"proStratCount"`
AntStrat string `csv:"antStrat"`
ProStrat string `csv:"proStrat"`
RandTreeDepth int `csv:"randTreeDepth"`
AntThreshMult float64 `csv:"antThreshMult"`
ProThresMult float64 `csv:"proThresMult"`
CrossPercent float64 `csv:"crossPercent"`
ProbMutation float64 `csv:"probMutation"`
ParentSelect string `csv:"parentSelect"`
TournamentSize int `csv:"tournamentSize"`
SurvivorSelect string `csv:"survivorSelect"`
SurvivorPercent float64 `csv:"survivorPercent"`
DivByZero string `csv:"d0"`
DivByZeroPen float64 `csv:"d0Pen"`
TopologyScale int `csv:"topologyScale"`
CrossoverScale int `csv:"crossoverScale"`
CrossoverType string `csv:"crossoverType"`
}