package jcgp.population; import jcgp.Parameters; public class Population { private Chromosome[] parents; private Chromosome[] offspring; private Chromosome bestIndividual; public Population(Chromosome parent) { parents = new Chromosome[Parameters.getParentCount()]; // make a clone for safety this.parents[0] = new Chromosome(parent); // generate the rest of parents for (int c = 1; c < parents.length; c++) { parents[c] = new Chromosome(); } offspring = new Chromosome[Parameters.getOffspringCount()]; for (int c = 0; c < offspring.length; c++) { // completely random offspring? depending on EA, this means the given parent won't be selected offspring[c] = new Chromosome(); } } public Population() { parents = new Chromosome[Parameters.getParentCount()]; for (int c = 0; c < parents.length; c++) { parents[c] = new Chromosome(); } offspring = new Chromosome[Parameters.getOffspringCount()]; for (int c = 0; c < offspring.length; c++) { offspring[c] = new Chromosome(); } } public Chromosome getOffspring(int index) { return offspring[index]; } public Chromosome getParent(int index) { return parents[index]; } /** * Returns all chromosomes, parents first, then offspring. * * @param index * @return */ public Chromosome getChromosome(int index) { if (index < parents.length) { return parents[index]; } else { return offspring[index - parents.length]; } } public void setBestIndividual(int index) { if (index < parents.length) { bestIndividual = parents[index]; } else { bestIndividual = offspring[index - parents.length]; } } public Chromosome getBestIndividual() { return bestIndividual; } }