NeatSelectorImpl.java

1
package net.bmahe.genetics4j.neat.selection;
2
3
import java.util.ArrayList;
4
import java.util.Comparator;
5
import java.util.List;
6
import java.util.random.RandomGenerator;
7
import java.util.stream.IntStream;
8
9
import org.apache.commons.lang3.Validate;
10
import org.apache.logging.log4j.LogManager;
11
import org.apache.logging.log4j.Logger;
12
13
import net.bmahe.genetics4j.core.Genotype;
14
import net.bmahe.genetics4j.core.Individual;
15
import net.bmahe.genetics4j.core.Population;
16
import net.bmahe.genetics4j.core.selection.Selector;
17
import net.bmahe.genetics4j.core.spec.AbstractEAConfiguration;
18
import net.bmahe.genetics4j.core.util.IndividualUtils;
19
import net.bmahe.genetics4j.neat.NeatUtils;
20
import net.bmahe.genetics4j.neat.Species;
21
import net.bmahe.genetics4j.neat.SpeciesIdGenerator;
22
import net.bmahe.genetics4j.neat.spec.selection.NeatSelection;
23
24
/**
25
 * Concrete implementation of species-based selection for NEAT (NeuroEvolution of Augmenting Topologies) algorithm.
26
 * 
27
 * <p>NeatSelectorImpl implements the core species-based selection mechanism that is fundamental to NEAT's
28
 * ability to maintain population diversity and protect structural innovations. It organizes the population
29
 * into species based on genetic compatibility, applies fitness sharing within species, manages species
30
 * lifecycle, and allocates reproduction opportunities across species.
31
 * 
32
 * <p>NEAT selection process:
33
 * <ol>
34
 * <li><strong>Species assignment</strong>: Organize population into species using compatibility predicate</li>
35
 * <li><strong>Species trimming</strong>: Remove lower-performing individuals within each species</li>
36
 * <li><strong>Species filtering</strong>: Eliminate species below minimum viable size</li>
37
 * <li><strong>Reproduction allocation</strong>: Determine number of offspring for each species</li>
38
 * <li><strong>Parent selection</strong>: Select parents within species using configured selector</li>
39
 * <li><strong>Species maintenance</strong>: Update species representatives for next generation</li>
40
 * </ol>
41
 * 
42
 * <p>Key features:
43
 * <ul>
44
 * <li><strong>Genetic compatibility</strong>: Groups individuals with similar network topologies</li>
45
 * <li><strong>Fitness sharing</strong>: Reduces competition between similar individuals</li>
46
 * <li><strong>Innovation protection</strong>: Allows new topologies time to optimize</li>
47
 * <li><strong>Population diversity</strong>: Maintains multiple species exploring different solutions</li>
48
 * </ul>
49
 * 
50
 * <p>Species management:
51
 * <ul>
52
 * <li><strong>Species formation</strong>: Creates new species when compatibility threshold exceeded</li>
53
 * <li><strong>Species growth</strong>: Assigns compatible individuals to existing species</li>
54
 * <li><strong>Species extinction</strong>: Eliminates species that fall below minimum size</li>
55
 * <li><strong>Species continuity</strong>: Maintains species representatives across generations</li>
56
 * </ul>
57
 * 
58
 * <p>Common usage patterns:
59
 * <pre>{@code
60
 * // Create NEAT selector implementation
61
 * RandomGenerator randomGen = RandomGenerator.getDefault();
62
 * SpeciesIdGenerator speciesIdGen = new SpeciesIdGenerator();
63
 * 
64
 * // Configure species predicate for compatibility
65
 * BiPredicate<Individual<Double>, Individual<Double>> speciesPredicate = 
66
 *     (i1, i2) -> NeatUtils.compatibilityDistance(
67
 *         i1.genotype(), i2.genotype(), 0, 2, 2, 1.0f
68
 *     ) < 3.0;  // Compatibility threshold
69
 * 
70
 * // Configure NEAT selection policy
71
 * NeatSelection<Double> neatSelection = NeatSelection.<Double>builder()
72
 *     .perSpeciesKeepRatio(0.8f)  // Keep top 80% of each species
73
 *     .minSpeciesSize(5)  // Minimum 5 individuals per species
74
 *     .speciesPredicate(speciesPredicate)
75
 *     .speciesSelection(Tournament.of(3))  // Tournament within species
76
 *     .build();
77
 * 
78
 * // Create within-species selector
79
 * Selector<Double> speciesSelector = new TournamentSelector<>(randomGen, 3);
80
 * 
81
 * // Create NEAT selector
82
 * NeatSelectorImpl<Double> selector = new NeatSelectorImpl<>(
83
 *     randomGen, neatSelection, speciesIdGen, speciesSelector
84
 * );
85
 * 
86
 * // Use in population selection
87
 * Population<Double> selectedPopulation = selector.select(
88
 *     eaConfiguration, population, 100  // Select 100 individuals
89
 * );
90
 * }</pre>
91
 * 
92
 * <p>Species lifecycle management:
93
 * <ul>
94
 * <li><strong>Initialization</strong>: Empty species list for first generation</li>
95
 * <li><strong>Assignment</strong>: Individuals assigned to species based on compatibility</li>
96
 * <li><strong>Trimming</strong>: Poor performers removed while preserving species diversity</li>
97
 * <li><strong>Reproduction</strong>: Offspring allocated proportionally to species average fitness</li>
98
 * <li><strong>Evolution</strong>: Species composition changes as population evolves</li>
99
 * </ul>
100
 * 
101
 * <p>Fitness sharing mechanism:
102
 * <ul>
103
 * <li><strong>Within-species competition</strong>: Individuals primarily compete within their species</li>
104
 * <li><strong>Species-based allocation</strong>: Reproduction opportunities distributed across species</li>
105
 * <li><strong>Diversity protection</strong>: Prevents single topology from dominating population</li>
106
 * <li><strong>Innovation preservation</strong>: New structural innovations get time to optimize</li>
107
 * </ul>
108
 * 
109
 * <p>Performance considerations:
110
 * <ul>
111
 * <li><strong>Compatibility caching</strong>: Species assignment optimized for repeated use</li>
112
 * <li><strong>Efficient trimming</strong>: In-place species membership updates</li>
113
 * <li><strong>Memory management</strong>: Species structures reused across generations</li>
114
 * <li><strong>Parallel processing</strong>: Species-based organization enables concurrent operations</li>
115
 * </ul>
116
 * 
117
 * @param <T> the fitness value type (typically Double)
118
 * @see NeatSelection
119
 * @see Species
120
 * @see SpeciesIdGenerator
121
 * @see Selector
122
 */
