diff options
Diffstat (limited to 'src/jcgp/ea/StandardEA.java')
-rw-r--r-- | src/jcgp/ea/StandardEA.java | 41 |
1 files changed, 34 insertions, 7 deletions
diff --git a/src/jcgp/ea/StandardEA.java b/src/jcgp/ea/StandardEA.java index b34c421..901333b 100644 --- a/src/jcgp/ea/StandardEA.java +++ b/src/jcgp/ea/StandardEA.java @@ -1,18 +1,45 @@ package jcgp.ea; +import jcgp.Parameters; import jcgp.population.Chromosome; import jcgp.population.Population; +/** + * (1 + λ) EA. + * + * + * @author Eduardo Pedroni + * + */ public class StandardEA implements EvolutionaryAlgorithm { + + private int bestFitness = 0; @Override - public void evolve(Population population, Mutator mutator) { - Chromosome select; - for (Chromosome chromosome : population) { - - - mutator.mutate(chromosome); + public void evolve(Population population, Mutator mutator) { + // select fittest chromosome + int fittest = 0; + + for (int i = 1; i < Parameters.getPopulationSize(); i++) { + if (population.getChromosome(i).getFitness() >= population.getChromosome(fittest).getFitness()) { + fittest = i; + } + } + bestFitness = population.getChromosome(fittest).getFitness(); + population.setBestIndividual(fittest); + System.out.println("Best fitness: " + bestFitness); + // create copies of fittest chromosome, mutate them + Chromosome fc = population.getChromosome(fittest); + for (int i = 0; i < Parameters.getPopulationSize(); i++) { + if (i != fittest) { + population.getChromosome(i).copyConnections(fc); + mutator.mutate(population.getChromosome(i)); + } } } - + + @Override + public int getBestFitness() { + return bestFitness; + } } |