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, final long _populationSize,
134
			final List<ChromosomeCombinator<T>> _chromosomeCombinators, final double _offspringRatio,
135
			final Selector<T> _parentSelectionPolicyHandler, final List<Mutator> _mutators,
136
			final ReplacementStrategyImplementor<T> _replacementStrategyImplementor,
137
			final AbstractEAExecutionContext<T> _eaExecutionContext, final FitnessEvaluator<T> _fitnessEvaluator) {
138
		Objects.requireNonNull(_eaConfiguration);
139
		Validate.isTrue(_populationSize > 0);
140
		Objects.requireNonNull(_chromosomeCombinators);
141
		Validate.isTrue(_chromosomeCombinators.size() == _eaConfiguration.numChromosomes());
142
		Validate.inclusiveBetween(0.0, 1.0, _offspringRatio);
143
		Objects.requireNonNull(_parentSelectionPolicyHandler);
144
		Objects.requireNonNull(_replacementStrategyImplementor);
145
		Objects.requireNonNull(_eaExecutionContext);
146
		Objects.requireNonNull(_fitnessEvaluator);
147
148 1 1. <init> : Removed assignment to member variable eaConfiguration → KILLED
		this.eaConfiguration = _eaConfiguration;
149 1 1. <init> : Removed assignment to member variable eaExecutionContext → KILLED
		this.eaExecutionContext = _eaExecutionContext;
150 1 1. <init> : Removed assignment to member variable populationSize → KILLED
		this.populationSize = (int) _populationSize;
151 1 1. <init> : Removed assignment to member variable chromosomeCombinators → KILLED
		this.chromosomeCombinators = _chromosomeCombinators;
152 1 1. <init> : Removed assignment to member variable offspringRatio → KILLED
		this.offspringRatio = _offspringRatio;
153 1 1. <init> : Removed assignment to member variable mutators → KILLED
		this.mutators = _mutators;
154 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();
155 1 1. <init> : Removed assignment to member variable fitnessEvaluator → KILLED
		this.fitnessEvaluator = _fitnessEvaluator;
156
157 1 1. <init> : Removed assignment to member variable parentSelector → KILLED
		parentSelector = _parentSelectionPolicyHandler;
158
159 1 1. <init> : Removed assignment to member variable replacementStrategyImplementor → KILLED
		this.replacementStrategyImplementor = _replacementStrategyImplementor;
160 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);
161
	}
162
163
	private List<T> evaluate(final long generation, final List<Genotype> population) {
164
		Validate.isTrue(generation >= 0);
165
		Objects.requireNonNull(population);
166
		Validate.isTrue(population.size() > 0);
167
168
		logger.debug("Evaluating population of size {}", population.size());
169 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);
170
171
		logger.debug("Done evaluating population of size {}", population.size());
172 1 1. evaluate : replaced return value with Collections.emptyList for net/bmahe/genetics4j/core/EASystem::evaluate → KILLED
		return fitnesses;
173
	}
174
175
	private List<Genotype> initializePopulation() {
176 1 1. initializePopulation : removed call to net/bmahe/genetics4j/core/spec/AbstractEAExecutionContext::populationSize → KILLED
		final int initialPopulationSize = eaExecutionContext.populationSize();
177
		logger.info("Generating initial population of {} individuals", initialPopulationSize);
178
179 1 1. initializePopulation : removed call to java/util/ArrayList::<init> → KILLED
		final List<Genotype> genotypes = new ArrayList<>(initialPopulationSize);
180
181 1 1. initializePopulation : removed call to net/bmahe/genetics4j/core/spec/AbstractEAConfiguration::seedPopulation → SURVIVED
		final var seedPopulation = eaConfiguration.seedPopulation();
182 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)) {
183 1 1. initializePopulation : removed call to java/util/List::addAll → NO_COVERAGE
			genotypes.addAll(seedPopulation);
184
		}