123
public class NeatSelectorImpl<T extends Number & Comparable<T>> implements Selector<T> {
124
	public static final Logger logger = LogManager.getLogger(NeatSelectorImpl.class);
125
126
	private final RandomGenerator randomGenerator;
127
	private final NeatSelection<T> neatSelection;
128
	private final SpeciesIdGenerator speciesIdGenerator;
129
	private final Selector<T> speciesSelector;
130
131
	private List<Species<T>> previousSpecies;
132
133
	/**
134
	 * Constructs a new NEAT selector implementation with the specified components.
135
	 * 
136
	 * <p>The selector uses the random generator for stochastic decisions, the NEAT selection
137
	 * policy for species management parameters, the species ID generator for creating new
138
	 * species, and the species selector for within-species parent selection.
139
	 * 
140
	 * @param _randomGenerator random number generator for stochastic selection operations
141
	 * @param _neatSelection NEAT selection policy defining species management parameters
142
	 * @param _speciesIdGenerator generator for unique species identifiers
143
	 * @param _speciesSelector selector for choosing parents within each species
144
	 * @throws IllegalArgumentException if any parameter is null
145
	 */
146
	public NeatSelectorImpl(final RandomGenerator _randomGenerator, final NeatSelection<T> _neatSelection,
147
			final SpeciesIdGenerator _speciesIdGenerator, final Selector<T> _speciesSelector) {
148
		Validate.notNull(_randomGenerator);
149
		Validate.notNull(_neatSelection);
150
		Validate.notNull(_speciesIdGenerator);
151
		Validate.notNull(_speciesSelector);
152
153 1 1. <init> : Removed assignment to member variable randomGenerator → KILLED
		this.randomGenerator = _randomGenerator;
154 1 1. <init> : Removed assignment to member variable neatSelection → KILLED
		this.neatSelection = _neatSelection;
155 1 1. <init> : Removed assignment to member variable speciesIdGenerator → KILLED
		this.speciesIdGenerator = _speciesIdGenerator;
156 1 1. <init> : Removed assignment to member variable speciesSelector → KILLED
		this.speciesSelector = _speciesSelector;
157
158 2 1. <init> : removed call to java/util/ArrayList::<init> → KILLED
2. <init> : Removed assignment to member variable previousSpecies → KILLED
		this.previousSpecies = new ArrayList<>();
159
	}
160
161
	/**
162
	 * Trims a species by removing lower-performing individuals while preserving minimum viable size.
163
	 * 
164
	 * <p>This method applies fitness-based selection within a species, keeping the best performers
165
	 * while ensuring the species maintains sufficient size for genetic diversity. The number of
166
	 * individuals kept is the maximum of the minimum species size and the keep ratio applied to
167
	 * the current species size.
168
	 * 
169
	 * @param species the species to trim
170
	 * @param comparator comparator for ranking individuals by fitness
171
	 * @param minSpeciesSize minimum number of individuals to keep
172
	 * @param perSpeciesKeepRatio proportion of current species to preserve
173
	 * @return a new species containing only the selected individuals
174
	 * @throws IllegalArgumentException if species is null
175
	 */
176
	protected Species<T> trimSpecies(final Species<T> species, final Comparator<Individual<T>> comparator,
177
			final int minSpeciesSize, final float perSpeciesKeepRatio) {
178
		Validate.notNull(species);
179
180 1 1. trimSpecies : removed call to net/bmahe/genetics4j/neat/Species::getMembers → KILLED
		final List<Individual<T>> members = species.getMembers();
181 1 1. trimSpecies : removed call to java/util/List::size → KILLED
		final float speciesSize = members.size();
182 3 1. trimSpecies : removed call to java/lang/Math::max → KILLED
2. trimSpecies : replaced call to java/lang/Math::max with argument → KILLED
3. trimSpecies : Replaced float multiplication with division → KILLED
		final int numIndividualtoKeep = (int) Math.max(minSpeciesSize, speciesSize * perSpeciesKeepRatio);
183
184
		if (logger.isDebugEnabled()) {
185
			logger.debug(
186
					"Species id: {}, size: {}, perSepciesKeepRatio: {}, we want to keep {} members - best fitness: {}",
187 2 1. trimSpecies : removed call to net/bmahe/genetics4j/neat/Species::getId → SURVIVED
2. trimSpecies : removed call to java/lang/Integer::valueOf → SURVIVED
					species.getId(),
188 1 1. trimSpecies : removed call to java/lang/Float::valueOf → SURVIVED
					speciesSize,
189 1 1. trimSpecies : removed call to java/lang/Float::valueOf → SURVIVED
					perSpeciesKeepRatio,
190 1 1. trimSpecies : removed call to java/lang/Integer::valueOf → SURVIVED
					numIndividualtoKeep,
191 1 1. trimSpecies : removed call to java/util/List::stream → KILLED
					members.stream()
192 1 1. trimSpecies : removed call to java/util/stream/Stream::max → KILLED
							.max(comparator)
193 2 1. trimSpecies : removed call to java/util/Optional::map → SURVIVED
2. trimSpecies : replaced call to java/util/Optional::map with receiver → SURVIVED
							.map(Individual::fitness));
194
		}
195
196 3 1. trimSpecies : removed call to net/bmahe/genetics4j/neat/Species::getId → SURVIVED
2. trimSpecies : removed call to java/util/List::of → KILLED
3. trimSpecies : removed call to net/bmahe/genetics4j/neat/Species::<init> → KILLED
		final Species<T> trimmedSpecies = new Species<>(species.getId(), List.of());
197 4 1. trimSpecies : removed conditional - replaced comparison check with true → SURVIVED
2. trimSpecies : changed conditional boundary → SURVIVED
3. trimSpecies : negated conditional → KILLED
4. trimSpecies : removed conditional - replaced comparison check with false → KILLED
		if (numIndividualtoKeep > 0) {
198 1 1. trimSpecies : removed call to java/util/List::stream → KILLED
			final var selectedIndividuals = members.stream()
199 4 1. trimSpecies : removed call to java/util/stream/Stream::sorted → KILLED
2. trimSpecies : replaced call to java/util/Comparator::reversed with receiver → KILLED
3. trimSpecies : replaced call to java/util/stream/Stream::sorted with receiver → KILLED
4. trimSpecies : removed call to java/util/Comparator::reversed → KILLED
					.sorted(comparator.reversed())
200 2 1. trimSpecies : replaced call to java/util/stream/Stream::limit with receiver → KILLED
2. trimSpecies : removed call to java/util/stream/Stream::limit → KILLED
					.limit(numIndividualtoKeep)
201 1 1. trimSpecies : removed call to java/util/stream/Stream::toList → KILLED
					.toList();
202
203 1 1. trimSpecies : removed call to net/bmahe/genetics4j/neat/Species::addAllMembers → KILLED
			trimmedSpecies.addAllMembers(selectedIndividuals);
204
		}
205 1 1. trimSpecies : replaced return value with null for net/bmahe/genetics4j/neat/selection/NeatSelectorImpl::trimSpecies → KILLED
		return trimmedSpecies;
206
207
	}
208
209
	/**
210
	 * Eliminates the lowest-performing individuals from all species while maintaining species diversity.
211
	 * 
212
	 * <p>This method applies the species trimming process to all species in the population,
213
	 * removing poor performers within each species while preserving the overall species
214
	 * structure. Species that become empty after trimming are filtered out.
215
	 * 
216
	 * @param eaConfiguration evolutionary algorithm configuration containing fitness comparator
217
	 * @param allSpecies list of all species in the population
218
	 * @return list of species after trimming, with empty species removed
219
	 * @throws IllegalArgumentException if any parameter is null
220
	 */
221
	protected List<Species<T>> eliminateLowestPerformers(final AbstractEAConfiguration<T> eaConfiguration,
222
			final List<Species<T>> allSpecies) {
223
		Validate.notNull(eaConfiguration);
224
		Validate.notNull(allSpecies);
225
226 1 1. eliminateLowestPerformers : removed call to net/bmahe/genetics4j/core/util/IndividualUtils::fitnessBasedComparator → KILLED
		final Comparator<Individual<T>> comparator = IndividualUtils.fitnessBasedComparator(eaConfiguration);
227
228 1 1. eliminateLowestPerformers : removed call to net/bmahe/genetics4j/neat/spec/selection/NeatSelection::perSpeciesKeepRatio → KILLED
		final float perSpeciesKeepRatio = neatSelection.perSpeciesKeepRatio();
229
		logger.trace("Keeping only the best {} number of individuals per species", perSpeciesKeepRatio);
230
231 1 1. eliminateLowestPerformers : removed call to net/bmahe/genetics4j/neat/spec/selection/NeatSelection::minSpeciesSize → KILLED
		final int minSpeciesSize = neatSelection.minSpeciesSize();
232
233 2 1. eliminateLowestPerformers : removed call to java/util/List::stream → KILLED
2. eliminateLowestPerformers : replaced return value with Collections.emptyList for net/bmahe/genetics4j/neat/selection/NeatSelectorImpl::eliminateLowestPerformers → KILLED
		return allSpecies.stream()
234 5 1. eliminateLowestPerformers : removed call to java/util/stream/Stream::map → KILLED
2. lambda$eliminateLowestPerformers$0 : removed call to net/bmahe/genetics4j/neat/selection/NeatSelectorImpl::trimSpecies → KILLED
3. lambda$eliminateLowestPerformers$0 : replaced call to net/bmahe/genetics4j/neat/selection/NeatSelectorImpl::trimSpecies with argument → KILLED
4. lambda$eliminateLowestPerformers$0 : replaced return value with null for net/bmahe/genetics4j/neat/selection/NeatSelectorImpl::lambda$eliminateLowestPerformers$0 → KILLED
5. eliminateLowestPerformers : replaced call to java/util/stream/Stream::map with receiver → KILLED
				.map(species -> trimSpecies(species, comparator, minSpeciesSize, perSpeciesKeepRatio))
235 10 1. eliminateLowestPerformers : replaced call to java/util/stream/Stream::filter with receiver → KILLED
2. lambda$eliminateLowestPerformers$1 : negated conditional → KILLED
3. eliminateLowestPerformers : removed call to java/util/stream/Stream::filter → KILLED
4. lambda$eliminateLowestPerformers$1 : removed call to net/bmahe/genetics4j/neat/Species::getNumMembers → KILLED
5. lambda$eliminateLowestPerformers$1 : removed conditional - replaced comparison check with true → KILLED
6. lambda$eliminateLowestPerformers$1 : Substituted 1 with 0 → KILLED
7. lambda$eliminateLowestPerformers$1 : changed conditional boundary → KILLED
8. lambda$eliminateLowestPerformers$1 : removed conditional - replaced comparison check with false → KILLED
9. lambda$eliminateLowestPerformers$1 : replaced boolean return with true for net/bmahe/genetics4j/neat/selection/NeatSelectorImpl::lambda$eliminateLowestPerformers$1 → KILLED
10. lambda$eliminateLowestPerformers$1 : Substituted 0 with 1 → KILLED
				.filter(species -> species.getNumMembers() > 0)
236 1 1. eliminateLowestPerformers : removed call to java/util/stream/Stream::toList → KILLED
				.toList();
237
	}
238
239
	@Override
240
	public Population<T> select(final AbstractEAConfiguration<T> eaConfiguration, final int numIndividuals,
241
			final List<Genotype> genotypes, final List<T> fitnessScore) {
242
		Validate.notNull(eaConfiguration);
243
		Validate.notNull(genotypes);
244
		Validate.notNull(fitnessScore);
245
		Validate.isTrue(numIndividuals > 0);
246
		Validate.isTrue(genotypes.size() == fitnessScore.size());
247
248 1 1. select : removed call to net/bmahe/genetics4j/core/Population::of → KILLED
		final Population<T> population = Population.of(genotypes, fitnessScore);
249
250 2 1. select : removed call to net/bmahe/genetics4j/neat/NeatUtils::speciate → KILLED
2. select : replaced call to net/bmahe/genetics4j/neat/NeatUtils::speciate with argument → KILLED
		final List<Species<T>> allSpecies = NeatUtils.speciate(randomGenerator,
251
				speciesIdGenerator,
252
				previousSpecies,
253
				population,
254 1 1. select : removed call to net/bmahe/genetics4j/neat/spec/selection/NeatSelection::speciesPredicate → KILLED
				neatSelection.speciesPredicate());
255
256
		logger.debug("Number of species found: {}", allSpecies.size());
257
		logger.trace("Species: {}", allSpecies);
258
259
		/**
260
		 * We want to remove the bottom performers of each species
261
		 */
262 2 1. select : replaced call to net/bmahe/genetics4j/neat/selection/NeatSelectorImpl::eliminateLowestPerformers with argument → KILLED
2. select : removed call to net/bmahe/genetics4j/neat/selection/NeatSelectorImpl::eliminateLowestPerformers → KILLED
		final var allTrimmedSpecies = eliminateLowestPerformers(eaConfiguration, allSpecies);
263
		logger.debug("After trimming, we have {} species", allTrimmedSpecies.size());
264
265 1 1. select : Removed assignment to member variable previousSpecies → SURVIVED
		previousSpecies = allTrimmedSpecies;
266 4 1. select : removed conditional - replaced equality check with false → SURVIVED
2. select : negated conditional → KILLED
3. select : removed call to java/util/List::size → KILLED
4. select : removed conditional - replaced equality check with true → KILLED
		if (allTrimmedSpecies.size() == 0) {
267 2 1. select : removed call to net/bmahe/genetics4j/core/Population::empty → NO_COVERAGE
2. select : replaced return value with null for net/bmahe/genetics4j/neat/selection/NeatSelectorImpl::select → NO_COVERAGE
			return Population.empty();
268
		}
269
270
		/**
271
		 * Now we want to select the next generation on a per species basis and
272
		 * proportionally to the sum of the fitnesses of each members
273
		 */
274
275 1 1. select : removed call to java/util/List::size → KILLED
		final double[] sumFitnesses = new double[allTrimmedSpecies.size()];
276 1 1. select : Substituted 0.0 with 1.0 → SURVIVED
		double totalSum = 0;
277 6 1. select : Substituted 0 with 1 → SURVIVED
2. select : removed conditional - replaced comparison check with true → KILLED
3. select : negated conditional → KILLED
4. select : removed call to java/util/List::size → KILLED
5. select : removed conditional - replaced comparison check with false → KILLED
6. select : changed conditional boundary → KILLED
		for (int i = 0; i < allTrimmedSpecies.size(); i++) {
278 1 1. select : removed call to java/util/List::get → KILLED
			final var species = allTrimmedSpecies.get(i);
279 1 1. select : removed call to net/bmahe/genetics4j/neat/Species::getMembers → KILLED
			sumFitnesses[i] = species.getMembers()
280 1 1. select : removed call to java/util/List::stream → KILLED
					.stream()
281 3 1. lambda$select$2 : removed call to net/bmahe/genetics4j/core/Individual::fitness → KILLED
2. lambda$select$2 : replaced double return with 0.0d for net/bmahe/genetics4j/neat/selection/NeatSelectorImpl::lambda$select$2 → KILLED
3. select : removed call to java/util/stream/Stream::mapToDouble → KILLED
					.mapToDouble(individual -> individual.fitness()
282 1 1. lambda$select$2 : removed call to java/lang/Number::doubleValue → KILLED
							.doubleValue())
283 3 1. select : Replaced double division with multiplication → SURVIVED
2. select : removed call to net/bmahe/genetics4j/neat/Species::getNumMembers → KILLED
3. select : removed call to java/util/stream/DoubleStream::sum → KILLED
					.sum() / (float) species.getNumMembers();
284 1 1. select : Replaced double addition with subtraction → KILLED
			totalSum += sumFitnesses[i];
285
		}
286
287 2 1. select : Substituted 0 with 1 → KILLED
2. select : removed call to java/util/stream/IntStream::range → KILLED
		final List<Integer> decreasingFitnessIndex = IntStream.range(0, sumFitnesses.length)
288 1 1. select : removed call to java/util/stream/IntStream::boxed → KILLED
				.boxed()
289 6 1. select : replaced call to java/util/stream/Stream::sorted with receiver → KILLED
2. lambda$select$3 : removed call to java/lang/Double::valueOf → KILLED
3. select : removed call to java/util/Comparator::comparing → KILLED
4. lambda$select$3 : removed call to java/lang/Integer::intValue → KILLED
5. lambda$select$3 : replaced Double return value with 0 for net/bmahe/genetics4j/neat/selection/NeatSelectorImpl::lambda$select$3 → KILLED
6. select : removed call to java/util/stream/Stream::sorted → KILLED
				.sorted(Comparator.comparing(i -> sumFitnesses[(int) i])
290 2 1. select : removed call to java/util/Comparator::reversed → KILLED
2. select : replaced call to java/util/Comparator::reversed with receiver → KILLED
						.reversed())
291 1 1. select : removed call to java/util/stream/Stream::toList → KILLED
				.toList();
292
293 1 1. select : removed call to net/bmahe/genetics4j/core/Population::<init> → KILLED
		final Population<T> selected = new Population<>();
294
295 1 1. select : removed call to java/util/List::stream → KILLED
		final List<Population<T>> trimmedPopulations = allTrimmedSpecies.stream()
296 5 1. lambda$select$4 : replaced return value with null for net/bmahe/genetics4j/neat/selection/NeatSelectorImpl::lambda$select$4 → KILLED
2. lambda$select$4 : removed call to net/bmahe/genetics4j/neat/Species::getMembers → KILLED
3. select : removed call to java/util/stream/Stream::map → KILLED
4. select : replaced call to java/util/stream/Stream::map with receiver → KILLED
5. lambda$select$4 : removed call to net/bmahe/genetics4j/core/Population::of → KILLED
				.map(species -> Population.of(species.getMembers()))
297 1 1. select : removed call to java/util/stream/Stream::toList → KILLED
				.toList();
298
299 1 1. select : Substituted 0 with 1 → KILLED
		int i = 0;
300 9 1. select : removed call to net/bmahe/genetics4j/core/Population::size → SURVIVED
2. select : changed conditional boundary → SURVIVED
3. select : removed conditional - replaced comparison check with true → SURVIVED
4. select : removed conditional - replaced comparison check with true → KILLED
5. select : removed conditional - replaced comparison check with false → KILLED
6. select : negated conditional → KILLED
7. select : removed conditional - replaced comparison check with false → KILLED
8. select : negated conditional → KILLED
9. select : changed conditional boundary → KILLED
		while (selected.size() < numIndividuals && i < sumFitnesses.length) {
301 2 1. select : removed call to java/lang/Integer::intValue → KILLED
2. select : removed call to java/util/List::get → KILLED
			int speciesIndex = decreasingFitnessIndex.get(i);
302
303 2 1. select : Replaced double division with multiplication → KILLED
2. select : Replaced double multiplication with division → KILLED
			int numIndividualSpecies = (int) (numIndividuals * sumFitnesses[speciesIndex] / totalSum);
304 6 1. select : Replaced integer subtraction with addition → SURVIVED
2. select : removed call to net/bmahe/genetics4j/core/Population::size → SURVIVED
3. select : changed conditional boundary → SURVIVED
4. select : removed conditional - replaced comparison check with false → SURVIVED
5. select : negated conditional → KILLED
6. select : removed conditional - replaced comparison check with true → KILLED
			if (numIndividualSpecies > numIndividuals - selected.size()) {
305 2 1. select : removed call to net/bmahe/genetics4j/core/Population::size → NO_COVERAGE
2. select : Replaced integer subtraction with addition → NO_COVERAGE
				numIndividualSpecies = numIndividuals - selected.size();
306
			}
307
308 4 1. select : negated conditional → KILLED
2. select : removed conditional - replaced comparison check with true → KILLED
3. select : removed conditional - replaced comparison check with false → KILLED
4. select : changed conditional boundary → KILLED
			if (numIndividualSpecies > 0) {
309 1 1. select : removed call to java/util/List::get → KILLED
				final Population<T> speciesPopulation = trimmedPopulations.get(speciesIndex);
310
311
				logger.debug("sub selecting {} for index {} - species id: {}",
312 1 1. select : removed call to java/lang/Integer::valueOf → SURVIVED
						numIndividualSpecies,
313 1 1. select : removed call to java/lang/Integer::valueOf → SURVIVED
						speciesIndex,
314 2 1. select : removed call to java/lang/Integer::valueOf → SURVIVED
2. select : removed call to java/util/List::get → KILLED
						allTrimmedSpecies.get(speciesIndex)
315 1 1. select : removed call to net/bmahe/genetics4j/neat/Species::getId → SURVIVED
								.getId());
316
317 1 1. select : removed call to net/bmahe/genetics4j/core/selection/Selector::select → KILLED
				final var selectedFromSpecies = speciesSelector.select(eaConfiguration,
318
						numIndividualSpecies,
319 1 1. select : removed call to net/bmahe/genetics4j/core/Population::getAllGenotypes → KILLED
						speciesPopulation.getAllGenotypes(),
320 1 1. select : removed call to net/bmahe/genetics4j/core/Population::getAllFitnesses → KILLED
						speciesPopulation.getAllFitnesses());
321
322 1 1. select : removed call to net/bmahe/genetics4j/core/Population::addAll → KILLED
				selected.addAll(selectedFromSpecies);
323
			}
324
325 2 1. select : Removed increment 1 → KILLED
2. select : Changed increment from 1 to -1 → KILLED
			i++;
326
		}
327
328 5 1. select : removed call to net/bmahe/genetics4j/core/Population::size → SURVIVED
2. select : changed conditional boundary → SURVIVED
3. select : removed conditional - replaced comparison check with true → SURVIVED
4. select : negated conditional → KILLED
5. select : removed conditional - replaced comparison check with false → KILLED
		if (selected.size() < numIndividuals) {
329
			logger.debug("There are less selected individual [{}] than desired [{}]. Will include additional invididuals",
330 2 1. select : removed call to java/lang/Integer::valueOf → SURVIVED
2. select : removed call to net/bmahe/genetics4j/core/Population::size → SURVIVED
					selected.size(),
331 1 1. select : removed call to java/lang/Integer::valueOf → SURVIVED
					numIndividuals);
332 4 1. select : removed call to java/lang/Integer::intValue → KILLED
2. select : removed call to java/util/List::get → KILLED
3. select : Substituted 0 with 1 → KILLED
4. select : removed call to java/util/List::get → KILLED
			final Population<T> speciesPopulation = trimmedPopulations.get(decreasingFitnessIndex.get(0));
333
334 2 1. select : removed call to net/bmahe/genetics4j/core/Population::addAll → KILLED
2. select : removed call to net/bmahe/genetics4j/core/selection/Selector::select → KILLED
			selected.addAll(speciesSelector.select(eaConfiguration,
335 2 1. select : Replaced integer subtraction with addition → KILLED
2. select : removed call to net/bmahe/genetics4j/core/Population::size → KILLED
					numIndividuals - selected.size(),
336 1 1. select : removed call to net/bmahe/genetics4j/core/Population::getAllGenotypes → KILLED
					speciesPopulation.getAllGenotypes(),
337 1 1. select : removed call to net/bmahe/genetics4j/core/Population::getAllFitnesses → KILLED
					speciesPopulation.getAllFitnesses()));
338
		}
339
340 1 1. select : replaced return value with null for net/bmahe/genetics4j/neat/selection/NeatSelectorImpl::select → KILLED
		return selected;
341
	}
342
}

