@Override protected void iterate() { Population offspring = new Population(); int populationSize = population.size(); while (offspring.size() < populationSize) { Solution[] parents = selection.select(variation.getArity(), population); Solution[] children = variation.evolve(parents); offspring.addAll(children); } evaluateAll(offspring); population.addAll(offspring); fitnessEvaluator.evaluate(population); while (population.size() > populationSize) { int worstIndex = findWorstIndex(); fitnessEvaluator.removeAndUpdate(population, worstIndex); } }
/** * Constructs a new IBEA instance. * * @param problem the problem * @param archive the external archive; or {@code null} if no external archive is used * @param initialization the initialization operator * @param variation the variation operator * @param fitnessEvaluator the indicator fitness evaluator to use (e.g., hypervolume * additive-epsilon indicator) */ public IBEA( Problem problem, NondominatedPopulation archive, Initialization initialization, Variation variation, IndicatorFitnessEvaluator fitnessEvaluator) { super(problem, new Population(), archive, initialization); this.variation = variation; this.fitnessEvaluator = fitnessEvaluator; fitnessComparator = new FitnessComparator(fitnessEvaluator.areLargerValuesPreferred()); selection = new TournamentSelection(fitnessComparator); }
@Override protected void initialize() { super.initialize(); fitnessEvaluator.evaluate(population); }