185 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) {
186 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();
187
			logger.info(
188
					"{} seed individual(s) added and generating {} individuals to reach the target of {} initial population size",
189 2 1. initializePopulation : removed call to java/lang/Integer::valueOf → SURVIVED
2. initializePopulation : removed call to java/util/List::size → SURVIVED
					genotypes.size(),
190 1 1. initializePopulation : removed call to java/lang/Integer::valueOf → SURVIVED
					missingInitialIndividualCount,
191 1 1. initializePopulation : removed call to java/lang/Integer::valueOf → SURVIVED
					initialPopulationSize);
192
193 1 1. initializePopulation : removed call to net/bmahe/genetics4j/core/util/GenotypeGenerator::generateGenotypes → KILLED
			final var extraIndividuals = genotypeGenerator.generateGenotypes(missingInitialIndividualCount);
194 1 1. initializePopulation : removed call to java/util/List::addAll → KILLED
			genotypes.addAll(extraIndividuals);
195
		}
196
197 1 1. initializePopulation : replaced return value with Collections.emptyList for net/bmahe/genetics4j/core/EASystem::initializePopulation → KILLED
		return genotypes;
198
	}
199
200
	private List<Genotype> mutateGenotypes(final long generation, final List<Genotype> genotypes) {
201
		Validate.isTrue(generation >= 0);
202
		Objects.requireNonNull(genotypes);
203
204 2 1. mutateGenotypes : replaced return value with Collections.emptyList for net/bmahe/genetics4j/core/EASystem::mutateGenotypes → KILLED
2. mutateGenotypes : removed call to java/util/List::stream → KILLED
		return genotypes.stream()
205 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 -> {
206
					Genotype mutatedChild = child;
207
208
					for (final Mutator mutator : mutators) {
209 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);
210
					}
211
212 1 1. lambda$mutateGenotypes$0 : replaced return value with null for net/bmahe/genetics4j/core/EASystem::lambda$mutateGenotypes$0 → KILLED
					return mutatedChild;
213
				})
214 1 1. mutateGenotypes : removed call to java/util/stream/Stream::toList → KILLED
				.toList();
215
	}
216
217
	private List<Genotype> combineParents(final Population<T> parents, final GenotypeCombinator genotypeCombinator) {
218
		Objects.requireNonNull(parents);
219
		Objects.requireNonNull(genotypeCombinator);
220
221 5 1. combineParents : Substituted 0 with 1 → SURVIVED
2. combineParents : Substituted 2 with 3 → SURVIVED
3. combineParents : removed call to java/util/stream/IntStream::range → KILLED
4. combineParents : Replaced integer division with multiplication → KILLED
5. combineParents : removed call to net/bmahe/genetics4j/core/Population::size → KILLED
		final List<Genotype> children = IntStream.range(0, parents.size() / 2)
222 2 1. combineParents : replaced call to java/util/stream/IntStream::parallel with receiver → SURVIVED
2. combineParents : removed call to java/util/stream/IntStream::parallel → KILLED
				.parallel()
223 1 1. combineParents : removed call to java/util/stream/IntStream::boxed → KILLED
				.boxed()
224 2 1. combineParents : replaced call to java/util/stream/Stream::flatMap with receiver → KILLED
2. combineParents : removed call to java/util/stream/Stream::flatMap → KILLED
				.flatMap(baseIndex -> {
225 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;
226 1 1. lambda$combineParents$1 : removed call to net/bmahe/genetics4j/core/Population::getGenotype → KILLED
					final Genotype firstParent = parents.getGenotype(firstParentIndex);
227 1 1. lambda$combineParents$1 : removed call to net/bmahe/genetics4j/core/Population::getFitness → SURVIVED
					final T firstParentFitness = parents.getFitness(firstParentIndex);
228
229 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;
230 1 1. lambda$combineParents$1 : removed call to net/bmahe/genetics4j/core/Population::getGenotype → KILLED
					final Genotype secondParent = parents.getGenotype(secondParentIndex);
231 1 1. lambda$combineParents$1 : removed call to net/bmahe/genetics4j/core/Population::getFitness → SURVIVED
					final T secondParentFitness = parents.getFitness(secondParentIndex);
232
233 1 1. lambda$combineParents$1 : removed call to java/util/ArrayList::<init> → KILLED
					final List<List<Chromosome>> chromosomes = new ArrayList<>();
234 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++) {
235
236 1 1. lambda$combineParents$1 : removed call to net/bmahe/genetics4j/core/Genotype::getChromosome → KILLED
						final Chromosome firstChromosome = firstParent.getChromosome(chromosomeIndex);
237 1 1. lambda$combineParents$1 : removed call to net/bmahe/genetics4j/core/Genotype::getChromosome → KILLED
						final Chromosome secondChromosome = secondParent.getChromosome(chromosomeIndex);
238
239 1 1. lambda$combineParents$1 : removed call to java/util/List::get → KILLED
						final List<Chromosome> combinedChromosomes = chromosomeCombinators.get(chromosomeIndex)
240 1 1. lambda$combineParents$1 : removed call to net/bmahe/genetics4j/core/combination/ChromosomeCombinator::combine → KILLED
								.combine(eaConfiguration,
241
										firstChromosome,
242
										firstParentFitness,
243
										secondChromosome,
244
										secondParentFitness);
245
246 1 1. lambda$combineParents$1 : removed call to java/util/List::add → KILLED
						chromosomes.add(combinedChromosomes);
247
						logger.trace("Combining {} with {} ---> {}", firstChromosome, secondChromosome, combinedChromosomes);
248
					}
249
250 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);
251 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();
252
				})
