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; } }