Mutations

153

1.1
Location : <init>
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
Removed assignment to member variable randomGenerator → KILLED

154

1.1
Location : <init>
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:eliminateLowestPerformers()]
Removed assignment to member variable neatSelection → KILLED

155

1.1
Location : <init>
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
Removed assignment to member variable speciesIdGenerator → KILLED

156

1.1
Location : <init>
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
Removed assignment to member variable speciesSelector → KILLED

158

1.1
Location : <init>
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed call to java/util/ArrayList::<init> → KILLED

2.2
Location : <init>
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
Removed assignment to member variable previousSpecies → KILLED

180

1.1
Location : trimSpecies
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:eliminateLowestPerformers()]
removed call to net/bmahe/genetics4j/neat/Species::getMembers → KILLED

181

1.1
Location : trimSpecies
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:simple()]
removed call to java/util/List::size → KILLED

182

1.1
Location : trimSpecies
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:eliminateLowestPerformers()]
removed call to java/lang/Math::max → KILLED

2.2
Location : trimSpecies
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
replaced call to java/lang/Math::max with argument → KILLED

3.3
Location : trimSpecies
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:eliminateLowestPerformers()]
Replaced float multiplication with division → KILLED

187

1.1
Location : trimSpecies
Killed by : none
removed call to net/bmahe/genetics4j/neat/Species::getId → SURVIVED
Covering tests

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