253 1 1. combineParents : removed call to java/util/stream/Stream::toList → KILLED
				.toList();
254
255 1 1. combineParents : replaced return value with Collections.emptyList for net/bmahe/genetics4j/core/EASystem::combineParents → KILLED
		return children;
256
	}
257
258
	/**
259
	 * Create offsprings without mutation
260
	 *
261
	 * @param generation
262
	 * @param population
263
	 * @param offspringsNeeded
264
	 * @return
265
	 */
266
	private List<Genotype> createBasicOffsprings(final long generation, final Population<T> population,
267
			final int offspringsNeeded) {
268
		Objects.requireNonNull(population);
269
		Validate.isTrue(offspringsNeeded > 0);
270
271 1 1. createBasicOffsprings : removed call to net/bmahe/genetics4j/core/spec/AbstractEAConfiguration::genotypeCombinator → KILLED
		final GenotypeCombinator genotypeCombinator = eaConfiguration.genotypeCombinator();
272
273 2 1. createBasicOffsprings : Replaced integer multiplication with division → KILLED
2. createBasicOffsprings : Substituted 2 with 3 → KILLED
		final int parentsNeeded = (int) (offspringsNeeded * 2);
274
		logger.info("Selecting {} parents as we expect to generate {} offsprings", parentsNeeded, offspringsNeeded);
275 1 1. createBasicOffsprings : removed call to net/bmahe/genetics4j/core/selection/Selector::select → KILLED
		final Population<T> selectedParents = parentSelector.select(eaConfiguration,
276
				generation,
277
				parentsNeeded,
278 1 1. createBasicOffsprings : removed call to net/bmahe/genetics4j/core/Population::getAllGenotypes → KILLED
				population.getAllGenotypes(),
279 1 1. createBasicOffsprings : removed call to net/bmahe/genetics4j/core/Population::getAllFitnesses → KILLED
				population.getAllFitnesses());
280
		logger.trace("Selected parents: {}", selectedParents);
281
		Validate.isTrue(selectedParents.size() % 2 == 0);
282
283
		logger.info("Combining {} parents into offsprings", selectedParents.size());
284 1 1. createBasicOffsprings : removed call to net/bmahe/genetics4j/core/EASystem::combineParents → KILLED
		final List<Genotype> offsprings = combineParents(selectedParents, genotypeCombinator);
285
286 1 1. createBasicOffsprings : replaced return value with Collections.emptyList for net/bmahe/genetics4j/core/EASystem::createBasicOffsprings → KILLED
		return offsprings;
287
	}
288
289
	/**
290
	 * Gets the evolutionary algorithm configuration used by this system.
291
	 * 
292
	 * @return the EA configuration containing genetic operators, chromosome specs, and evolutionary parameters
293
	 */
294
	public AbstractEAConfiguration<T> getEAConfiguration() {
295 1 1. getEAConfiguration : replaced return value with null for net/bmahe/genetics4j/core/EASystem::getEAConfiguration → KILLED
		return eaConfiguration;
296
	}
