EASystem.java

1
package net.bmahe.genetics4j.core;
2
3
import java.util.ArrayList;
4
import java.util.Arrays;
5
import java.util.List;
6
import java.util.Objects;
7
8
import org.apache.commons.collections4.CollectionUtils;
9
import org.apache.commons.lang3.Validate;
10
import org.apache.logging.log4j.LogManager;
11
import org.apache.logging.log4j.Logger;
12
13
import net.bmahe.genetics4j.core.chromosomes.Chromosome;
14
import net.bmahe.genetics4j.core.chromosomes.factory.ChromosomeFactoryProvider;
15
import net.bmahe.genetics4j.core.combination.ChromosomeCombinator;
16
import net.bmahe.genetics4j.core.combination.GenotypeCombinator;
17
import net.bmahe.genetics4j.core.evaluation.FitnessEvaluator;
18
import net.bmahe.genetics4j.core.evolutionlisteners.EvolutionListener;
19
import net.bmahe.genetics4j.core.mutation.Mutator;
20
import net.bmahe.genetics4j.core.replacement.ReplacementStrategyImplementor;
21
import net.bmahe.genetics4j.core.selection.Selector;
22
import net.bmahe.genetics4j.core.spec.AbstractEAConfiguration;
23
import net.bmahe.genetics4j.core.spec.AbstractEAExecutionContext;
24
import net.bmahe.genetics4j.core.spec.EvolutionResult;
25
import net.bmahe.genetics4j.core.spec.ImmutableEvolutionResult;
26
import net.bmahe.genetics4j.core.termination.Termination;
27
import net.bmahe.genetics4j.core.util.GenotypeGenerator;
28
29
/**
30
 * Main orchestrator class for evolutionary algorithms, managing the complete
31
 * evolution process.
32
 * 
33
 * <p>
34
 * EASystem serves as the central coordinator that brings together all
35
 * components of an evolutionary
36
 * algorithm including genetic operators, selection strategies, evaluation
37
 * functions, and termination
38
 * criteria. It manages the evolutionary cycle and provides a unified interface
39
 * for running optimizations.
40
 * 
41
 * <p>
42
 * The system coordinates the following evolutionary process:
43
 * <ol>
44
 * <li><strong>Initialization</strong>: Generate initial population of random
45
 * genotypes</li>
46
 * <li><strong>Evaluation</strong>: Compute fitness values for all
47
 * individuals</li>
48
 * <li><strong>Selection</strong>: Choose parents for reproduction based on
49
 * fitness</li>
50
 * <li><strong>Reproduction</strong>: Create offspring through crossover and
51
 * mutation</li>
52
 * <li><strong>Replacement</strong>: Integrate offspring into next
53
 * generation</li>
54
 * <li><strong>Termination check</strong>: Determine if stopping criteria are
55
 * met</li>
56
 * <li><strong>Iteration</strong>: Repeat until termination conditions are
57
 * satisfied</li>
58
 * </ol>
59
 * 
60
 * <p>
61
 * Key responsibilities include:
62
 * <ul>
63
 * <li><strong>Population management</strong>: Maintaining population size and
64
 * diversity</li>
65
 * <li><strong>Genetic operator coordination</strong>: Applying crossover,
66
 * mutation, and selection</li>
67
 * <li><strong>Fitness evaluation orchestration</strong>: Managing parallel and
68
 * synchronous evaluation</li>
69
 * <li><strong>Evolution monitoring</strong>: Providing hooks for logging and
70
 * progress tracking</li>
71
 * <li><strong>Resource management</strong>: Efficient memory usage and
72
 * computation distribution</li>
73
 * </ul>
74
 * 
75
 * <p>
76
 * Configuration components:
77
 * <ul>
78
 * <li><strong>EAConfiguration</strong>: Defines genetic representation and
79
 * operator policies</li>
80
 * <li><strong>EAExecutionContext</strong>: Provides runtime services and
81
 * factory implementations</li>
82
 * <li><strong>FitnessEvaluator</strong>: Computes quality measures for
83
 * candidate solutions</li>
84
 * <li><strong>Termination criteria</strong>: Determines when to stop
85
 * evolution</li>
86
 * </ul>
87
 * 
88
 * <p>
89
 * The system supports various evolutionary paradigms:
90
 * <ul>
91
 * <li><strong>Genetic Algorithms</strong>: Traditional binary and real-valued
92
 * optimization</li>
93
 * <li><strong>Genetic Programming</strong>: Evolution of tree-structured
94
 * programs</li>
95
 * <li><strong>Evolution Strategies</strong>: Real-valued optimization with
96
 * adaptive parameters</li>
97
 * <li><strong>Multi-objective optimization</strong>: Pareto-based optimization
98
 * with multiple objectives</li>
99
 * </ul>
100
 * 
101
 * <p>
102
 * Example usage:
103
 * 
104
 * <pre>{@code
105
 * // Configure the evolutionary algorithm
106
 * EAConfiguration<Double> config = EAConfigurationBuilder.<Double>builder()
107
 *     .chromosomeSpecs(DoubleChromosomeSpec.of(10, -5.0, 5.0))
108
 *     .parentSelectionPolicy(Tournament.of(3))
109
 *     .mutationPolicy(RandomMutation.of(0.1))
110
 *     .build();
111
 * 
112
 * // Set up execution context
113
 * EAExecutionContext<Double> context = EAExecutionContexts.forScalarFitness();
114
 * 
115
 * // Create fitness evaluator
116
 * Fitness<Double> fitness = genotype -> {
117
 *     // Implement problem-specific fitness function
118
 *     return computeFitness(genotype);
119
 * };
120
 * 
121
 * // Build and run the evolutionary system
122
 * EASystem<Double> system = EASystemFactory.from(config, context, fitness);
123
 * EvolutionResult<Double> result = system.evolve(
124
 *     populationSize: 100,
125
 *     termination: Terminations.generations(1000)
126
 * );
127
 * }</pre>
128
 * 
129
 * <p>
130
 * Thread safety: EASystem instances are generally not thread-safe and should
131
 * not be shared
132
 * between multiple threads without external synchronization. However, the
133
 * system supports
134
 * parallel fitness evaluation internally when configured appropriately.
135
 * 
136
 * @param <T> the type of fitness values, must be comparable for selection and
137
 *            ranking
138
 * @see EASystemFactory
139
 * @see net.bmahe.genetics4j.core.spec.EAConfiguration
140
 * @see net.bmahe.genetics4j.core.spec.EAExecutionContext
141
 * @see FitnessEvaluator
142
 * @see Termination
143
 */
