aboutsummaryrefslogtreecommitdiffstats
path: root/src/jcgp/modules/fitness/TestCaseEvaluator.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/jcgp/modules/fitness/TestCaseEvaluator.java')
-rw-r--r--src/jcgp/modules/fitness/TestCaseEvaluator.java34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/jcgp/modules/fitness/TestCaseEvaluator.java b/src/jcgp/modules/fitness/TestCaseEvaluator.java
new file mode 100644
index 0000000..1dade74
--- /dev/null
+++ b/src/jcgp/modules/fitness/TestCaseEvaluator.java
@@ -0,0 +1,34 @@
+package jcgp.modules.fitness;
+
+import java.util.HashMap;
+
+import jcgp.CGP.Resources;
+import jcgp.parameters.Parameter;
+import jcgp.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 < (int) resources.get("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 < (int) resources.get("outputs"); o++) {
+ if (population.getChromosome(i).getOutput(o).calculate() == resources.getTestCase(t).getOutput(o)) {
+ fitness++;
+ }
+ }
+ }
+ population.getChromosome(i).setFitness(fitness);
+ }
+ }
+
+ @Override
+ public HashMap<String, Parameter> activate(Resources parameters) {
+ return new HashMap<String, Parameter>();
+ }
+}