188

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

189

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

190

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

191

1.1
Location : trimSpecies
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:eliminateLowestPerformers()]
removed call to java/util/List::stream → KILLED

192

1.1
Location : trimSpecies
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:eliminateLowestPerformers()]
removed call to java/util/stream/Stream::max → KILLED

193

1.1
Location : trimSpecies
Killed by : none
removed call to java/util/Optional::map → SURVIVED
Covering tests

2.2
Location : trimSpecies
Killed by : none
replaced call to java/util/Optional::map with receiver → SURVIVED Covering tests

196

1.1
Location : trimSpecies
Killed by : none
removed call to net/bmahe/genetics4j/neat/Species::getId → SURVIVED
Covering tests

2.2
Location : trimSpecies
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:eliminateLowestPerformers()]
removed call to java/util/List::of → KILLED

3.3
Location : trimSpecies
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:eliminateLowestPerformers()]
removed call to net/bmahe/genetics4j/neat/Species::<init> → KILLED

197

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

2.2
Location : trimSpecies
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:eliminateLowestPerformers()]
negated conditional → KILLED

3.3
Location : trimSpecies
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:eliminateLowestPerformers()]
removed conditional - replaced comparison check with false → KILLED

4.4
Location : trimSpecies
Killed by : none
changed conditional boundary → SURVIVED Covering tests