144
public class EASystem<T extends Comparable<T>> {
145
	final static public Logger logger = LogManager.getLogger(EASystem.class);
146
147
	private final GenotypeGenerator<T> genotypeGenerator;
148
	private final FitnessEvaluator<T> fitnessEvaluator;
149
	private final AbstractEAConfiguration<T> eaConfiguration;
150
	private final AbstractEAExecutionContext<T> eaExecutionContext;
151
	private final int populationSize;
152
153
	private final List<ChromosomeCombinator<T>> chromosomeCombinators;
154
	private final ChromosomeFactoryProvider chromosomeFactoryProvider;
155
156
	private final ReplacementStrategyImplementor<T> replacementStrategyImplementor;
157
158
	private final List<Mutator> mutators;
159
160
	private final double offspringRatio;
161
162
	private Selector<T> parentSelector;
163
164
	public EASystem(final AbstractEAConfiguration<T> _eaConfiguration, final long _populationSize,
165
			final List<ChromosomeCombinator<T>> _chromosomeCombinators, final double _offspringRatio,
166
			final Selector<T> _parentSelectionPolicyHandler, final List<Mutator> _mutators,
167
			final ReplacementStrategyImplementor<T> _replacementStrategyImplementor,
168
			final AbstractEAExecutionContext<T> _eaExecutionContext, final FitnessEvaluator<T> _fitnessEvaluator) {
169
		Objects.requireNonNull(_eaConfiguration);
170
		Validate.isTrue(_populationSize > 0);
171
		Objects.requireNonNull(_chromosomeCombinators);
172
		Validate.isTrue(_chromosomeCombinators.size() == _eaConfiguration.numChromosomes());
173
		Validate.inclusiveBetween(0.0, 1.0, _offspringRatio);
174
		Objects.requireNonNull(_parentSelectionPolicyHandler);
175
		Objects.requireNonNull(_replacementStrategyImplementor);
176
		Objects.requireNonNull(_eaExecutionContext);
177
		Objects.requireNonNull(_fitnessEvaluator);
178
179 1 1. <init> : Removed assignment to member variable eaConfiguration → KILLED
		this.eaConfiguration = _eaConfiguration;
180 1 1. <init> : Removed assignment to member variable eaExecutionContext → KILLED
		this.eaExecutionContext = _eaExecutionContext;
181 1 1. <init> : Removed assignment to member variable populationSize → KILLED
		this.populationSize = (int) _populationSize;
182 1 1. <init> : Removed assignment to member variable chromosomeCombinators → KILLED
		this.chromosomeCombinators = _chromosomeCombinators;
183 1 1. <init> : Removed assignment to member variable offspringRatio → KILLED
		this.offspringRatio = _offspringRatio;
184 1 1. <init> : Removed assignment to member variable mutators → KILLED
		this.mutators = _mutators;
185 2 1. <init> : removed call to net/bmahe/genetics4j/core/spec/AbstractEAExecutionContext::chromosomeFactoryProvider → KILLED
2. <init> : Removed assignment to member variable chromosomeFactoryProvider → KILLED
		this.chromosomeFactoryProvider = _eaExecutionContext.chromosomeFactoryProvider();
186 1 1. <init> : Removed assignment to member variable fitnessEvaluator → KILLED
		this.fitnessEvaluator = _fitnessEvaluator;
187
188 1 1. <init> : Removed assignment to member variable parentSelector → KILLED
		parentSelector = _parentSelectionPolicyHandler;
189
190 1 1. <init> : Removed assignment to member variable replacementStrategyImplementor → KILLED
		this.replacementStrategyImplementor = _replacementStrategyImplementor;
191 2 1. <init> : removed call to net/bmahe/genetics4j/core/util/GenotypeGenerator::<init> → KILLED
2. <init> : Removed assignment to member variable genotypeGenerator → KILLED
		this.genotypeGenerator = new GenotypeGenerator<>(chromosomeFactoryProvider, eaConfiguration);
192
	}
193
194
	private List<T> evaluate(final long generation, final List<Genotype> population) {
195
		Validate.isTrue(generation >= 0);
196
		Objects.requireNonNull(population);
197
		Validate.isTrue(population.size() > 0);
198
199
		logger.debug("Evaluating population of size {}", population.size());
200 2 1. evaluate : replaced call to net/bmahe/genetics4j/core/evaluation/FitnessEvaluator::evaluate with argument → KILLED
2. evaluate : removed call to net/bmahe/genetics4j/core/evaluation/FitnessEvaluator::evaluate → KILLED
		final List<T> fitnesses = fitnessEvaluator.evaluate(generation, population);
201
202
		logger.debug("Done evaluating population of size {}", population.size());
203 1 1. evaluate : replaced return value with Collections.emptyList for net/bmahe/genetics4j/core/EASystem::evaluate → KILLED
		return fitnesses;
204
	}
205
206
	private List<Genotype> initializePopulation() {
207 1 1. initializePopulation : removed call to net/bmahe/genetics4j/core/spec/AbstractEAExecutionContext::populationSize → KILLED
		final int initialPopulationSize = eaExecutionContext.populationSize();
208
		logger.info("Generating initial population of {} individuals", initialPopulationSize);
209
210 1 1. initializePopulation : removed call to java/util/ArrayList::<init> → KILLED
		final List<Genotype> genotypes = new ArrayList<>(initialPopulationSize);
211
212 1 1. initializePopulation : removed call to net/bmahe/genetics4j/core/spec/AbstractEAConfiguration::seedPopulation → SURVIVED
		final var seedPopulation = eaConfiguration.seedPopulation();
213 4 1. initializePopulation : removed conditional - replaced equality check with true → SURVIVED
2. initializePopulation : negated conditional → SURVIVED
3. initializePopulation : removed call to org/apache/commons/collections4/CollectionUtils::isNotEmpty → SURVIVED
4. initializePopulation : removed conditional - replaced equality check with false → SURVIVED
		if (CollectionUtils.isNotEmpty(seedPopulation)) {
214 1 1. initializePopulation : removed call to java/util/List::addAll → NO_COVERAGE
			genotypes.addAll(seedPopulation);
215
		}
216 5 1. initializePopulation : changed conditional boundary → SURVIVED
2. initializePopulation : removed conditional - replaced comparison check with true → SURVIVED
3. initializePopulation : removed call to java/util/List::size → SURVIVED
4. initializePopulation : removed conditional - replaced comparison check with false → KILLED
5. initializePopulation : negated conditional → KILLED
		if (genotypes.size() < initialPopulationSize) {
217 2 1. initializePopulation : removed call to java/util/List::size → SURVIVED
2. initializePopulation : Replaced integer subtraction with addition → SURVIVED
			final var missingInitialIndividualCount = initialPopulationSize - genotypes.size();
218
			logger.info(
219
					"{} seed individual(s) added and generating {} individuals to reach the target of {} initial population size",
220 2 1. initializePopulation : removed call to java/lang/Integer::valueOf → SURVIVED
2. initializePopulation : removed call to java/util/List::size → SURVIVED
					genotypes.size(),
221 1 1. initializePopulation : removed call to java/lang/Integer::valueOf → SURVIVED
					missingInitialIndividualCount,
222 1 1. initializePopulation : removed call to java/lang/Integer::valueOf → SURVIVED
					initialPopulationSize);
223
224 1 1. initializePopulation : removed call to net/bmahe/genetics4j/core/util/GenotypeGenerator::generateGenotypes → KILLED
			final var extraIndividuals = genotypeGenerator.generateGenotypes(missingInitialIndividualCount);
225 1 1. initializePopulation : removed call to java/util/List::addAll → KILLED
			genotypes.addAll(extraIndividuals);
226
		}
227
228 1 1. initializePopulation : replaced return value with Collections.emptyList for net/bmahe/genetics4j/core/EASystem::initializePopulation → KILLED
		return genotypes;
229
	}
230
231
	private List<Genotype> mutateGenotypes(final List<Genotype> genotypes) {
232
		Objects.requireNonNull(genotypes);
233
234 2 1. mutateGenotypes : removed call to java/util/List::stream → KILLED
2. mutateGenotypes : replaced return value with Collections.emptyList for net/bmahe/genetics4j/core/EASystem::mutateGenotypes → KILLED
		return genotypes.stream()
235 2 1. mutateGenotypes : replaced call to java/util/stream/Stream::map with receiver → SURVIVED
2. mutateGenotypes : removed call to java/util/stream/Stream::map → KILLED
				.map(child -> {
236
					Genotype mutatedChild = child;
237
238
					for (final Mutator mutator : mutators) {
239 2 1. lambda$mutateGenotypes$0 : replaced call to net/bmahe/genetics4j/core/mutation/Mutator::mutate with argument → SURVIVED
2. lambda$mutateGenotypes$0 : removed call to net/bmahe/genetics4j/core/mutation/Mutator::mutate → KILLED
						mutatedChild = mutator.mutate(mutatedChild);
240
					}
241
242 1 1. lambda$mutateGenotypes$0 : replaced return value with null for net/bmahe/genetics4j/core/EASystem::lambda$mutateGenotypes$0 → KILLED
					return mutatedChild;
243
				})
244 1 1. mutateGenotypes : removed call to java/util/stream/Stream::toList → KILLED
				.toList();
245
	}
246
247
	private List<Genotype> combineParents(final Population<T> parents, final GenotypeCombinator genotypeCombinator) {
248
		Objects.requireNonNull(parents);
249
		Objects.requireNonNull(genotypeCombinator);
250
251 1 1. combineParents : removed call to java/util/ArrayList::<init> → KILLED
		final List<Genotype> children = new ArrayList<>();
252 1 1. combineParents : Substituted 0 with 1 → SURVIVED
		int parentIndex = 0;
253 7 1. combineParents : changed conditional boundary → SURVIVED
2. combineParents : Substituted 1 with 0 → SURVIVED
3. combineParents : removed call to net/bmahe/genetics4j/core/Population::size → KILLED
4. combineParents : Replaced integer addition with subtraction → KILLED
5. combineParents : negated conditional → KILLED
6. combineParents : removed conditional - replaced comparison check with true → KILLED
7. combineParents : removed conditional - replaced comparison check with false → KILLED
		while (parentIndex + 1 < parents.size()) {
254 1 1. combineParents : removed call to net/bmahe/genetics4j/core/Population::getGenotype → KILLED
			final Genotype firstParent = parents.getGenotype(parentIndex);
255 1 1. combineParents : removed call to net/bmahe/genetics4j/core/Population::getFitness → SURVIVED
			final T firstParentFitness = parents.getFitness(parentIndex);
256
257 3 1. combineParents : Substituted 1 with 0 → SURVIVED
2. combineParents : removed call to net/bmahe/genetics4j/core/Population::getGenotype → KILLED
3. combineParents : Replaced integer addition with subtraction → KILLED
			final Genotype secondParent = parents.getGenotype(parentIndex + 1);
258 3 1. combineParents : Substituted 1 with 0 → SURVIVED
2. combineParents : removed call to net/bmahe/genetics4j/core/Population::getFitness → SURVIVED
3. combineParents : Replaced integer addition with subtraction → KILLED
			final T secondParentFitness = parents.getFitness(parentIndex + 1);
259
260 1 1. combineParents : removed call to java/util/ArrayList::<init> → KILLED
			final List<List<Chromosome>> chromosomes = new ArrayList<>();
261 6 1. combineParents : removed conditional - replaced comparison check with false → KILLED
2. combineParents : removed call to net/bmahe/genetics4j/core/spec/AbstractEAConfiguration::numChromosomes → KILLED
3. combineParents : Substituted 0 with 1 → KILLED
4. combineParents : changed conditional boundary → KILLED
5. combineParents : negated conditional → KILLED
6. combineParents : removed conditional - replaced comparison check with true → KILLED
			for (int chromosomeIndex = 0; chromosomeIndex < eaConfiguration.numChromosomes(); chromosomeIndex++) {
262
263 1 1. combineParents : removed call to net/bmahe/genetics4j/core/Genotype::getChromosome → KILLED
				final Chromosome firstChromosome = firstParent.getChromosome(chromosomeIndex);
264 1 1. combineParents : removed call to net/bmahe/genetics4j/core/Genotype::getChromosome → KILLED
				final Chromosome secondChromosome = secondParent.getChromosome(chromosomeIndex);
265
266 1 1. combineParents : removed call to java/util/List::get → KILLED
				final List<Chromosome> combinedChromosomes = chromosomeCombinators.get(chromosomeIndex)
267 1 1. combineParents : removed call to net/bmahe/genetics4j/core/combination/ChromosomeCombinator::combine → KILLED
						.combine(eaConfiguration, firstChromosome, firstParentFitness, secondChromosome, secondParentFitness);
268
269 1 1. combineParents : removed call to java/util/List::add → KILLED
				chromosomes.add(combinedChromosomes);
270
				logger.trace("Combining {} with {} ---> {}", firstChromosome, secondChromosome, combinedChromosomes);
271
			}
272
273 2 1. combineParents : replaced call to net/bmahe/genetics4j/core/combination/GenotypeCombinator::combine with argument → KILLED
2. combineParents : removed call to net/bmahe/genetics4j/core/combination/GenotypeCombinator::combine → KILLED
			final List<Genotype> offsprings = genotypeCombinator.combine(eaConfiguration, chromosomes);
274
275 1 1. combineParents : removed call to java/util/List::addAll → KILLED
			children.addAll(offsprings);
276 1 1. combineParents : Changed increment from 2 to -2 → KILLED
			parentIndex += 2;
277
		}
278
279 1 1. combineParents : replaced return value with Collections.emptyList for net/bmahe/genetics4j/core/EASystem::combineParents → KILLED
		return children;
280
	}
281
282
	/**
283
	 * Create offsprings without mutation
284
	 *
285
	 * @param population
286
	 * @param offspringsNeeded
287
	 * @return
288
	 */
289
	private List<Genotype> createBasicOffsprings(final Population<T> population, final int offspringsNeeded) {
290
		Objects.requireNonNull(population);
291
		Validate.isTrue(offspringsNeeded > 0);
292
293 1 1. createBasicOffsprings : removed call to net/bmahe/genetics4j/core/spec/AbstractEAConfiguration::genotypeCombinator → KILLED
		final GenotypeCombinator genotypeCombinator = eaConfiguration.genotypeCombinator();
294
295 2 1. createBasicOffsprings : Substituted 2 with 3 → KILLED
2. createBasicOffsprings : Replaced integer multiplication with division → KILLED
		final int parentsNeeded = (int) (offspringsNeeded * 2);
296
		logger.info("Selecting {} parents as we expect to generate {} offsprings", parentsNeeded, offspringsNeeded);
297
		final Population<T> selectedParents = parentSelector
298 3 1. createBasicOffsprings : removed call to net/bmahe/genetics4j/core/selection/Selector::select → KILLED
2. createBasicOffsprings : removed call to net/bmahe/genetics4j/core/Population::getAllFitnesses → KILLED
3. createBasicOffsprings : removed call to net/bmahe/genetics4j/core/Population::getAllGenotypes → KILLED
				.select(eaConfiguration, parentsNeeded, population.getAllGenotypes(), population.getAllFitnesses());
299
		logger.trace("Selected parents: {}", selectedParents);
300
		Validate.isTrue(selectedParents.size() % 2 == 0);
301
302
		logger.info("Combining parents into offsprings");
303 1 1. createBasicOffsprings : removed call to net/bmahe/genetics4j/core/EASystem::combineParents → KILLED
		final List<Genotype> offsprings = combineParents(selectedParents, genotypeCombinator);
304
305 1 1. createBasicOffsprings : replaced return value with Collections.emptyList for net/bmahe/genetics4j/core/EASystem::createBasicOffsprings → KILLED
		return offsprings;
306
	}
307
308
	/**
309
	 * Gets the evolutionary algorithm configuration used by this system.
310
	 * 
311
	 * @return the EA configuration containing genetic operators, chromosome specs,
312
	 *         and evolutionary parameters
313
	 */
314
	public AbstractEAConfiguration<T> getEAConfiguration() {
315 1 1. getEAConfiguration : replaced return value with null for net/bmahe/genetics4j/core/EASystem::getEAConfiguration → KILLED
		return eaConfiguration;
316
	}
317
318
	/**
319
	 * Gets the target population size for each generation.
320
	 * 
321
	 * @return the population size as configured for this evolutionary system
322
	 */
323
	public long getPopulationSize() {
324 1 1. getPopulationSize : replaced long return with 0 for net/bmahe/genetics4j/core/EASystem::getPopulationSize → KILLED
		return populationSize;
325
	}
326
327
	/**
328
	 * Creates offspring from the given population through selection, crossover, and
329
	 * mutation.
330
	 * 
331
	 * <p>
332
	 * This method orchestrates the reproductive process by:
333
	 * <ol>
334
	 * <li>Selecting parents from the population using the configured selection
335
	 * strategy</li>
336
	 * <li>Applying crossover operations to generate basic offspring</li>
337
	 * <li>Applying mutation operators to introduce genetic variation</li>
338
	 * </ol>
339
	 * 
340
	 * @param population       the current population to select parents from
341
	 * @param offspringsNeeded the number of offspring to generate
342
	 * @return a list of mutated offspring genotypes
343
	 * @throws NullPointerException     if population is null
344
	 * @throws IllegalArgumentException if offspringsNeeded is not positive
345
	 */
346
	public List<Genotype> createOffsprings(final Population<T> population, final int offspringsNeeded) {
347
		Objects.requireNonNull(population);
348
		Validate.isTrue(offspringsNeeded > 0);
349
350 1 1. createOffsprings : removed call to net/bmahe/genetics4j/core/EASystem::createBasicOffsprings → KILLED
		final List<Genotype> offpsrings = createBasicOffsprings(population, offspringsNeeded);
351
		logger.info("Generated {} offsprings", offpsrings.size());
352
353
		logger.info("Mutating offsprigns");
354 2 1. createOffsprings : replaced call to net/bmahe/genetics4j/core/EASystem::mutateGenotypes with argument → SURVIVED
2. createOffsprings : removed call to net/bmahe/genetics4j/core/EASystem::mutateGenotypes → KILLED
		final List<Genotype> mutatedOffsprings = mutateGenotypes(offpsrings);
355
356 1 1. createOffsprings : replaced return value with Collections.emptyList for net/bmahe/genetics4j/core/EASystem::createOffsprings → KILLED
		return mutatedOffsprings;
357
	}
358
359
	/**
360
	 * Executes the complete evolutionary algorithm process until termination
361
	 * criteria are met.
362
	 * 
363
	 * <p>
364
	 * This is the main entry point for running evolution. The method manages the
365
	 * entire
366
	 * evolutionary cycle including:
367
	 * <ul>
368
	 * <li>Initial population generation and evaluation</li>
369
	 * <li>Iterative evolution through selection, reproduction, and replacement</li>
370
	 * <li>Progress monitoring via evolution listeners</li>
371
	 * <li>Termination condition checking</li>
372
	 * </ul>
373
	 * 
374
	 * <p>
375
	 * The evolution process continues until the configured termination criteria
376
	 * (e.g., maximum generations, target fitness, convergence) are satisfied.
377
	 * 
378
	 * @return an EvolutionResult containing the final population, fitness values,
379
	 *         generation count, and configuration details
380
	 * @see Termination
381
	 * @see EvolutionResult
382
	 */
383
	public EvolutionResult<T> evolve() {
384 1 1. evolve : removed call to net/bmahe/genetics4j/core/spec/AbstractEAConfiguration::termination → KILLED
		final Termination<T> termination = eaConfiguration.termination();
385
386
		logger.info("Starting evolution");
387
388 1 1. evolve : removed call to net/bmahe/genetics4j/core/evaluation/FitnessEvaluator::preEvaluation → SURVIVED
		fitnessEvaluator.preEvaluation();
389
390 1 1. evolve : Substituted 0 with 1 → KILLED
		long generation = 0;
391 1 1. evolve : removed call to net/bmahe/genetics4j/core/EASystem::initializePopulation → KILLED
		final List<Genotype> genotypes = initializePopulation();
392
393
		logger.info("Evaluating initial population");
394 2 1. evolve : replaced call to net/bmahe/genetics4j/core/EASystem::evaluate with argument → KILLED
2. evolve : removed call to net/bmahe/genetics4j/core/EASystem::evaluate → KILLED
		final List<T> fitnessScore = evaluate(generation, genotypes);
395
396 1 1. evolve : removed call to net/bmahe/genetics4j/core/spec/AbstractEAConfiguration::postEvaluationProcessor → KILLED
		Population<T> population = eaConfiguration.postEvaluationProcessor()
397 6 1. lambda$evolve$1 : replaced call to java/util/function/Function::apply with argument → SURVIVED
2. lambda$evolve$1 : replaced return value with null for net/bmahe/genetics4j/core/EASystem::lambda$evolve$1 → SURVIVED
3. lambda$evolve$1 : removed call to java/util/function/Function::apply → SURVIVED
4. lambda$evolve$1 : removed call to net/bmahe/genetics4j/core/Population::of → KILLED
5. evolve : removed call to java/util/Optional::map → KILLED
6. evolve : replaced call to java/util/Optional::map with receiver → KILLED
				.map(pep -> pep.apply(Population.of(genotypes, fitnessScore)))
398 3 1. lambda$evolve$2 : removed call to net/bmahe/genetics4j/core/Population::of → KILLED
2. lambda$evolve$2 : replaced return value with null for net/bmahe/genetics4j/core/EASystem::lambda$evolve$2 → KILLED
3. evolve : removed call to java/util/Optional::orElseGet → KILLED
				.orElseGet(() -> Population.of(genotypes, fitnessScore));
399
400
		while (termination
401 6 1. evolve : removed call to net/bmahe/genetics4j/core/Population::getAllGenotypes → SURVIVED
2. evolve : removed call to net/bmahe/genetics4j/core/Population::getAllFitnesses → SURVIVED
3. evolve : removed conditional - replaced equality check with true → TIMED_OUT
4. evolve : removed call to net/bmahe/genetics4j/core/termination/Termination::isDone → TIMED_OUT
5. evolve : removed conditional - replaced equality check with false → KILLED
6. evolve : negated conditional → KILLED
				.isDone(eaConfiguration, generation, population.getAllGenotypes(), population.getAllFitnesses()) == false) {
402
			logger.info("Going through evolution of generation {}", generation);
403
404 1 1. evolve : removed call to net/bmahe/genetics4j/core/spec/AbstractEAExecutionContext::evolutionListeners → KILLED
			for (final EvolutionListener<T> evolutionListener : eaExecutionContext.evolutionListeners()) {
405
				evolutionListener
406 4 1. evolve : removed call to net/bmahe/genetics4j/core/evolutionlisteners/EvolutionListener::onEvolution → NO_COVERAGE
2. evolve : removed call to net/bmahe/genetics4j/core/Population::getAllFitnesses → NO_COVERAGE
3. evolve : Substituted 0 with 1 → NO_COVERAGE
4. evolve : removed call to net/bmahe/genetics4j/core/Population::getAllGenotypes → NO_COVERAGE
						.onEvolution(generation, population.getAllGenotypes(), population.getAllFitnesses(), false);
407
			}
408
409 1 1. evolve : Replaced double multiplication with division → SURVIVED
			final int offspringsNeeded = (int) (populationSize * offspringRatio);
410 1 1. evolve : removed call to net/bmahe/genetics4j/core/EASystem::createOffsprings → KILLED
			final List<Genotype> offsprings = createOffsprings(population, offspringsNeeded);
411
412
			logger.info("Evaluating offsprings");
413 2 1. evolve : replaced call to net/bmahe/genetics4j/core/EASystem::evaluate with argument → KILLED
2. evolve : removed call to net/bmahe/genetics4j/core/EASystem::evaluate → KILLED
			final List<T> offspringScores = evaluate(generation, offsprings);
414
415 1 1. evolve : removed call to net/bmahe/genetics4j/core/spec/AbstractEAConfiguration::postEvaluationProcessor → KILLED
			final Population<T> childrenPopulation = eaConfiguration.postEvaluationProcessor()
416 6 1. lambda$evolve$3 : removed call to java/util/function/Function::apply → SURVIVED
2. lambda$evolve$3 : replaced call to java/util/function/Function::apply with argument → SURVIVED
3. lambda$evolve$3 : replaced return value with null for net/bmahe/genetics4j/core/EASystem::lambda$evolve$3 → SURVIVED
4. evolve : removed call to java/util/Optional::map → KILLED
5. evolve : replaced call to java/util/Optional::map with receiver → KILLED
6. lambda$evolve$3 : removed call to net/bmahe/genetics4j/core/Population::of → KILLED
					.map(pep -> pep.apply(Population.of(offsprings, offspringScores)))
417 3 1. evolve : removed call to java/util/Optional::orElseGet → KILLED
2. lambda$evolve$4 : removed call to net/bmahe/genetics4j/core/Population::of → KILLED
3. lambda$evolve$4 : replaced return value with null for net/bmahe/genetics4j/core/EASystem::lambda$evolve$4 → KILLED
					.orElseGet(() -> Population.of(offsprings, offspringScores));
418
419
			logger.info("Executing replacement strategy");
420 1 1. evolve : removed call to net/bmahe/genetics4j/core/spec/AbstractEAExecutionContext::populationSize → KILLED
			final int nextGenerationPopulationSize = eaExecutionContext.populationSize();
421 1 1. evolve : removed call to net/bmahe/genetics4j/core/replacement/ReplacementStrategyImplementor::select → KILLED
			final Population<T> newPopulation = replacementStrategyImplementor.select(eaConfiguration,
422
					nextGenerationPopulationSize,
423 1 1. evolve : removed call to net/bmahe/genetics4j/core/Population::getAllGenotypes → KILLED
					population.getAllGenotypes(),
424 1 1. evolve : removed call to net/bmahe/genetics4j/core/Population::getAllFitnesses → KILLED
					population.getAllFitnesses(),
425 1 1. evolve : removed call to net/bmahe/genetics4j/core/Population::getAllGenotypes → KILLED
					childrenPopulation.getAllGenotypes(),
426 1 1. evolve : removed call to net/bmahe/genetics4j/core/Population::getAllFitnesses → KILLED
					childrenPopulation.getAllFitnesses());
427
428 5 1. evolve : removed conditional - replaced comparison check with false → SURVIVED
2. evolve : removed call to net/bmahe/genetics4j/core/Population::size → KILLED
3. evolve : changed conditional boundary → KILLED
4. evolve : negated conditional → KILLED
5. evolve : removed conditional - replaced comparison check with true → KILLED
			if (newPopulation.size() < nextGenerationPopulationSize) {
429
				logger.info("New population only has {} members. Generating more individuals", newPopulation.size());
430
				final List<Genotype> additionalIndividuals = genotypeGenerator
431 3 1. evolve : Replaced integer subtraction with addition → NO_COVERAGE
2. evolve : removed call to net/bmahe/genetics4j/core/util/GenotypeGenerator::generateGenotypes → NO_COVERAGE
3. evolve : removed call to net/bmahe/genetics4j/core/Population::size → NO_COVERAGE
						.generateGenotypes(nextGenerationPopulationSize - newPopulation.size());
432
				logger.debug("Number of generated individuals: {}", additionalIndividuals.size());
433
434 5 1. evolve : removed conditional - replaced comparison check with false → NO_COVERAGE
2. evolve : changed conditional boundary → NO_COVERAGE
3. evolve : negated conditional → NO_COVERAGE
4. evolve : removed conditional - replaced comparison check with true → NO_COVERAGE
5. evolve : removed call to java/util/List::size → NO_COVERAGE
				if (additionalIndividuals.size() > 0) {
435
436 2 1. evolve : removed call to net/bmahe/genetics4j/core/EASystem::evaluate → NO_COVERAGE
2. evolve : replaced call to net/bmahe/genetics4j/core/EASystem::evaluate with argument → NO_COVERAGE
					final List<T> additionalFitness = evaluate(generation, additionalIndividuals);
437 2 1. evolve : removed call to net/bmahe/genetics4j/core/Population::of → NO_COVERAGE
2. evolve : removed call to net/bmahe/genetics4j/core/Population::addAll → NO_COVERAGE
					newPopulation.addAll(Population.of(additionalIndividuals, additionalFitness));
438
				}
439
			}
440
441
			if (logger.isTraceEnabled()) {
442
				logger.trace("[Generation {}] New population: {}", generation, Arrays.asList(newPopulation));
443
			}
444
			population = newPopulation;
445 2 1. evolve : Replaced long addition with subtraction → KILLED
2. evolve : Substituted 1 with 2 → KILLED
			generation++;
446
		}
447
448
		logger.info("Evolution has terminated");
449
450
		// isDone has returned true and we want to let the evolutionListeners run a last
451
		// time
452 1 1. evolve : removed call to net/bmahe/genetics4j/core/spec/AbstractEAExecutionContext::evolutionListeners → KILLED
		for (final EvolutionListener<T> evolutionListener : eaExecutionContext.evolutionListeners()) {
453 4 1. evolve : removed call to net/bmahe/genetics4j/core/Population::getAllFitnesses → NO_COVERAGE
2. evolve : removed call to net/bmahe/genetics4j/core/Population::getAllGenotypes → NO_COVERAGE
3. evolve : Substituted 1 with 0 → NO_COVERAGE
4. evolve : removed call to net/bmahe/genetics4j/core/evolutionlisteners/EvolutionListener::onEvolution → NO_COVERAGE
			evolutionListener.onEvolution(generation, population.getAllGenotypes(), population.getAllFitnesses(), true);
454
		}
455
456 1 1. evolve : removed call to net/bmahe/genetics4j/core/evaluation/FitnessEvaluator::postEvaluation → SURVIVED
		fitnessEvaluator.postEvaluation();
457
458 1 1. evolve : replaced return value with null for net/bmahe/genetics4j/core/EASystem::evolve → KILLED
		return ImmutableEvolutionResult
459 3 1. evolve : removed call to net/bmahe/genetics4j/core/Population::getAllGenotypes → KILLED
2. evolve : removed call to net/bmahe/genetics4j/core/spec/ImmutableEvolutionResult::of → KILLED
3. evolve : removed call to net/bmahe/genetics4j/core/Population::getAllFitnesses → KILLED
				.of(eaConfiguration, generation, population.getAllGenotypes(), population.getAllFitnesses());
460
	}
461
462
	/**
463
	 * Evaluates a collection of genotypes once without running the full
464
	 * evolutionary process.
465
	 * 
466
	 * <p>
467
	 * This method provides a way to evaluate genotypes using the configured fitness
468
	 * evaluator
469
	 * without executing the complete evolutionary algorithm. It handles the
470
	 * pre/post evaluation
471
	 * lifecycle and notifies evolution listeners of the results.
472
	 * 
473
	 * <p>
474
	 * Useful for:
475
	 * <ul>
476
	 * <li>Testing fitness functions with specific genotypes</li>
477
	 * <li>Evaluating externally generated populations</li>
478
	 * <li>Batch evaluation scenarios</li>
479
	 * </ul>
480
	 * 
481
	 * @param generation the generation number for logging and listener notification
482
	 * @param genotypes  the list of genotypes to evaluate
483
	 * @return a list of fitness values corresponding to the input genotypes
484
	 * @throws IllegalArgumentException if generation is negative or genotypes is
485
	 *                                  empty
486
	 * @throws NullPointerException     if genotypes is null
487
	 */
488
	public List<T> evaluateOnce(final long generation, final List<Genotype> genotypes) {
489
		Validate.isTrue(generation >= 0);
490
		Objects.requireNonNull(genotypes);
491
		Validate.isTrue(genotypes.size() > 0);
492
493 1 1. evaluateOnce : removed call to net/bmahe/genetics4j/core/evaluation/FitnessEvaluator::preEvaluation → SURVIVED
		fitnessEvaluator.preEvaluation();
494 2 1. evaluateOnce : replaced call to net/bmahe/genetics4j/core/EASystem::evaluate with argument → KILLED
2. evaluateOnce : removed call to net/bmahe/genetics4j/core/EASystem::evaluate → KILLED
		final var fitness = evaluate(generation, genotypes);
495
496 1 1. evaluateOnce : removed call to net/bmahe/genetics4j/core/Population::of → SURVIVED
		final var population = Population.of(genotypes, fitness);
497 1 1. evaluateOnce : removed call to net/bmahe/genetics4j/core/spec/AbstractEAExecutionContext::evolutionListeners → KILLED
		for (final EvolutionListener<T> evolutionListener : eaExecutionContext.evolutionListeners()) {
498 4 1. evaluateOnce : removed call to net/bmahe/genetics4j/core/Population::getAllGenotypes → NO_COVERAGE
2. evaluateOnce : removed call to net/bmahe/genetics4j/core/Population::getAllFitnesses → NO_COVERAGE
3. evaluateOnce : removed call to net/bmahe/genetics4j/core/evolutionlisteners/EvolutionListener::onEvolution → NO_COVERAGE
4. evaluateOnce : Substituted 1 with 0 → NO_COVERAGE
			evolutionListener.onEvolution(generation, population.getAllGenotypes(), population.getAllFitnesses(), true);
499
		}
500
501 1 1. evaluateOnce : removed call to net/bmahe/genetics4j/core/evaluation/FitnessEvaluator::postEvaluation → SURVIVED
		fitnessEvaluator.postEvaluation();
502
503 1 1. evaluateOnce : replaced return value with Collections.emptyList for net/bmahe/genetics4j/core/EASystem::evaluateOnce → KILLED
		return fitness;
504
	}
505
}