297
298
	/**
299
	 * Gets the target population size for each generation.
300
	 * 
301
	 * @return the population size as configured for this evolutionary system
302
	 */
303
	public long getPopulationSize() {
304 1 1. getPopulationSize : replaced long return with 0 for net/bmahe/genetics4j/core/EASystem::getPopulationSize → KILLED
		return populationSize;
305
	}
306
307
	/**
308
	 * Creates offspring from the given population through selection, crossover, and mutation.
309
	 * 
310
	 * <p>This method orchestrates the reproductive process by:
311
	 * <ol>
312
	 * <li>Selecting parents from the population using the configured selection strategy</li>
313
	 * <li>Applying crossover operations to generate basic offspring</li>
314
	 * <li>Applying mutation operators to introduce genetic variation</li>
315
	 * </ol>
316
	 * 
317
	 * @param generation       the current generation
318
	 * @param population       the current population to select parents from
319
	 * @param offspringsNeeded the number of offspring to generate
320
	 * @return a list of mutated offspring genotypes
321
	 * @throws NullPointerException     if population is null
322
	 * @throws IllegalArgumentException if offspringsNeeded is not positive
323
	 */
324
	public List<Genotype> createOffsprings(final long generation, final Population<T> population,
325
			final int offspringsNeeded) {
326
		Objects.requireNonNull(population);
327
		Validate.isTrue(offspringsNeeded > 0);
328
329 1 1. createOffsprings : removed call to net/bmahe/genetics4j/core/EASystem::createBasicOffsprings → KILLED
		final List<Genotype> offpsrings = createBasicOffsprings(generation, population, offspringsNeeded);
330
		logger.info("Generated {} offsprings", offpsrings.size());
331
332
		logger.info("Mutating offsprigns");
333 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);
334
335 1 1. createOffsprings : replaced return value with Collections.emptyList for net/bmahe/genetics4j/core/EASystem::createOffsprings → KILLED
		return mutatedOffsprings;
336
	}
337
338
	/**
339
	 * Executes the complete evolutionary algorithm process until termination criteria are met.
340
	 * 
341
	 * <p>This is the main entry point for running evolution. The method manages the entire evolutionary cycle including:
342
	 * <ul>
343
	 * <li>Initial population generation and evaluation</li>
344
	 * <li>Iterative evolution through selection, reproduction, and replacement</li>
345
	 * <li>Progress monitoring via evolution listeners</li>
346
	 * <li>Termination condition checking</li>
347
	 * </ul>
348
	 * 
349
	 * <p>The evolution process continues until the configured termination criteria (e.g., maximum generations, target
350
	 * fitness, convergence) are satisfied.
351
	 * 
352
	 * @return an EvolutionResult containing the final population, fitness values, generation count, and configuration
353
	 *         details
354
	 * @see Termination
355
	 * @see EvolutionResult
356
	 */
357
	public EvolutionResult<T> evolve() {
358 1 1. evolve : removed call to net/bmahe/genetics4j/core/spec/AbstractEAConfiguration::termination → KILLED
		final Termination<T> termination = eaConfiguration.termination();
359
360
		logger.info("Starting evolution");
361
362 1 1. evolve : removed call to net/bmahe/genetics4j/core/spec/AbstractEAConfiguration::postEvaluationProcessor → KILLED
		final Optional<PostEvaluationProcessor<T>> postEvaluationProcessor = eaConfiguration.postEvaluationProcessor();
363 1 1. evolve : removed call to net/bmahe/genetics4j/core/spec/AbstractEAExecutionContext::evolutionListeners → KILLED
		final List<EvolutionListener<T>> evolutionListeners = eaExecutionContext.evolutionListeners();
364
365 1 1. evolve : removed call to net/bmahe/genetics4j/core/evaluation/FitnessEvaluator::preEvaluation → SURVIVED
		fitnessEvaluator.preEvaluation();
366 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));
367
368 1 1. evolve : Substituted 0 with 1 → KILLED
		long generation = 0;
369 1 1. evolve : removed call to net/bmahe/genetics4j/core/EASystem::initializePopulation → KILLED
		final List<Genotype> genotypes = initializePopulation();
370
371
		logger.info("Evaluating initial population");
