diff options
author | Eduardo Pedroni <ep625@york.ac.uk> | 2014-02-04 16:20:33 +0000 |
---|---|---|
committer | Eduardo Pedroni <ep625@york.ac.uk> | 2014-02-04 16:20:33 +0000 |
commit | 1fd678821cf133c7c431daea687f3467bb0be2dd (patch) | |
tree | c23e7fe6a4076c6748d03b2cee9d41ff6e9734b2 /src/jcgp/fitness/TruthTableEvaluator.java | |
parent | d9671c354080de20bba4f70438af9242c8ecd675 (diff) |
Added fitness evaluation mechanism, though it might not be a very good design. Tests will be done to verify that.
Diffstat (limited to 'src/jcgp/fitness/TruthTableEvaluator.java')
-rw-r--r-- | src/jcgp/fitness/TruthTableEvaluator.java | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/jcgp/fitness/TruthTableEvaluator.java b/src/jcgp/fitness/TruthTableEvaluator.java new file mode 100644 index 0000000..64ca209 --- /dev/null +++ b/src/jcgp/fitness/TruthTableEvaluator.java @@ -0,0 +1,26 @@ +package jcgp.fitness; + +import jcgp.CGP.Parameters; +import jcgp.CGP.TruthTable; +import jcgp.population.Chromosome; +import jcgp.population.Population; + +public class TruthTableEvaluator implements FitnessFunction { + + @Override + public void evaluate(Population population) { + for (Chromosome chromosome : population) { + for (int t = 0; t < TruthTable.getTestCaseCount(); t++) { + chromosome.setInputs(TruthTable.getTestCase(t).getInputs()); + int fitness = 0; + for (int o = 0; o < Parameters.getOutputs(); o++) { + if (chromosome.getOutput(o).calculate() == TruthTable.getTestCase(t).getOutput(o)) { + fitness++; + } + } + chromosome.setFitness(fitness); + } + } + } + +} |