Mutations

179

1.1
Location : <init>
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testGetterMethods()]
Removed assignment to member variable eaConfiguration → KILLED

180

1.1
Location : <init>
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvaluateOnce()]
Removed assignment to member variable eaExecutionContext → KILLED

181

1.1
Location : <init>
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testGetterMethods()]
Removed assignment to member variable populationSize → KILLED

182

1.1
Location : <init>
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
Removed assignment to member variable chromosomeCombinators → KILLED

183

1.1
Location : <init>
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
Removed assignment to member variable offspringRatio → KILLED

184

1.1
Location : <init>
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
Removed assignment to member variable mutators → KILLED

185

1.1
Location : <init>
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testGetterMethods()]
removed call to net/bmahe/genetics4j/core/spec/AbstractEAExecutionContext::chromosomeFactoryProvider → KILLED

2.2
Location : <init>
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testGetterMethods()]
Removed assignment to member variable chromosomeFactoryProvider → KILLED

186

1.1
Location : <init>
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvaluateOnce()]
Removed assignment to member variable fitnessEvaluator → KILLED

188

1.1
Location : <init>
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
Removed assignment to member variable parentSelector → KILLED

190

1.1
Location : <init>
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
Removed assignment to member variable replacementStrategyImplementor → KILLED

191

1.1
Location : <init>
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to net/bmahe/genetics4j/core/util/GenotypeGenerator::<init> → KILLED