372 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);
373 1 1. evolve : removed call to net/bmahe/genetics4j/core/Population::of → KILLED
		final Population<T> initialPopulation = Population.of(genotypes, fitnessScore);
374
375 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))
376 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);
377
378
		while (termination
379 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) {
380
			final long currentGeneration = generation;
381
			logger.info("Going through evolution of generation {}", currentGeneration);
382
383
			for (final EvolutionListener<T> evolutionListener : evolutionListeners) {
384
				evolutionListener
385 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);
386
			}
387
388 1 1. evolve : Replaced double multiplication with division → SURVIVED
			final int offspringsNeeded = (int) (populationSize * offspringRatio);
389 1 1. evolve : removed call to net/bmahe/genetics4j/core/EASystem::createOffsprings → KILLED
			final List<Genotype> offsprings = createOffsprings(currentGeneration, population, offspringsNeeded);
390
391
			logger.info("Evaluating offsprings");
392 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);
393
394
			final Population<T> childrenPopulation = postEvaluationProcessor
395 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)))
396 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));
397
398
			logger.info("Executing replacement strategy");
399 1 1. evolve : removed call to net/bmahe/genetics4j/core/spec/AbstractEAExecutionContext::populationSize → KILLED
			final int nextGenerationPopulationSize = eaExecutionContext.populationSize();
400 1 1. evolve : removed call to net/bmahe/genetics4j/core/replacement/ReplacementStrategyImplementor::select → KILLED
			final Population<T> newPopulation = replacementStrategyImplementor.select(eaConfiguration,
401
					currentGeneration,
402
					nextGenerationPopulationSize,
403 1 1. evolve : removed call to net/bmahe/genetics4j/core/Population::getAllGenotypes → KILLED
					population.getAllGenotypes(),
404 1 1. evolve : removed call to net/bmahe/genetics4j/core/Population::getAllFitnesses → KILLED
					population.getAllFitnesses(),
405 1 1. evolve : removed call to net/bmahe/genetics4j/core/Population::getAllGenotypes → KILLED
					childrenPopulation.getAllGenotypes(),
406 1 1. evolve : removed call to net/bmahe/genetics4j/core/Population::getAllFitnesses → KILLED
					childrenPopulation.getAllFitnesses());
407
408 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) {
409
				logger.info("New population only has {} members. Generating more individuals", newPopulation.size());
410
				final List<Genotype> additionalIndividuals = genotypeGenerator
411 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());
412
				logger.debug("Number of generated individuals: {}", additionalIndividuals.size());
413
414 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) {
415
416 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);
417 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));
418
				}
419
			}
420
421
			if (logger.isTraceEnabled()) {
422
				logger.trace("[Generation {}] New population: {}", currentGeneration, Arrays.asList(newPopulation));
423
			}
424
			population = newPopulation;
425 2 1. evolve : Replaced long addition with subtraction → KILLED
2. evolve : Substituted 1 with 2 → KILLED
			generation++;
426
		}
427
428
		logger.info("Evolution has terminated");
429
430
		// isDone has returned true and we want to let the evolutionListeners run a last time
431
		for (final EvolutionListener<T> evolutionListener : evolutionListeners) {
432 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);
433 1 1. evolve : removed call to net/bmahe/genetics4j/core/evolutionlisteners/EvolutionListener::postEvaluation → NO_COVERAGE
			evolutionListener.postEvaluation(eaConfiguration);
434
		}
435
436 1 1. evolve : removed call to net/bmahe/genetics4j/core/evaluation/FitnessEvaluator::postEvaluation → SURVIVED
		fitnessEvaluator.postEvaluation();
437
438 1 1. evolve : replaced return value with null for net/bmahe/genetics4j/core/EASystem::evolve → KILLED
		return ImmutableEvolutionResult
439 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());
440
	}
