aboutsummaryrefslogtreecommitdiffstats
path: root/src/jcgp/backend/modules/fitness/TestCaseEvaluator.java
blob: 5ff6973db089aab86e588f4a349885530b9943ba (plain)
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
package jcgp.backend.modules.fitness;

import jcgp.JCGP.Resources;
import jcgp.backend.modules.ModuleStatus;
import jcgp.backend.parameters.Parameter;
import jcgp.backend.population.Population;

public class TestCaseEvaluator implements FitnessFunction {
	
	@Override
	public void evaluate(Population population, Resources resources) {		
		// for every chromosome in the population
		for (int i = 0; i < resources.getInt("popSize"); i++) {
			int fitness = 0;
			// for every test case
			for (int t = 0; t < resources.getTestCaseCount(); t++) {
				population.getChromosome(i).setInputs(resources.getTestCase(t).getInputs());
				// check every output
				for (int o = 0; o < resources.getInt("outputs"); o++) {
					if (population.getChromosome(i).getOutput(o).calculate() == resources.getTestCase(t).getOutput(o)) {
						fitness++;
					}
				}
			}
			population.getChromosome(i).setFitness(fitness);
		}
	}

	@Override
	public Parameter[] getLocalParameters() {
		return null;
	}

	@Override
	public String toString() {
		return "Test case";
	}

	@Override
	public ModuleStatus getStatus(Resources resources) {
		return null;
	}
}