2.2
Location : <init>
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
Removed assignment to member variable genotypeGenerator → KILLED

200

1.1
Location : evaluate
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvaluateOnce()]
replaced call to net/bmahe/genetics4j/core/evaluation/FitnessEvaluator::evaluate with argument → KILLED

2.2
Location : evaluate
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvaluateOnce()]
removed call to net/bmahe/genetics4j/core/evaluation/FitnessEvaluator::evaluate → KILLED

203

1.1
Location : evaluate
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvaluateOnce()]
replaced return value with Collections.emptyList for net/bmahe/genetics4j/core/EASystem::evaluate → KILLED

207

1.1
Location : initializePopulation
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to net/bmahe/genetics4j/core/spec/AbstractEAExecutionContext::populationSize → KILLED

210

1.1
Location : initializePopulation
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to java/util/ArrayList::<init> → KILLED

212

1.1
Location : initializePopulation
Killed by : none
removed call to net/bmahe/genetics4j/core/spec/AbstractEAConfiguration::seedPopulation → SURVIVED
Covering tests

213

1.1
Location : initializePopulation
Killed by : none
removed conditional - replaced equality check with true → SURVIVED
Covering tests

2.2
Location : initializePopulation
Killed by : none
negated conditional → SURVIVED Covering tests

3.3
Location : initializePopulation
Killed by : none
removed call to org/apache/commons/collections4/CollectionUtils::isNotEmpty → SURVIVED Covering tests

