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

151

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

152

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

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 speciesIdGenerator → 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:select()]
Removed assignment to member variable speciesSelector → 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 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

177

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

178

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

179

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

184

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

185

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

186

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

187

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

188

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

189

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

190

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

193

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

194

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

195

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

196

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

197

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

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/stream/Stream::toList → 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()]
removed call to net/bmahe/genetics4j/neat/Species::addAllMembers → KILLED

202

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

223

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

225

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

228

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

230

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

231

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

232

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

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

246

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

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/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

252

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

260

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

263

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

264

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 call to java/util/List::size → KILLED

3.3
Location : select
Killed by : none
removed conditional - replaced equality check with false → 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 conditional - replaced equality check with true → KILLED

265

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

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

273

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

274

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

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 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

276

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

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 call to net/bmahe/genetics4j/neat/Species::getMembers → 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::stream → KILLED

279

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

280

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

281

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

282

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

285

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

286

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

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()]
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

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/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

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()]
removed call to java/util/stream/Stream::toList → 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 net/bmahe/genetics4j/core/Population::<init> → 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 java/util/List::stream → KILLED

294

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 : 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

5.5
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

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/stream/Stream::toList → 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()]
Substituted 0 with 1 → KILLED

298

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

2.2
Location : select
Killed by : none
changed conditional boundary → 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 true → 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()]
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()]
changed conditional boundary → 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 conditional - replaced comparison check with false → KILLED

7.7
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

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

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

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()]
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

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()]
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

302

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
removed conditional - replaced comparison check with false → SURVIVED Covering tests

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

4.4
Location : select
Killed by : none
Replaced integer subtraction with addition → 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 : 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

303

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

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

306

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 : 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

307

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

310

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

311

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

312

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

313

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

315

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

318

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

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

321

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

324

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

327

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

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

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 : none
removed call to net/bmahe/genetics4j/core/Population::size → SURVIVED Covering tests

329

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

330

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

331

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 : net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.selection.NeatSelectorImplTest]/[method:select()]
Substituted 0 with 1 → 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/List::get → 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/lang/Integer::intValue → KILLED

333

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.20.3