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

Mutations

152

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

153

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

154

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

155

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

156

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

157

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

158

1.1
Location : <init>
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testSystemConstruction()]
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:testSystemConstruction()]
Removed assignment to member variable chromosomeFactoryProvider → KILLED

159

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

161

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

163

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

164

1.1
Location : <init>
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/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:testEvolveWithIntChromosome()]
Removed assignment to member variable genotypeGenerator → KILLED

173

1.1
Location : evaluate
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvaluateOnceWithDifferentGenerations()]
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:testEvaluateOnceWithDifferentGenerations()]
removed call to net/bmahe/genetics4j/core/evaluation/FitnessEvaluator::evaluate → KILLED

176

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

180

1.1
Location : initializePopulation
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/spec/AbstractEAExecutionContext::populationSize → KILLED

183

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

185

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

186

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

187

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

189

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:testEvolveWithIntChromosome()]
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:testEvolveWithIntChromosome()]
negated conditional → KILLED

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

190

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

193

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

194

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

195

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

197

1.1
Location : initializePopulation
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/util/GenotypeGenerator::generateGenotypes → KILLED

198

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

201

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

208

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

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

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

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

212

1.1
Location : lambda$mutateGenotypes$0
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/mutation/Mutator::mutate → KILLED

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

215

1.1
Location : lambda$mutateGenotypes$0
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$mutateGenotypes$0 → KILLED

216

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

223

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

2.2
Location : combineParents
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithIntChromosome()]
removed call to java/util/stream/IntStream::parallel → KILLED

3.3
Location : combineParents
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithIntChromosome()]
removed call to java/util/stream/IntStream::range → KILLED

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

5.5
Location : combineParents
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithIntChromosome()]
removed call to java/util/stream/Stream::flatMap → KILLED

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

7.7
Location : combineParents
Killed by : none
replaced call to java/util/stream/IntStream::parallel with receiver → SURVIVED Covering tests

8.8
Location : combineParents
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::size → KILLED

9.9
Location : combineParents
Killed by : none
Substituted 2 with 3 → SURVIVED Covering tests

10.10
Location : combineParents
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithIntChromosome()]
replaced call to java/util/stream/Stream::flatMap with receiver → KILLED

224

1.1
Location : lambda$combineParents$1
Killed by : none
removed call to java/lang/Integer::intValue → SURVIVED
Covering tests

2.2
Location : lambda$combineParents$1
Killed by : none
Replaced integer multiplication with division → SURVIVED Covering tests

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

225

1.1
Location : lambda$combineParents$1
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::getGenotype → KILLED

226

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

228

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

2.2
Location : lambda$combineParents$1
Killed by : none
Substituted 1 with 0 → SURVIVED
Covering tests

229

1.1
Location : lambda$combineParents$1
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::getGenotype → KILLED

230

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

232

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

233

1.1
Location : lambda$combineParents$1
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/spec/AbstractEAConfiguration::numChromosomes → KILLED

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

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

4.4
Location : lambda$combineParents$1
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithIntChromosome()]
negated conditional → KILLED

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

6.6
Location : lambda$combineParents$1
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithIntChromosome()]
changed conditional boundary → KILLED

235

1.1
Location : lambda$combineParents$1
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/Genotype::getChromosome → KILLED

236

1.1
Location : lambda$combineParents$1
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/Genotype::getChromosome → KILLED

238

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

239

1.1
Location : lambda$combineParents$1
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/combination/ChromosomeCombinator::combine → KILLED

241

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

245

1.1
Location : lambda$combineParents$1
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/combination/GenotypeCombinator::combine → KILLED

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

246

1.1
Location : lambda$combineParents$1
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithIntChromosome()]
replaced return value with Stream.empty for net/bmahe/genetics4j/core/EASystem::lambda$combineParents$1 → KILLED

2.2
Location : lambda$combineParents$1
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithIntChromosome()]
removed call to java/util/List::stream → KILLED

247

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

249

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

265

1.1
Location : createBasicOffsprings
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/spec/AbstractEAConfiguration::genotypeCombinator → KILLED

267

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

2.2
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

269

1.1
Location : createBasicOffsprings
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/selection/Selector::select → KILLED

273

1.1
Location : createBasicOffsprings
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::getAllGenotypes → KILLED

274

1.1
Location : createBasicOffsprings
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::getAllFitnesses → KILLED

279

1.1
Location : createBasicOffsprings
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/EASystem::combineParents → KILLED

281

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

290

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

299

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

324

1.1
Location : createOffsprings
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/EASystem::createBasicOffsprings → KILLED

328

1.1
Location : createOffsprings
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/EASystem::mutateGenotypes → KILLED

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