441
442
	/**
443
	 * Evaluates a collection of genotypes once without running the full evolutionary process.
444
	 * 
445
	 * <p>This method provides a way to evaluate genotypes using the configured fitness evaluator without executing the
446
	 * complete evolutionary algorithm. It handles the pre/post evaluation lifecycle and notifies evolution listeners of
447
	 * the results.
448
	 * 
449
	 * <p>Useful for:
450
	 * <ul>
451
	 * <li>Testing fitness functions with specific genotypes</li>
452
	 * <li>Evaluating externally generated populations</li>
453
	 * <li>Batch evaluation scenarios</li>
454
	 * </ul>
455
	 * 
456
	 * @param generation the generation number for logging and listener notification
457
	 * @param genotypes  the list of genotypes to evaluate
458
	 * @return a list of fitness values corresponding to the input genotypes
459
	 * @throws IllegalArgumentException if generation is negative or genotypes is empty
460
	 * @throws NullPointerException     if genotypes is null
461
	 */
462
	public List<T> evaluateOnce(final long generation, final List<Genotype> genotypes) {
463
		Validate.isTrue(generation >= 0);
464
		Objects.requireNonNull(genotypes);
465
		Validate.isTrue(genotypes.size() > 0);
466
467 1 1. evaluateOnce : removed call to net/bmahe/genetics4j/core/spec/AbstractEAExecutionContext::evolutionListeners → KILLED
		final List<EvolutionListener<T>> evolutionListeners = eaExecutionContext.evolutionListeners();
468
469 1 1. evaluateOnce : removed call to net/bmahe/genetics4j/core/evaluation/FitnessEvaluator::preEvaluation → SURVIVED
		fitnessEvaluator.preEvaluation();
470 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));
471 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);
472
473 1 1. evaluateOnce : removed call to net/bmahe/genetics4j/core/Population::of → SURVIVED
		final var population = Population.of(genotypes, fitness);
474 1 1. evaluateOnce : removed call to net/bmahe/genetics4j/core/spec/AbstractEAExecutionContext::evolutionListeners → KILLED
		for (final EvolutionListener<T> evolutionListener : eaExecutionContext.evolutionListeners()) {
475 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);
476
		}
477
478 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));
479 1 1. evaluateOnce : removed call to net/bmahe/genetics4j/core/evaluation/FitnessEvaluator::postEvaluation → SURVIVED
		fitnessEvaluator.postEvaluation();
480
481 1 1. evaluateOnce : replaced return value with Collections.emptyList for net/bmahe/genetics4j/core/EASystem::evaluateOnce → KILLED
		return fitness;
482
	}
483
}

Mutations

148

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

149

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

150

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

151

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

152

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

153

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

154

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

155

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

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 parentSelector → KILLED

159

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

160

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

169

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

172

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

176

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

179

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

181

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

182

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

183

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

185

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

186

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

189

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

190

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

191

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

193

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

194

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

197

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

204

1.1
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

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/List::stream → KILLED

205

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

209

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

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()]
replaced return value with null for net/bmahe/genetics4j/core/EASystem::lambda$mutateGenotypes$0 → KILLED

214

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

221

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::range → KILLED

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

3.3
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

4.4
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

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

222

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::parallel → KILLED

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

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

224

1.1
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

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/Stream::flatMap → KILLED

225

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

226

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

227

1.1
Location : lambda$combineParents$1
Killed by : none
removed call to net/bmahe/genetics4j/core/Population::getFitness → 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()]
Replaced integer addition with subtraction → KILLED

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

230

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

231

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

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 java/util/ArrayList::<init> → KILLED

234

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

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

237

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

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 java/util/List::get → KILLED

240

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

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()]
removed call to java/util/List::add → KILLED

250

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

251

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

253

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

255

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

271

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

273

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

275

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

278

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

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/Population::getAllFitnesses → KILLED

284

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

286

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

295

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

304

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

329

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

333

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

335

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

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/AbstractEAConfiguration::termination → KILLED

362

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

363

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

365

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

366

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

368

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

369

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

372

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

373

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

375

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

376

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

379

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

385

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

388

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

389

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

392

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

395

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

396

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

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/spec/AbstractEAExecutionContext::populationSize → 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/replacement/ReplacementStrategyImplementor::select → KILLED

403

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

404

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

405

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

406

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

408

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

411

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

414

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

416

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

417

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

425

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

432

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

433

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

436

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

438

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

439

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

467

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

469

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

470

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

471

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

473

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

474

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

475

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

478

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

479

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

481

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