4.4
Location : initializePopulation
Killed by : none
removed conditional - replaced equality check with false → SURVIVED Covering tests

214

1.1
Location : initializePopulation
Killed by : none
removed call to java/util/List::addAll → NO_COVERAGE

216

1.1
Location : initializePopulation
Killed by : none
changed conditional boundary → SURVIVED
Covering tests

2.2
Location : initializePopulation
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed conditional - replaced comparison check with false → KILLED

3.3
Location : initializePopulation
Killed by : none
removed conditional - replaced comparison check with true → SURVIVED Covering tests

4.4
Location : initializePopulation
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
negated conditional → KILLED

5.5
Location : initializePopulation
Killed by : none
removed call to java/util/List::size → SURVIVED Covering tests

217

1.1
Location : initializePopulation
Killed by : none
removed call to java/util/List::size → SURVIVED
Covering tests

2.2
Location : initializePopulation
Killed by : none
Replaced integer subtraction with addition → SURVIVED Covering tests

220

1.1
Location : initializePopulation
Killed by : none
removed call to java/lang/Integer::valueOf → SURVIVED
Covering tests

2.2
Location : initializePopulation
Killed by : none
removed call to java/util/List::size → SURVIVED Covering tests

221

1.1
Location : initializePopulation
Killed by : none
removed call to java/lang/Integer::valueOf → SURVIVED
Covering tests