330

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

353

1.1
Location : evolve
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/spec/AbstractEAConfiguration::termination → KILLED

357

1.1
Location : evolve
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/spec/AbstractEAConfiguration::postEvaluationProcessor → KILLED

358

1.1
Location : evolve
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/spec/AbstractEAExecutionContext::evolutionListeners → KILLED

360

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

361

1.1
Location : lambda$evolve$2
Killed by : none
removed call to net/bmahe/genetics4j/core/evolutionlisteners/EvolutionListener::preEvaluation → NO_COVERAGE

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

363

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

364

1.1
Location : evolve
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/EASystem::initializePopulation → KILLED

367

1.1
Location : evolve
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithIntChromosome()]
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:testEvolveWithIntChromosome()]
removed call to net/bmahe/genetics4j/core/EASystem::evaluate → KILLED

368

1.1
Location : evolve
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

370

1.1
Location : lambda$evolve$3
Killed by : none
Substituted 0 with 1 → SURVIVED
Covering tests

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

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

4.4
Location : lambda$evolve$3
Killed by : none
removed call to net/bmahe/genetics4j/core/spec/PostEvaluationProcessor::apply → SURVIVED Covering tests

5.5
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

6.6
Location : lambda$evolve$3
Killed by : none
replaced call to net/bmahe/genetics4j/core/spec/PostEvaluationProcessor::apply with argument → SURVIVED Covering tests

371

1.1
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

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

374

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

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

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

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

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

380

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
Substituted 0 with 1 → NO_COVERAGE

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

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

383

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

384

1.1
Location : evolve
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/EASystem::createOffsprings → KILLED

387

1.1
Location : evolve
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/EASystem::evaluate → KILLED

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

390

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

2.2
Location : lambda$evolve$5
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

3.3
Location : lambda$evolve$5
Killed by : none
replaced call to net/bmahe/genetics4j/core/spec/PostEvaluationProcessor::apply with argument → SURVIVED Covering tests

4.4
Location : lambda$evolve$5
Killed by : none
removed call to net/bmahe/genetics4j/core/spec/PostEvaluationProcessor::apply → SURVIVED Covering tests

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

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

391

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

2.2
Location : lambda$evolve$6
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$6 → KILLED

3.3
Location : lambda$evolve$6
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

394

1.1
Location : evolve
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/spec/AbstractEAExecutionContext::populationSize → KILLED

395

1.1
Location : evolve
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/replacement/ReplacementStrategyImplementor::select → KILLED

399

1.1
Location : evolve
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::getAllGenotypes → KILLED

400

1.1
Location : evolve
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::getAllFitnesses → KILLED

401

1.1
Location : evolve
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::getAllGenotypes → KILLED

402

1.1
Location : evolve
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::getAllFitnesses → KILLED

404

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

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

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

4.4
Location : evolve
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::size → KILLED

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

407

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

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

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

410

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

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

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

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

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

412

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

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

413

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

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

421

1.1
Location : evolve
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvolveWithIntChromosome()]
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

428

1.1
Location : evolve
Killed by : none
Substituted 1 with 0 → 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
removed call to net/bmahe/genetics4j/core/Population::getAllGenotypes → NO_COVERAGE

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

429

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

432

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

434

1.1
Location : evolve
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::evolve → KILLED

435

1.1
Location : evolve
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/spec/ImmutableEvolutionResult::of → KILLED

2.2
Location : evolve
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::getAllFitnesses → KILLED

3.3
Location : evolve
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::getAllGenotypes → KILLED

463

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

465

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

466

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

2.2
Location : lambda$evaluateOnce$7
Killed by : none
removed call to net/bmahe/genetics4j/core/evolutionlisteners/EvolutionListener::preEvaluation → NO_COVERAGE

467

1.1
Location : evaluateOnce
Killed by : net.bmahe.genetics4j.core.EASystemTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.core.EASystemTest]/[method:testEvaluateOnceWithDifferentGenerations()]
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:testEvaluateOnceWithDifferentGenerations()]
removed call to net/bmahe/genetics4j/core/EASystem::evaluate → KILLED

469

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

470

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

471

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

2.2
Location : evaluateOnce
Killed by : none
removed call to net/bmahe/genetics4j/core/Population::getAllGenotypes → 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
removed call to net/bmahe/genetics4j/core/Population::getAllFitnesses → NO_COVERAGE

474

1.1
Location : lambda$evaluateOnce$8
Killed by : none
removed call to net/bmahe/genetics4j/core/evolutionlisteners/EvolutionListener::postEvaluation → NO_COVERAGE

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

475

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

477

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

Active mutators

Tests examined


Report generated by PIT 1.20.3