-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMultiValuedRegression.java
More file actions
60 lines (51 loc) · 1.95 KB
/
MultiValuedRegression.java
File metadata and controls
60 lines (51 loc) · 1.95 KB
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
import ec.EvolutionState;
import ec.Individual;
import ec.gp.GPIndividual;
import ec.gp.GPProblem;
import ec.gp.koza.KozaFitness;
import ec.simple.SimpleProblemForm;
import ec.util.Parameter;
public class MultiValuedRegression extends GPProblem implements SimpleProblemForm
{
private static final long serialVersionUID = 1;
public double currentX;
public double currentY;
public void setup(final EvolutionState state,
final Parameter base)
{
super.setup(state, base);
// verify our input is the right class (or subclasses from it)
if (!(input instanceof DoubleData))
state.output.fatal("GPData class must subclass from " + DoubleData.class,
base.push(P_DATA), null);
}
public void evaluate(final EvolutionState state,
final Individual individual,
final int subpopulation,
final int threadnum)
{
if (!individual.evaluated)
{
DoubleData input = (DoubleData)(this.input);
int hits = 0;
double sum = 0.0;
double expectedResult;
double result;
for (int y = 0; y < 10; y++)
{
currentX = state.random[threadnum].nextDouble();
currentY = state.random[threadnum].nextDouble();
expectedResult = currentX * currentX * currentY + currentX * currentY + currentY;
((GPIndividual)individual).trees[0].child.eval(
state, threadnum, input, stack, ((GPIndividual)individual), this);
result = Math.abs(expectedResult - input.x);
if (result <= 0.01) hits++;
sum += result;
}
KozaFitness f = ((KozaFitness)individual.fitness);
f.setStandardizedFitness(state, sum);
f.hits = hits;
individual.evaluated = true;
}
}
}