198

1.1
Location : trimSpecies
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:eliminateLowestPerformers()]
removed call to java/util/List::stream → KILLED

199

1.1
Location : trimSpecies
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:eliminateLowestPerformers()]
removed call to java/util/stream/Stream::sorted → KILLED

2.2
Location : trimSpecies
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:eliminateLowestPerformers()]
replaced call to java/util/Comparator::reversed with receiver → KILLED

3.3
Location : trimSpecies
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:eliminateLowestPerformers()]
replaced call to java/util/stream/Stream::sorted with receiver → KILLED

4.4
Location : trimSpecies
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:eliminateLowestPerformers()]
removed call to java/util/Comparator::reversed → KILLED

200

1.1
Location : trimSpecies
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:eliminateLowestPerformers()]
replaced call to java/util/stream/Stream::limit with receiver → KILLED

2.2
Location : trimSpecies
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:eliminateLowestPerformers()]
removed call to java/util/stream/Stream::limit → KILLED

201

1.1
Location : trimSpecies
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:eliminateLowestPerformers()]
removed call to java/util/stream/Stream::toList → KILLED

203

1.1
Location : trimSpecies
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:eliminateLowestPerformers()]
removed call to net/bmahe/genetics4j/neat/Species::addAllMembers → KILLED

205

1.1
Location : trimSpecies
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:eliminateLowestPerformers()]
replaced return value with null for net/bmahe/genetics4j/neat/selection/NeatSelectorImpl::trimSpecies → KILLED