222

1.1
Location : initializePopulation
Killed by : none
removed call to java/lang/Integer::valueOf → SURVIVED
Covering tests

224

1.1
Location : initializePopulation
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to net/bmahe/genetics4j/core/util/GenotypeGenerator::generateGenotypes → KILLED

225

1.1
Location : initializePopulation
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to java/util/List::addAll → KILLED

228

1.1
Location : initializePopulation
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
replaced return value with Collections.emptyList for net/bmahe/genetics4j/core/EASystem::initializePopulation → KILLED

234

1.1
Location : mutateGenotypes
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to java/util/List::stream → KILLED

2.2
Location : mutateGenotypes
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
replaced return value with Collections.emptyList for net/bmahe/genetics4j/core/EASystem::mutateGenotypes → KILLED

235

1.1
Location : mutateGenotypes
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to java/util/stream/Stream::map → KILLED

2.2
Location : mutateGenotypes
Killed by : none
replaced call to java/util/stream/Stream::map with receiver → SURVIVED
Covering tests

239

1.1
Location : lambda$mutateGenotypes$0
Killed by : none
replaced call to net/bmahe/genetics4j/core/mutation/Mutator::mutate with argument → SURVIVED
Covering tests

2.2
Location : lambda$mutateGenotypes$0
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to net/bmahe/genetics4j/core/mutation/Mutator::mutate → KILLED

242

1.1
Location : lambda$mutateGenotypes$0
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
replaced return value with null for net/bmahe/genetics4j/core/EASystem::lambda$mutateGenotypes$0 → KILLED

244

1.1
Location : mutateGenotypes
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to java/util/stream/Stream::toList → KILLED

251

1.1
Location : combineParents
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to java/util/ArrayList::<init> → KILLED

252

1.1
Location : combineParents
Killed by : none
Substituted 0 with 1 → SURVIVED
Covering tests

253

1.1
Location : combineParents
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to net/bmahe/genetics4j/core/Population::size → KILLED

2.2
Location : combineParents
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
Replaced integer addition with subtraction → KILLED

3.3
Location : combineParents
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
negated conditional → KILLED

4.4
Location : combineParents
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed conditional - replaced comparison check with true → KILLED

5.5
Location : combineParents
Killed by : none
changed conditional boundary → SURVIVED
Covering tests

6.6
Location : combineParents
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed conditional - replaced comparison check with false → KILLED

7.7
Location : combineParents
Killed by : none
Substituted 1 with 0 → SURVIVED Covering tests

254

1.1
Location : combineParents
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to net/bmahe/genetics4j/core/Population::getGenotype → KILLED

255