226

1.1
Location : eliminateLowestPerformers
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:eliminateLowestPerformers()]
removed call to net/bmahe/genetics4j/core/util/IndividualUtils::fitnessBasedComparator → KILLED

228

1.1
Location : eliminateLowestPerformers
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:simple()]
removed call to net/bmahe/genetics4j/neat/spec/selection/NeatSelection::perSpeciesKeepRatio → KILLED

231

1.1
Location : eliminateLowestPerformers
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed call to net/bmahe/genetics4j/neat/spec/selection/NeatSelection::minSpeciesSize → KILLED

233

1.1
Location : eliminateLowestPerformers
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:eliminateLowestPerformers()]
removed call to java/util/List::stream → KILLED

2.2
Location : eliminateLowestPerformers
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:eliminateLowestPerformers()]
replaced return value with Collections.emptyList for net/bmahe/genetics4j/neat/selection/NeatSelectorImpl::eliminateLowestPerformers → KILLED

234

1.1
Location : eliminateLowestPerformers
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:eliminateLowestPerformers()]
removed call to java/util/stream/Stream::map → KILLED

2.2
Location : lambda$eliminateLowestPerformers$0
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:eliminateLowestPerformers()]
removed call to net/bmahe/genetics4j/neat/selection/NeatSelectorImpl::trimSpecies → KILLED

3.3
Location : lambda$eliminateLowestPerformers$0
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:eliminateLowestPerformers()]
replaced call to net/bmahe/genetics4j/neat/selection/NeatSelectorImpl::trimSpecies with argument → KILLED

4.4
Location : lambda$eliminateLowestPerformers$0
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:eliminateLowestPerformers()]
replaced return value with null for net/bmahe/genetics4j/neat/selection/NeatSelectorImpl::lambda$eliminateLowestPerformers$0 → KILLED

5.5
Location : eliminateLowestPerformers
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:eliminateLowestPerformers()]
replaced call to java/util/stream/Stream::map with receiver → KILLED

235

1.1
Location : eliminateLowestPerformers
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:eliminateLowestPerformers()]
replaced call to java/util/stream/Stream::filter with receiver → KILLED

2.2
Location : lambda$eliminateLowestPerformers$1
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:eliminateLowestPerformers()]
negated conditional → KILLED

3.3
Location : eliminateLowestPerformers
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:eliminateLowestPerformers()]
removed call to java/util/stream/Stream::filter → KILLED

4.4
Location : lambda$eliminateLowestPerformers$1
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:eliminateLowestPerformers()]
removed call to net/bmahe/genetics4j/neat/Species::getNumMembers → KILLED

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

6.6
Location : lambda$eliminateLowestPerformers$1
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:eliminateLowestPerformers()]
Substituted 1 with 0 → KILLED

7.7
Location : lambda$eliminateLowestPerformers$1
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:eliminateLowestPerformers()]
changed conditional boundary → KILLED

8.8
Location : lambda$eliminateLowestPerformers$1
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:eliminateLowestPerformers()]
removed conditional - replaced comparison check with false → KILLED

9.9
Location : lambda$eliminateLowestPerformers$1
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:eliminateLowestPerformers()]
replaced boolean return with true for net/bmahe/genetics4j/neat/selection/NeatSelectorImpl::lambda$eliminateLowestPerformers$1 → KILLED

10.10
Location : lambda$eliminateLowestPerformers$1
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:eliminateLowestPerformers()]
Substituted 0 with 1 → KILLED

236

1.1
Location : eliminateLowestPerformers
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:eliminateLowestPerformers()]
removed call to java/util/stream/Stream::toList → KILLED

248

1.1
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed call to net/bmahe/genetics4j/core/Population::of → KILLED

250

1.1
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed call to net/bmahe/genetics4j/neat/NeatUtils::speciate → KILLED

2.2
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
replaced call to net/bmahe/genetics4j/neat/NeatUtils::speciate with argument → KILLED

254

1.1
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed call to net/bmahe/genetics4j/neat/spec/selection/NeatSelection::speciesPredicate → KILLED

262

1.1
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
replaced call to net/bmahe/genetics4j/neat/selection/NeatSelectorImpl::eliminateLowestPerformers with argument → KILLED

2.2
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed call to net/bmahe/genetics4j/neat/selection/NeatSelectorImpl::eliminateLowestPerformers → KILLED

265

1.1
Location : select
Killed by : none
Removed assignment to member variable previousSpecies → SURVIVED
Covering tests

266

1.1
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
negated conditional → KILLED

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

3.3
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed call to java/util/List::size → KILLED

4.4
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed conditional - replaced equality check with true → KILLED

267

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

2.2
Location : select
Killed by : none
replaced return value with null for net/bmahe/genetics4j/neat/selection/NeatSelectorImpl::select → NO_COVERAGE

275

1.1
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed call to java/util/List::size → KILLED

276

1.1
Location : select
Killed by : none
Substituted 0.0 with 1.0 → SURVIVED
Covering tests

277

1.1
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed conditional - replaced comparison check with true → KILLED

2.2
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
negated conditional → KILLED

3.3
Location : select
Killed by : none
Substituted 0 with 1 → SURVIVED
Covering tests

4.4
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed call to java/util/List::size → KILLED

5.5
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed conditional - replaced comparison check with false → KILLED

6.6
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
changed conditional boundary → KILLED

278

1.1
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed call to java/util/List::get → KILLED

279

1.1
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed call to net/bmahe/genetics4j/neat/Species::getMembers → KILLED

280

1.1
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed call to java/util/List::stream → KILLED

281

1.1
Location : lambda$select$2
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed call to net/bmahe/genetics4j/core/Individual::fitness → KILLED