1.1
Location : combineParents
Killed by : none
removed call to net/bmahe/genetics4j/core/Population::getFitness → SURVIVED
Covering tests

257

1.1
Location : combineParents
Killed by : none
Substituted 1 with 0 → SURVIVED
Covering tests

2.2
Location : combineParents
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to net/bmahe/genetics4j/core/Population::getGenotype → KILLED

3.3
Location : combineParents
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
Replaced integer addition with subtraction → KILLED

258

1.1
Location : combineParents
Killed by : none
Substituted 1 with 0 → SURVIVED
Covering tests

2.2
Location : combineParents
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
Replaced integer addition with subtraction → KILLED

3.3
Location : combineParents
Killed by : none
removed call to net/bmahe/genetics4j/core/Population::getFitness → SURVIVED Covering tests

260

1.1
Location : combineParents
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to java/util/ArrayList::<init> → KILLED

261

1.1
Location : combineParents
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed conditional - replaced comparison check with false → KILLED

2.2
Location : combineParents
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to net/bmahe/genetics4j/core/spec/AbstractEAConfiguration::numChromosomes → KILLED

3.3
Location : combineParents
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
Substituted 0 with 1 → KILLED

4.4
Location : combineParents
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
changed conditional boundary → KILLED

5.5
Location : combineParents
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
negated conditional → KILLED

6.6
Location : combineParents
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed conditional - replaced comparison check with true → KILLED

263

1.1
Location : combineParents
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to net/bmahe/genetics4j/core/Genotype::getChromosome → KILLED

264

1.1
Location : combineParents
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to net/bmahe/genetics4j/core/Genotype::getChromosome → KILLED

266

1.1
Location : combineParents
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to java/util/List::get → KILLED

267

1.1
Location : combineParents
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to net/bmahe/genetics4j/core/combination/ChromosomeCombinator::combine → KILLED

269

1.1
Location : combineParents
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to java/util/List::add → KILLED

273

1.1
Location : combineParents
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
replaced call to net/bmahe/genetics4j/core/combination/GenotypeCombinator::combine with argument → KILLED

2.2
Location : combineParents
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to net/bmahe/genetics4j/core/combination/GenotypeCombinator::combine → KILLED

275

1.1
Location : combineParents
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to java/util/List::addAll → KILLED

276

1.1
Location : combineParents
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
Changed increment from 2 to -2 → KILLED

279

1.1
Location : combineParents
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
replaced return value with Collections.emptyList for net/bmahe/genetics4j/core/EASystem::combineParents → KILLED

293

1.1
Location : createBasicOffsprings
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to net/bmahe/genetics4j/core/spec/AbstractEAConfiguration::genotypeCombinator → KILLED

295

1.1
Location : createBasicOffsprings
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithIntChromosome()]
Substituted 2 with 3 → KILLED

2.2
Location : createBasicOffsprings
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
Replaced integer multiplication with division → KILLED

298

1.1
Location : createBasicOffsprings
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to net/bmahe/genetics4j/core/selection/Selector::select → KILLED

2.2
Location : createBasicOffsprings
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to net/bmahe/genetics4j/core/Population::getAllFitnesses → KILLED

3.3
Location : createBasicOffsprings
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to net/bmahe/genetics4j/core/Population::getAllGenotypes → KILLED

303

1.1
Location : createBasicOffsprings
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to net/bmahe/genetics4j/core/EASystem::combineParents → KILLED

305

1.1
Location : createBasicOffsprings
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
replaced return value with Collections.emptyList for net/bmahe/genetics4j/core/EASystem::createBasicOffsprings → KILLED

315

1.1
Location : getEAConfiguration
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testGetterMethods()]
replaced return value with null for net/bmahe/genetics4j/core/EASystem::getEAConfiguration → KILLED

324

1.1
Location : getPopulationSize
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testGetterMethods()]
replaced long return with 0 for net/bmahe/genetics4j/core/EASystem::getPopulationSize → KILLED

350

1.1
Location : createOffsprings
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to net/bmahe/genetics4j/core/EASystem::createBasicOffsprings → KILLED

354

1.1
Location : createOffsprings
Killed by : none
replaced call to net/bmahe/genetics4j/core/EASystem::mutateGenotypes with argument → SURVIVED
Covering tests

2.2
Location : createOffsprings
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to net/bmahe/genetics4j/core/EASystem::mutateGenotypes → KILLED

356

1.1
Location : createOffsprings
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
replaced return value with Collections.emptyList for net/bmahe/genetics4j/core/EASystem::createOffsprings → KILLED

384

1.1
Location : evolve
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to net/bmahe/genetics4j/core/spec/AbstractEAConfiguration::termination → KILLED

388

1.1
Location : evolve
Killed by : none
removed call to net/bmahe/genetics4j/core/evaluation/FitnessEvaluator::preEvaluation → SURVIVED
Covering tests

390

1.1
Location : evolve
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithImmediateTermination()]
Substituted 0 with 1 → KILLED

391

1.1
Location : evolve
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to net/bmahe/genetics4j/core/EASystem::initializePopulation → KILLED

394

1.1
Location : evolve
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
replaced call to net/bmahe/genetics4j/core/EASystem::evaluate with argument → KILLED

2.2
Location : evolve
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to net/bmahe/genetics4j/core/EASystem::evaluate → KILLED

396

1.1
Location : evolve
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to net/bmahe/genetics4j/core/spec/AbstractEAConfiguration::postEvaluationProcessor → KILLED

397

1.1
Location : lambda$evolve$1
Killed by : none
replaced call to java/util/function/Function::apply with argument → SURVIVED
Covering tests

2.2
Location : lambda$evolve$1
Killed by : none
replaced return value with null for net/bmahe/genetics4j/core/EASystem::lambda$evolve$1 → SURVIVED Covering tests

3.3
Location : lambda$evolve$1
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to net/bmahe/genetics4j/core/Population::of → KILLED

4.4
Location : evolve
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to java/util/Optional::map → KILLED

5.5
Location : lambda$evolve$1
Killed by : none
removed call to java/util/function/Function::apply → SURVIVED Covering tests

6.6
Location : evolve
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
replaced call to java/util/Optional::map with receiver → KILLED

398

1.1
Location : lambda$evolve$2
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithIntChromosome()]
removed call to net/bmahe/genetics4j/core/Population::of → KILLED

2.2
Location : lambda$evolve$2
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithIntChromosome()]
replaced return value with null for net/bmahe/genetics4j/core/EASystem::lambda$evolve$2 → KILLED

3.3
Location : evolve
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to java/util/Optional::orElseGet → KILLED

401

1.1
Location : evolve
Killed by : none
removed conditional - replaced equality check with true → TIMED_OUT

2.2
Location : evolve
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed conditional - replaced equality check with false → KILLED

3.3
Location : evolve
Killed by : none
removed call to net/bmahe/genetics4j/core/Population::getAllGenotypes → SURVIVED
Covering tests

4.4
Location : evolve
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
negated conditional → KILLED

5.5
Location : evolve
Killed by : none
removed call to net/bmahe/genetics4j/core/termination/Termination::isDone → TIMED_OUT

6.6
Location : evolve
Killed by : none
removed call to net/bmahe/genetics4j/core/Population::getAllFitnesses → SURVIVED Covering tests

404

1.1
Location : evolve
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to net/bmahe/genetics4j/core/spec/AbstractEAExecutionContext::evolutionListeners → KILLED

406

1.1
Location : evolve
Killed by : none
removed call to net/bmahe/genetics4j/core/evolutionlisteners/EvolutionListener::onEvolution → NO_COVERAGE

2.2
Location : evolve
Killed by : none
removed call to net/bmahe/genetics4j/core/Population::getAllFitnesses → NO_COVERAGE

3.3
Location : evolve
Killed by : none
Substituted 0 with 1 → NO_COVERAGE

4.4
Location : evolve
Killed by : none
removed call to net/bmahe/genetics4j/core/Population::getAllGenotypes → NO_COVERAGE