2.2
Location : lambda$select$2
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
replaced double return with 0.0d for net/bmahe/genetics4j/neat/selection/NeatSelectorImpl::lambda$select$2 → KILLED

3.3
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed call to java/util/stream/Stream::mapToDouble → KILLED

282

1.1
Location : lambda$select$2
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed call to java/lang/Number::doubleValue → KILLED

283

1.1
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed call to net/bmahe/genetics4j/neat/Species::getNumMembers → KILLED

2.2
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed call to java/util/stream/DoubleStream::sum → KILLED

3.3
Location : select
Killed by : none
Replaced double division with multiplication → SURVIVED
Covering tests

284

1.1
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
Replaced double addition with subtraction → KILLED

287

1.1
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
Substituted 0 with 1 → KILLED

2.2
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed call to java/util/stream/IntStream::range → KILLED

288

1.1
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed call to java/util/stream/IntStream::boxed → KILLED

289

1.1
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
replaced call to java/util/stream/Stream::sorted with receiver → KILLED

2.2
Location : lambda$select$3
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed call to java/lang/Double::valueOf → KILLED

3.3
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed call to java/util/Comparator::comparing → KILLED

4.4
Location : lambda$select$3
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed call to java/lang/Integer::intValue → KILLED

5.5
Location : lambda$select$3
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
replaced Double return value with 0 for net/bmahe/genetics4j/neat/selection/NeatSelectorImpl::lambda$select$3 → KILLED

6.6
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed call to java/util/stream/Stream::sorted → KILLED

290

1.1
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed call to java/util/Comparator::reversed → KILLED

2.2
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
replaced call to java/util/Comparator::reversed with receiver → KILLED

291

1.1
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed call to java/util/stream/Stream::toList → KILLED

293

1.1
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed call to net/bmahe/genetics4j/core/Population::<init> → KILLED

295

1.1
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed call to java/util/List::stream → KILLED

296

1.1
Location : lambda$select$4
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
replaced return value with null for net/bmahe/genetics4j/neat/selection/NeatSelectorImpl::lambda$select$4 → KILLED

2.2
Location : lambda$select$4
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed call to net/bmahe/genetics4j/neat/Species::getMembers → KILLED

3.3
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed call to java/util/stream/Stream::map → KILLED

4.4
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
replaced call to java/util/stream/Stream::map with receiver → KILLED

5.5
Location : lambda$select$4
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed call to net/bmahe/genetics4j/core/Population::of → KILLED

297

1.1
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed call to java/util/stream/Stream::toList → KILLED

299

1.1
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
Substituted 0 with 1 → KILLED

300

1.1
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed conditional - replaced comparison check with true → KILLED

2.2
Location : select
Killed by : none
removed call to net/bmahe/genetics4j/core/Population::size → SURVIVED
Covering tests

3.3
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed conditional - replaced comparison check with false → KILLED

4.4
Location : select
Killed by : none
changed conditional boundary → SURVIVED Covering tests

5.5
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
negated conditional → KILLED

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

7.7
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed conditional - replaced comparison check with false → KILLED

8.8
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
negated conditional → KILLED

9.9
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
changed conditional boundary → KILLED

301

1.1
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed call to java/lang/Integer::intValue → KILLED

2.2
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed call to java/util/List::get → KILLED

303

1.1
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
Replaced double division with multiplication → KILLED

2.2
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
Replaced double multiplication with division → KILLED

304

1.1
Location : select
Killed by : none
Replaced integer subtraction with addition → SURVIVED
Covering tests

2.2
Location : select
Killed by : none
removed call to net/bmahe/genetics4j/core/Population::size → SURVIVED Covering tests

3.3
Location : select
Killed by : none
changed conditional boundary → SURVIVED Covering tests

4.4
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
negated conditional → KILLED

5.5
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed conditional - replaced comparison check with true → KILLED

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

305

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

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

308

1.1
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
negated conditional → KILLED

2.2
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed conditional - replaced comparison check with true → KILLED

3.3
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed conditional - replaced comparison check with false → KILLED

4.4
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
changed conditional boundary → KILLED

309

1.1
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed call to java/util/List::get → KILLED

312

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

313

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

314

1.1
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed call to java/util/List::get → KILLED

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

315

1.1
Location : select
Killed by : none
removed call to net/bmahe/genetics4j/neat/Species::getId → SURVIVED
Covering tests

317

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

319

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

320

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

322

1.1
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed call to net/bmahe/genetics4j/core/Population::addAll → KILLED

325

1.1
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
Removed increment 1 → KILLED

2.2
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
Changed increment from 1 to -1 → KILLED

328

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

2.2
Location : select
Killed by : none
changed conditional boundary → SURVIVED Covering tests

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

4.4
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
negated conditional → KILLED

5.5
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed conditional - replaced comparison check with false → KILLED

330

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

2.2
Location : select
Killed by : none
removed call to net/bmahe/genetics4j/core/Population::size → SURVIVED Covering tests

331

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

332

1.1
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed call to java/lang/Integer::intValue → KILLED

2.2
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed call to java/util/List::get → KILLED

3.3
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
Substituted 0 with 1 → KILLED

4.4
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed call to java/util/List::get → KILLED

334

1.1
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed call to net/bmahe/genetics4j/core/Population::addAll → KILLED

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

335

1.1
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
Replaced integer subtraction with addition → KILLED

2.2
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
removed call to net/bmahe/genetics4j/core/Population::size → KILLED

336

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

337

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

340

1.1
Location : select
Killed by : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
replaced return value with null for net/bmahe/genetics4j/neat/selection/NeatSelectorImpl::select → KILLED

Active mutators

Tests examined


Report generated by PIT 1.19.6