409

1.1
Location : evolve
Killed by : none
Replaced double multiplication with division → SURVIVED
Covering tests

410

1.1
Location : evolve
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to net/bmahe/genetics4j/core/EASystem::createOffsprings → KILLED

413

1.1
Location : evolve
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
replaced call to net/bmahe/genetics4j/core/EASystem::evaluate with argument → KILLED

2.2
Location : evolve
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to net/bmahe/genetics4j/core/EASystem::evaluate → KILLED

415

1.1
Location : evolve
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to net/bmahe/genetics4j/core/spec/AbstractEAConfiguration::postEvaluationProcessor → KILLED

416

1.1
Location : lambda$evolve$3
Killed by : none
removed call to java/util/function/Function::apply → SURVIVED
Covering tests

2.2
Location : evolve
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to java/util/Optional::map → KILLED

3.3
Location : evolve
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
replaced call to java/util/Optional::map with receiver → KILLED

4.4
Location : lambda$evolve$3
Killed by : none
replaced call to java/util/function/Function::apply with argument → SURVIVED Covering tests

5.5
Location : lambda$evolve$3
Killed by : none
replaced return value with null for net/bmahe/genetics4j/core/EASystem::lambda$evolve$3 → SURVIVED Covering tests

6.6
Location : lambda$evolve$3
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to net/bmahe/genetics4j/core/Population::of → KILLED

417

1.1
Location : evolve
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to java/util/Optional::orElseGet → KILLED

2.2
Location : lambda$evolve$4
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithIntChromosome()]
removed call to net/bmahe/genetics4j/core/Population::of → KILLED

3.3
Location : lambda$evolve$4
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithIntChromosome()]
replaced return value with null for net/bmahe/genetics4j/core/EASystem::lambda$evolve$4 → KILLED

420

1.1
Location : evolve
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to net/bmahe/genetics4j/core/spec/AbstractEAExecutionContext::populationSize → KILLED

421

1.1
Location : evolve
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to net/bmahe/genetics4j/core/replacement/ReplacementStrategyImplementor::select → KILLED

423

1.1
Location : evolve
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to net/bmahe/genetics4j/core/Population::getAllGenotypes → KILLED

424

1.1
Location : evolve
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to net/bmahe/genetics4j/core/Population::getAllFitnesses → KILLED

425

1.1
Location : evolve
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to net/bmahe/genetics4j/core/Population::getAllGenotypes → KILLED

426

1.1
Location : evolve
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to net/bmahe/genetics4j/core/Population::getAllFitnesses → KILLED

428

1.1
Location : evolve
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to net/bmahe/genetics4j/core/Population::size → KILLED

2.2
Location : evolve
Killed by : none
removed conditional - replaced comparison check with false → SURVIVED
Covering tests

3.3
Location : evolve
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
changed conditional boundary → KILLED

4.4
Location : evolve
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
negated conditional → KILLED

5.5
Location : evolve
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed conditional - replaced comparison check with true → KILLED

431

1.1
Location : evolve
Killed by : none
Replaced integer subtraction with addition → NO_COVERAGE

2.2
Location : evolve
Killed by : none
removed call to net/bmahe/genetics4j/core/util/GenotypeGenerator::generateGenotypes → NO_COVERAGE

3.3
Location : evolve
Killed by : none
removed call to net/bmahe/genetics4j/core/Population::size → NO_COVERAGE

434

1.1
Location : evolve
Killed by : none
removed conditional - replaced comparison check with false → NO_COVERAGE

2.2
Location : evolve
Killed by : none
changed conditional boundary → NO_COVERAGE

3.3
Location : evolve
Killed by : none
negated conditional → NO_COVERAGE

4.4
Location : evolve
Killed by : none
removed conditional - replaced comparison check with true → NO_COVERAGE

5.5
Location : evolve
Killed by : none
removed call to java/util/List::size → NO_COVERAGE

436

1.1
Location : evolve
Killed by : none
removed call to net/bmahe/genetics4j/core/EASystem::evaluate → NO_COVERAGE

2.2
Location : evolve
Killed by : none
replaced call to net/bmahe/genetics4j/core/EASystem::evaluate with argument → NO_COVERAGE

437

1.1
Location : evolve
Killed by : none
removed call to net/bmahe/genetics4j/core/Population::of → NO_COVERAGE

2.2
Location : evolve
Killed by : none
removed call to net/bmahe/genetics4j/core/Population::addAll → NO_COVERAGE

445

1.1
Location : evolve
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
Replaced long addition with subtraction → KILLED

2.2
Location : evolve
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithBitChromosome()]
Substituted 1 with 2 → KILLED

452

1.1
Location : evolve
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to net/bmahe/genetics4j/core/spec/AbstractEAExecutionContext::evolutionListeners → KILLED

453

1.1
Location : evolve
Killed by : none
removed call to net/bmahe/genetics4j/core/Population::getAllFitnesses → NO_COVERAGE

2.2
Location : evolve
Killed by : none
removed call to net/bmahe/genetics4j/core/Population::getAllGenotypes → NO_COVERAGE

3.3
Location : evolve
Killed by : none
Substituted 1 with 0 → NO_COVERAGE

4.4
Location : evolve
Killed by : none
removed call to net/bmahe/genetics4j/core/evolutionlisteners/EvolutionListener::onEvolution → NO_COVERAGE

456

1.1
Location : evolve
Killed by : none
removed call to net/bmahe/genetics4j/core/evaluation/FitnessEvaluator::postEvaluation → SURVIVED
Covering tests

458

1.1
Location : evolve
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
replaced return value with null for net/bmahe/genetics4j/core/EASystem::evolve → KILLED

459

1.1
Location : evolve
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to net/bmahe/genetics4j/core/Population::getAllGenotypes → KILLED

2.2
Location : evolve
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to net/bmahe/genetics4j/core/spec/ImmutableEvolutionResult::of → KILLED

3.3
Location : evolve
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithPostEvaluationProcessor()]
removed call to net/bmahe/genetics4j/core/Population::getAllFitnesses → KILLED

493

1.1
Location : evaluateOnce
Killed by : none
removed call to net/bmahe/genetics4j/core/evaluation/FitnessEvaluator::preEvaluation → SURVIVED
Covering tests

494

1.1
Location : evaluateOnce
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvaluateOnce()]
replaced call to net/bmahe/genetics4j/core/EASystem::evaluate with argument → KILLED

2.2
Location : evaluateOnce
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvaluateOnce()]
removed call to net/bmahe/genetics4j/core/EASystem::evaluate → KILLED

496

1.1
Location : evaluateOnce
Killed by : none
removed call to net/bmahe/genetics4j/core/Population::of → SURVIVED
Covering tests

497

1.1
Location : evaluateOnce
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvaluateOnce()]
removed call to net/bmahe/genetics4j/core/spec/AbstractEAExecutionContext::evolutionListeners → KILLED

498

1.1
Location : evaluateOnce
Killed by : none
removed call to net/bmahe/genetics4j/core/Population::getAllGenotypes → NO_COVERAGE

2.2
Location : evaluateOnce
Killed by : none
removed call to net/bmahe/genetics4j/core/Population::getAllFitnesses → NO_COVERAGE

3.3
Location : evaluateOnce
Killed by : none
removed call to net/bmahe/genetics4j/core/evolutionlisteners/EvolutionListener::onEvolution → NO_COVERAGE

4.4
Location : evaluateOnce
Killed by : none
Substituted 1 with 0 → NO_COVERAGE

501

1.1
Location : evaluateOnce
Killed by : none
removed call to net/bmahe/genetics4j/core/evaluation/FitnessEvaluator::postEvaluation → SURVIVED
Covering tests

503

1.1
Location : evaluateOnce
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvaluateOnce()]
replaced return value with Collections.emptyList for net/bmahe/genetics4j/core/EASystem::evaluateOnce → KILLED

Active mutators

Tests examined


Report generated by PIT 1.19.6