NeatChromosomeCombinator.java

1
package net.bmahe.genetics4j.neat.combination;
2
3
import java.util.ArrayList;
4
import java.util.Comparator;
5
import java.util.HashMap;
6
import java.util.HashSet;
7
import java.util.List;
8
import java.util.Map;
9
import java.util.Objects;
10
import java.util.Set;
11
import java.util.random.RandomGenerator;
12
13
import org.apache.commons.lang3.Validate;
14
import org.apache.logging.log4j.LogManager;
15
import org.apache.logging.log4j.Logger;
16
17
import net.bmahe.genetics4j.core.chromosomes.Chromosome;
18
import net.bmahe.genetics4j.core.combination.ChromosomeCombinator;
19
import net.bmahe.genetics4j.core.spec.AbstractEAConfiguration;
20
import net.bmahe.genetics4j.neat.Connection;
21
import net.bmahe.genetics4j.neat.chromosomes.NeatChromosome;
22
import net.bmahe.genetics4j.neat.combination.parentcompare.ChosenOtherChromosome;
23
import net.bmahe.genetics4j.neat.combination.parentcompare.ParentComparisonHandler;
24
import net.bmahe.genetics4j.neat.spec.combination.NeatCombination;
25
import net.bmahe.genetics4j.neat.spec.combination.parentcompare.ParentComparisonPolicy;
26
27
/**
28
 * Implements genetic crossover for NEAT (NeuroEvolution of Augmenting Topologies) neural network chromosomes.
29
 * 
30
 * <p>NeatChromosomeCombinator performs innovation-number-based genetic recombination between two neural network
31
 * chromosomes, creating offspring that inherit network topology and connection weights from both parents while
32
 * preserving the historical tracking essential to the NEAT algorithm.
33
 * 
34
 * <p>NEAT crossover algorithm:
35
 * <ol>
36
 * <li><strong>Parent comparison</strong>: Determine which parent is "fitter" using comparison policy</li>
37
 * <li><strong>Gene alignment</strong>: Match connections by innovation number between parents</li>
38
 * <li><strong>Matching genes</strong>: Randomly inherit from either parent (biased by inheritance threshold)</li>
39
 * <li><strong>Disjoint genes</strong>: Inherit from fitter parent when innovation ranges overlap</li>
40
 * <li><strong>Excess genes</strong>: Inherit from fitter parent beyond other parent's range</li>
41
 * <li><strong>Gene re-enabling</strong>: Potentially re-enable disabled genes based on threshold</li>
42
 * </ol>
43
 * 
44
 * <p>Key genetic operations:
45
 * <ul>
46
 * <li><strong>Innovation alignment</strong>: Uses innovation numbers to match corresponding genes</li>
47
 * <li><strong>Fitness-biased inheritance</strong>: Favors genes from fitter parent based on inheritance threshold</li>
48
 * <li><strong>Gene state management</strong>: Handles enabled/disabled connection states during crossover</li>
49
 * <li><strong>Topology preservation</strong>: Ensures offspring have valid network topology</li>
50
 * </ul>
51
 * 
52
 * <p>Gene classification:
53
 * <ul>
54
 * <li><strong>Matching genes</strong>: Same innovation number in both parents, inherit randomly</li>
55
 * <li><strong>Disjoint genes</strong>: Innovation number exists in one parent within other's range</li>
56
 * <li><strong>Excess genes</strong>: Innovation number beyond other parent's highest innovation</li>
57
 * <li><strong>Disabled genes</strong>: May be re-enabled if other parent has enabled version</li>
58
 * </ul>
59
 * 
60
 * <p>Common usage patterns:
61
 * 
62
 * <pre>{@code
63
 * // Create NEAT chromosome combinator
64
 * RandomGenerator randomGen = RandomGenerator.getDefault();
65
 * NeatCombination policy = NeatCombination.builder()
66
 *     .inheritanceThresold(0.7)  // 70% bias toward fitter parent
67
 *     .reenableGeneInheritanceThresold(0.25)  // 25% gene re-enabling chance
68
 *     .parentComparisonPolicy(FitnessComparison.build())
69
 *     .build();
70
 * 
71
 * ParentComparisonHandler comparisonHandler = new FitnessComparisonHandler();
72
 * NeatChromosomeCombinator<Double> combinator = new NeatChromosomeCombinator<>(
73
 *     randomGen, policy, comparisonHandler
74
 * );
75
 * 
76
 * // Perform crossover
77
 * NeatChromosome parent1 = // ... first parent
78
 * NeatChromosome parent2 = // ... second parent
79
 * Double fitness1 = 0.85;
80
 * Double fitness2 = 0.72;
81
 * 
82
 * List<Chromosome> offspring = combinator.combine(
83
 *     eaConfiguration, parent1, fitness1, parent2, fitness2
84
 * );
85
 * NeatChromosome child = (NeatChromosome) offspring.get(0);
86
 * }</pre>
87
 * 
88
 * <p>Inheritance threshold effects:
89
 * <ul>
90
 * <li><strong>0.5</strong>: Unbiased inheritance, equal probability from both parents</li>
91
 * <li><strong>&gt; 0.5</strong>: Bias toward fitter parent, promotes convergence</li>
92
 * <li><strong>&lt; 0.5</strong>: Bias toward less fit parent, increases diversity</li>
93
 * <li><strong>1.0</strong>: Always inherit from fitter parent (when fitness differs)</li>
94
 * </ul>
95
 * 
96
 * <p>Gene re-enabling mechanism:
97
 * <ul>
98
 * <li><strong>Preservation</strong>: Disabled genes maintain connection topology information</li>
99
 * <li><strong>Re-activation</strong>: Chance to re-enable genes that are enabled in other parent</li>
100
 * <li><strong>Exploration</strong>: Allows rediscovery of previously disabled connection patterns</li>
101
 * <li><strong>Genetic diversity</strong>: Prevents permanent loss of structural information</li>
102
 * </ul>
103
 * 
104
 * <p>Duplicate connection prevention:
105
 * <ul>
106
 * <li><strong>Links cache</strong>: Tracks already included connections to prevent duplicates</li>
107
 * <li><strong>Topology validation</strong>: Ensures each connection appears at most once</li>
108
 * <li><strong>Cache efficiency</strong>: O(1) lookup for connection existence checking</li>
109
 * <li><strong>Memory management</strong>: Cache cleared after each crossover operation</li>
110
 * </ul>
111
 * 
112
 * <p>Performance considerations:
113
 * <ul>
114
 * <li><strong>Linear time complexity</strong>: O(n + m) where n, m are parent connection counts</li>
115
 * <li><strong>Innovation sorting</strong>: Leverages pre-sorted connection lists for efficiency</li>
116
 * <li><strong>Memory efficiency</strong>: Minimal allocation during crossover</li>
117
 * <li><strong>Cache optimization</strong>: Efficient duplicate detection and prevention</li>
118
 * </ul>
119
 * 
120
 * @param <T> the fitness value type (typically Double)
121
 * @see NeatCombination
122
 * @see ParentComparisonHandler
123
 * @see NeatChromosome
124
 * @see ChromosomeCombinator
125
 */
126
public class NeatChromosomeCombinator<T extends Comparable<T>> implements ChromosomeCombinator<T> {
127
	public static final Logger logger = LogManager.getLogger(NeatChromosomeCombinator.class);
128
129
	private final RandomGenerator randomGenerator;
130
	private final NeatCombination neatCombination;
131
	private final ParentComparisonHandler parentComparisonHandler;
132
133
	/**
134
	 * Checks whether a connection already exists in the links cache.
135
	 * 
136
	 * <p>The links cache prevents duplicate connections in the offspring by tracking all connections that have already
137
	 * been added. This ensures each connection appears at most once in the resulting chromosome.
138
	 * 
139
	 * @param linksCache cache mapping from-node indices to sets of to-node indices
140
	 * @param connection connection to check for existence
141
	 * @return true if connection already exists in cache, false otherwise
142
	 * @throws IllegalArgumentException if linksCache or connection is null
143
	 */
144
	private boolean linksCacheContainsConnection(final Map<Integer, Set<Integer>> linksCache,
145
			final Connection connection) {
146
		Objects.requireNonNull(linksCache);
147
		Objects.requireNonNull(connection);
148
149 1 1. linksCacheContainsConnection : removed call to net/bmahe/genetics4j/neat/Connection::fromNodeIndex → SURVIVED
		final int fromNodeIndex = connection.fromNodeIndex();
150 1 1. linksCacheContainsConnection : removed call to net/bmahe/genetics4j/neat/Connection::toNodeIndex → SURVIVED
		final int toNodeIndex = connection.toNodeIndex();
151
152 7 1. linksCacheContainsConnection : removed call to java/util/Map::containsKey → SURVIVED
2. linksCacheContainsConnection : removed conditional - replaced equality check with false → SURVIVED
3. linksCacheContainsConnection : removed call to java/lang/Integer::valueOf → SURVIVED
4. linksCacheContainsConnection : removed conditional - replaced equality check with true → KILLED
5. linksCacheContainsConnection : negated conditional → KILLED
6. linksCacheContainsConnection : replaced boolean return with true for net/bmahe/genetics4j/neat/combination/NeatChromosomeCombinator::linksCacheContainsConnection → KILLED
7. linksCacheContainsConnection : Substituted 1 with 0 → KILLED
		return linksCache.containsKey(fromNodeIndex) == true
153 11 1. linksCacheContainsConnection : removed call to java/lang/Integer::valueOf → SURVIVED
2. linksCacheContainsConnection : removed conditional - replaced equality check with false → SURVIVED
3. linksCacheContainsConnection : Substituted 1 with 0 → NO_COVERAGE
4. linksCacheContainsConnection : removed call to java/util/Set::contains → SURVIVED
5. linksCacheContainsConnection : negated conditional → KILLED
6. linksCacheContainsConnection : removed call to java/util/Map::get → KILLED
7. linksCacheContainsConnection : Substituted 1 with 0 → KILLED
8. linksCacheContainsConnection : replaced call to java/util/Map::get with argument → KILLED
9. linksCacheContainsConnection : removed call to java/lang/Integer::valueOf → KILLED
10. linksCacheContainsConnection : removed conditional - replaced equality check with true → KILLED
11. linksCacheContainsConnection : Substituted 0 with 1 → KILLED
				&& linksCache.get(fromNodeIndex).contains(toNodeIndex) == true;
154
	}
155
156
	/**
157
	 * Adds a connection to the links cache to prevent future duplicates.
158
	 * 
159
	 * <p>This method records that a connection from the specified source to target node has been added to the offspring,
160
	 * preventing the same connection from being added again during the crossover process.
161
	 * 
162
	 * @param linksCache cache mapping from-node indices to sets of to-node indices
163
	 * @param connection connection to add to the cache
164
	 * @throws IllegalArgumentException if linksCache or connection is null
165
	 */
166
	private void insertInlinksCache(final Map<Integer, Set<Integer>> linksCache, final Connection connection) {
167
		Objects.requireNonNull(linksCache);
168
		Objects.requireNonNull(connection);
169
170 1 1. insertInlinksCache : removed call to net/bmahe/genetics4j/neat/Connection::fromNodeIndex → SURVIVED
		final int fromNodeIndex = connection.fromNodeIndex();
171 1 1. insertInlinksCache : removed call to net/bmahe/genetics4j/neat/Connection::toNodeIndex → SURVIVED
		final int toNodeIndex = connection.toNodeIndex();
172
173 7 1. insertInlinksCache : removed call to java/lang/Integer::valueOf → SURVIVED
2. insertInlinksCache : removed call to java/lang/Integer::valueOf → SURVIVED
3. insertInlinksCache : removed call to java/util/Set::add → SURVIVED
4. insertInlinksCache : replaced call to java/util/Map::computeIfAbsent with argument → KILLED
5. insertInlinksCache : removed call to java/util/Map::computeIfAbsent → KILLED
6. lambda$insertInlinksCache$0 : removed call to java/util/HashSet::<init> → KILLED
7. lambda$insertInlinksCache$0 : replaced return value with Collections.emptySet for net/bmahe/genetics4j/neat/combination/NeatChromosomeCombinator::lambda$insertInlinksCache$0 → KILLED
		linksCache.computeIfAbsent(fromNodeIndex, k -> new HashSet<>()).add(toNodeIndex);
174
	}
175
176
	/**
177
	 * Determines whether a disabled gene should be re-enabled during crossover.
178
	 * 
179
	 * <p>If the chosen parent has a disabled connection but the other parent has the same connection enabled, there is a
180
	 * configurable chance to re-enable the connection in the offspring. This mechanism prevents permanent loss of
181
	 * potentially useful connections.
182
	 * 
183
	 * @param chosenParent the connection selected for inheritance
184
	 * @param otherParent  the corresponding connection from the other parent
185
	 * @return true if the disabled connection should be re-enabled, false otherwise
186
	 * @throws IllegalArgumentException if either connection is null
187
	 */
188
	protected boolean shouldReEnable(final Connection chosenParent, final Connection otherParent) {
189
		Objects.requireNonNull(chosenParent);
190
		Objects.requireNonNull(otherParent);
191
192 1 1. shouldReEnable : Substituted 0 with 1 → KILLED
		boolean shouldReEnable = false;
193 9 1. shouldReEnable : removed conditional - replaced equality check with true → KILLED
2. shouldReEnable : removed call to net/bmahe/genetics4j/neat/Connection::isEnabled → KILLED
3. shouldReEnable : negated conditional → KILLED
4. shouldReEnable : removed call to net/bmahe/genetics4j/neat/Connection::isEnabled → KILLED
5. shouldReEnable : Substituted 1 with 0 → KILLED
6. shouldReEnable : removed conditional - replaced equality check with false → KILLED
7. shouldReEnable : removed conditional - replaced equality check with true → KILLED
8. shouldReEnable : negated conditional → KILLED
9. shouldReEnable : removed conditional - replaced equality check with false → KILLED
		if (chosenParent.isEnabled() == false && otherParent.isEnabled() == true) {
194 6 1. shouldReEnable : changed conditional boundary → SURVIVED
2. shouldReEnable : removed call to java/util/random/RandomGenerator::nextDouble → SURVIVED
3. shouldReEnable : removed conditional - replaced comparison check with false → KILLED
4. shouldReEnable : negated conditional → KILLED
5. shouldReEnable : removed conditional - replaced comparison check with true → KILLED
6. shouldReEnable : removed call to net/bmahe/genetics4j/neat/spec/combination/NeatCombination::reenableGeneInheritanceThresold → KILLED
			if (randomGenerator.nextDouble() < neatCombination.reenableGeneInheritanceThresold()) {
195 1 1. shouldReEnable : Substituted 1 with 0 → KILLED
				shouldReEnable = true;
196
			}
197
		}
198
199 2 1. shouldReEnable : replaced boolean return with true for net/bmahe/genetics4j/neat/combination/NeatChromosomeCombinator::shouldReEnable → KILLED
2. shouldReEnable : replaced boolean return with false for net/bmahe/genetics4j/neat/combination/NeatChromosomeCombinator::shouldReEnable → KILLED
		return shouldReEnable;
200
	}
201
202
	/**
203
	 * Constructs a new NEAT chromosome combinator with the specified components.
204
	 * 
205
	 * <p>The combinator uses the random generator for stochastic decisions during crossover, the combination policy for
206
	 * inheritance parameters, and the comparison handler for determining parent fitness relationships.
207
	 * 
208
	 * @param _randomGenerator         random number generator for stochastic crossover decisions
209
	 * @param _neatCombination         crossover policy defining inheritance parameters
210
	 * @param _parentComparisonHandler handler for comparing parent fitness and determining inheritance bias
211
	 * @throws IllegalArgumentException if any parameter is null
212
	 */
213
	public NeatChromosomeCombinator(final RandomGenerator _randomGenerator,
214
			final NeatCombination _neatCombination,
215
			final ParentComparisonHandler _parentComparisonHandler) {
216
		Objects.requireNonNull(_randomGenerator);
217
		Objects.requireNonNull(_neatCombination);
218
		Objects.requireNonNull(_parentComparisonHandler);
219
220 1 1. <init> : Removed assignment to member variable randomGenerator → KILLED
		this.randomGenerator = _randomGenerator;
221 1 1. <init> : Removed assignment to member variable neatCombination → KILLED
		this.neatCombination = _neatCombination;
222 1 1. <init> : Removed assignment to member variable parentComparisonHandler → KILLED
		this.parentComparisonHandler = _parentComparisonHandler;
223
	}
224
225
	/**
226
	 * Performs genetic crossover between two NEAT chromosomes to produce offspring.
227
	 * 
228
	 * <p>This method implements the NEAT crossover algorithm, aligning genes by innovation number and applying
229
	 * inheritance rules based on parent fitness and configuration parameters. The result is a single offspring
230
	 * chromosome that inherits network topology and connection weights from both parents.
231
	 * 
232
	 * <p>Crossover process:
233
	 * <ol>
234
	 * <li>Compare parent fitness to determine inheritance bias</li>
235
	 * <li>Align genes by innovation number between parents</li>
236
	 * <li>Process matching genes with random inheritance (biased)</li>
237
	 * <li>Process disjoint genes based on fitness comparison</li>
238
	 * <li>Process excess genes from fitter parent</li>
239
	 * <li>Apply gene re-enabling rules for disabled connections</li>
240
	 * </ol>
241
	 * 
242
	 * @param eaConfiguration     evolutionary algorithm configuration containing fitness comparator
243
	 * @param firstChromosome     first parent chromosome (must be NeatChromosome)
244
	 * @param firstParentFitness  fitness value of first parent
245
	 * @param secondChromosome    second parent chromosome (must be NeatChromosome)
246
	 * @param secondParentFitness fitness value of second parent
247
	 * @return list containing single offspring chromosome
248
	 * @throws IllegalArgumentException if chromosomes are not NeatChromosome instances or any parameter is null
249
	 */
250
	@Override
251
	public List<Chromosome> combine(final AbstractEAConfiguration<T> eaConfiguration, final Chromosome firstChromosome,
252
			final T firstParentFitness, final Chromosome secondChromosome, final T secondParentFitness) {
253
		Objects.requireNonNull(eaConfiguration);
254
		Objects.requireNonNull(firstChromosome);
255
		Objects.requireNonNull(firstParentFitness);
256
		Validate.isInstanceOf(NeatChromosome.class, firstChromosome);
257
		Objects.requireNonNull(secondChromosome);
258
		Objects.requireNonNull(secondParentFitness);
259
		Validate.isInstanceOf(NeatChromosome.class, secondChromosome);
260
261
		final NeatChromosome firstNeatChromosome = (NeatChromosome) firstChromosome;
262
		final NeatChromosome secondNeatChromosome = (NeatChromosome) secondChromosome;
263
		Validate.isTrue(
264 4 1. combine : Substituted 0 with 1 → SURVIVED
2. combine : removed call to net/bmahe/genetics4j/neat/spec/NeatNodeLayout::isCompatibleWith → KILLED
3. combine : removed call to net/bmahe/genetics4j/neat/chromosomes/NeatChromosome::getNodeLayout → KILLED
4. combine : removed call to net/bmahe/genetics4j/neat/chromosomes/NeatChromosome::getNodeLayout → KILLED
				firstNeatChromosome.getNodeLayout().isCompatibleWith(secondNeatChromosome.getNodeLayout()),
265
					"Cannot combine NEAT chromosomes with incompatible node layouts");
266 1 1. combine : removed call to net/bmahe/genetics4j/core/spec/AbstractEAConfiguration::fitnessComparator → KILLED
		final Comparator<T> fitnessComparator = eaConfiguration.fitnessComparator();
267 1 1. combine : removed call to net/bmahe/genetics4j/neat/spec/combination/NeatCombination::inheritanceThresold → KILLED
		final double inheritanceThresold = neatCombination.inheritanceThresold();
268 1 1. combine : removed call to net/bmahe/genetics4j/neat/spec/combination/NeatCombination::parentComparisonPolicy → KILLED
		final ParentComparisonPolicy parentComparisonPolicy = neatCombination.parentComparisonPolicy();
269
270 1 1. combine : removed call to java/util/Comparator::compare → KILLED
		final int fitnessComparison = fitnessComparator.compare(firstParentFitness, secondParentFitness);
271
		final ChosenOtherChromosome comparedChromosomes = parentComparisonHandler
272 1 1. combine : removed call to net/bmahe/genetics4j/neat/combination/parentcompare/ParentComparisonHandler::compare → KILLED
				.compare(parentComparisonPolicy, firstNeatChromosome, secondNeatChromosome, fitnessComparison);
273 1 1. combine : removed call to net/bmahe/genetics4j/neat/combination/parentcompare/ChosenOtherChromosome::chosen → KILLED
		final NeatChromosome bestChromosome = comparedChromosomes.chosen();
274 1 1. combine : removed call to net/bmahe/genetics4j/neat/combination/parentcompare/ChosenOtherChromosome::other → KILLED
		final NeatChromosome worstChromosome = comparedChromosomes.other();
275
276 1 1. combine : removed call to java/util/ArrayList::<init> → KILLED
		final List<Connection> combinedConnections = new ArrayList<>();
277 1 1. combine : removed call to java/util/HashMap::<init> → KILLED
		final Map<Integer, Set<Integer>> linksCache = new HashMap<>();
278
279 1 1. combine : removed call to net/bmahe/genetics4j/neat/chromosomes/NeatChromosome::getConnections → KILLED
		final var bestConnections = bestChromosome.getConnections();
280 1 1. combine : removed call to net/bmahe/genetics4j/neat/chromosomes/NeatChromosome::getConnections → KILLED
		final var worstConnections = worstChromosome.getConnections();
281
282 1 1. combine : Substituted 0 with 1 → KILLED
		int indexBest = 0;
283 1 1. combine : Substituted 0 with 1 → KILLED
		int indexWorst = 0;
284
285 10 1. combine : negated conditional → KILLED
2. combine : changed conditional boundary → KILLED
3. combine : removed conditional - replaced comparison check with false → KILLED
4. combine : changed conditional boundary → KILLED
5. combine : removed conditional - replaced comparison check with false → KILLED
6. combine : removed call to java/util/List::size → KILLED
7. combine : removed conditional - replaced comparison check with true → KILLED
8. combine : removed conditional - replaced comparison check with true → KILLED
9. combine : removed call to java/util/List::size → KILLED
10. combine : negated conditional → KILLED
		while (indexBest < bestConnections.size() && indexWorst < worstConnections.size()) {
286
287 1 1. combine : removed call to java/util/List::get → KILLED
			final var bestConnection = bestConnections.get(indexBest);
288 1 1. combine : removed call to java/util/List::get → KILLED
			final var worstConnection = worstConnections.get(indexWorst);
289
290 5 1. combine : removed call to net/bmahe/genetics4j/neat/Connection::innovation → KILLED
2. combine : negated conditional → KILLED
3. combine : removed conditional - replaced equality check with false → KILLED
4. combine : removed call to net/bmahe/genetics4j/neat/Connection::innovation → KILLED
5. combine : removed conditional - replaced equality check with true → KILLED
			if (bestConnection.innovation() == worstConnection.innovation()) {
291
				/**
292
				 * If innovation is the same, we pick the connection randomly
293
				 */
294
				var original = bestConnection;
295
				var other = worstConnection;
296 7 1. combine : removed call to java/util/random/RandomGenerator::nextDouble → SURVIVED
2. combine : changed conditional boundary → SURVIVED
3. combine : removed conditional - replaced comparison check with true → KILLED
4. combine : removed conditional - replaced comparison check with false → KILLED
5. combine : Replaced double subtraction with addition → KILLED
6. combine : negated conditional → KILLED
7. combine : Substituted 1.0 with 2.0 → KILLED
				if (randomGenerator.nextDouble() < 1 - inheritanceThresold) {
297
					original = worstConnection;
298
					other = bestConnection;
299
				}
300 4 1. combine : removed call to net/bmahe/genetics4j/neat/combination/NeatChromosomeCombinator::linksCacheContainsConnection → SURVIVED
2. combine : removed conditional - replaced equality check with true → SURVIVED
3. combine : negated conditional → KILLED
4. combine : removed conditional - replaced equality check with false → KILLED
				if (linksCacheContainsConnection(linksCache, original) == false) {
301
302
					/**
303
					 * If the chosen gene is disabled but the other one is enabled, then there is a chance we will re-enable
304
					 * it
305
					 */
306 6 1. combine : removed conditional - replaced equality check with true → KILLED
2. combine : removed conditional - replaced equality check with false → KILLED
3. combine : removed call to net/bmahe/genetics4j/neat/Connection::isEnabled → KILLED
4. combine : Substituted 1 with 0 → KILLED
5. combine : negated conditional → KILLED
6. combine : removed call to net/bmahe/genetics4j/neat/combination/NeatChromosomeCombinator::shouldReEnable → KILLED
					final boolean isEnabled = shouldReEnable(original, other) ? true : original.isEnabled();
307
308 6 1. combine : replaced call to net/bmahe/genetics4j/neat/Connection$Builder::from with receiver → KILLED
2. combine : removed call to net/bmahe/genetics4j/neat/Connection::builder → KILLED
3. combine : replaced call to net/bmahe/genetics4j/neat/Connection$Builder::isEnabled with receiver → KILLED
4. combine : removed call to net/bmahe/genetics4j/neat/Connection$Builder::isEnabled → KILLED
5. combine : removed call to net/bmahe/genetics4j/neat/Connection$Builder::build → KILLED
6. combine : removed call to net/bmahe/genetics4j/neat/Connection$Builder::from → KILLED
					final var childConnection = Connection.builder().from(original).isEnabled(isEnabled).build();
309 1 1. combine : removed call to java/util/List::add → KILLED
					combinedConnections.add(childConnection);
310 1 1. combine : removed call to net/bmahe/genetics4j/neat/combination/NeatChromosomeCombinator::insertInlinksCache → SURVIVED
					insertInlinksCache(linksCache, original);
311
				}
312 2 1. combine : Removed increment 1 → KILLED
2. combine : Changed increment from 1 to -1 → KILLED
				indexBest++;
313 2 1. combine : Removed increment 1 → SURVIVED
2. combine : Changed increment from 1 to -1 → KILLED
				indexWorst++;
314 6 1. combine : removed call to net/bmahe/genetics4j/neat/Connection::innovation → SURVIVED
2. combine : changed conditional boundary → SURVIVED
3. combine : removed call to net/bmahe/genetics4j/neat/Connection::innovation → KILLED
4. combine : negated conditional → KILLED
5. combine : removed conditional - replaced comparison check with true → KILLED
6. combine : removed conditional - replaced comparison check with false → KILLED
			} else if (bestConnection.innovation() > worstConnection.innovation()) {
315
316
				/**
317
				 * If the fitnesses are equal, then we randomly inherit from the parent Otherwise, we do not inherit from
318
				 * the lesser gene
319
				 */
320 10 1. combine : removed conditional - replaced equality check with false → SURVIVED
2. combine : removed conditional - replaced comparison check with false → NO_COVERAGE
3. combine : Replaced double subtraction with addition → NO_COVERAGE
4. combine : removed conditional - replaced comparison check with true → NO_COVERAGE
5. combine : Substituted 1.0 with 2.0 → NO_COVERAGE
6. combine : negated conditional → NO_COVERAGE
7. combine : removed call to java/util/random/RandomGenerator::nextDouble → NO_COVERAGE
8. combine : changed conditional boundary → NO_COVERAGE
9. combine : negated conditional → KILLED
10. combine : removed conditional - replaced equality check with true → KILLED
				if (fitnessComparison == 0 && randomGenerator.nextDouble() < 1.0 - inheritanceThresold) {
321
					final var original = worstConnection;
322 4 1. combine : negated conditional → NO_COVERAGE
2. combine : removed call to net/bmahe/genetics4j/neat/combination/NeatChromosomeCombinator::linksCacheContainsConnection → NO_COVERAGE
3. combine : removed conditional - replaced equality check with true → NO_COVERAGE
4. combine : removed conditional - replaced equality check with false → NO_COVERAGE
					if (linksCacheContainsConnection(linksCache, original) == false) {
323 3 1. combine : replaced call to net/bmahe/genetics4j/neat/Connection::copyOf with argument → NO_COVERAGE
2. combine : removed call to java/util/List::add → NO_COVERAGE
3. combine : removed call to net/bmahe/genetics4j/neat/Connection::copyOf → NO_COVERAGE
						combinedConnections.add(Connection.copyOf(original));
324 1 1. combine : removed call to net/bmahe/genetics4j/neat/combination/NeatChromosomeCombinator::insertInlinksCache → NO_COVERAGE
						insertInlinksCache(linksCache, original);
325
					}
326
				}
327
328 2 1. combine : Removed increment 1 → TIMED_OUT
2. combine : Changed increment from 1 to -1 → KILLED
				indexWorst++;
329
			} else {
330
331
				/**
332
				 * If the fitnesses are equal, then we randomly inherit from the parent Otherwise, we always inherit from
333
				 * the better gene
334
				 */
335
336 8 1. combine : removed call to java/util/random/RandomGenerator::nextDouble → NO_COVERAGE
2. combine : changed conditional boundary → NO_COVERAGE
3. combine : removed conditional - replaced comparison check with false → NO_COVERAGE
4. combine : removed conditional - replaced equality check with false → SURVIVED
5. combine : removed conditional - replaced comparison check with true → NO_COVERAGE
6. combine : negated conditional → NO_COVERAGE
7. combine : negated conditional → KILLED
8. combine : removed conditional - replaced equality check with true → KILLED
				if (fitnessComparison != 0 || randomGenerator.nextDouble() < inheritanceThresold) {
337 4 1. combine : removed call to net/bmahe/genetics4j/neat/combination/NeatChromosomeCombinator::linksCacheContainsConnection → SURVIVED
2. combine : removed conditional - replaced equality check with true → SURVIVED
3. combine : negated conditional → KILLED
4. combine : removed conditional - replaced equality check with false → KILLED
					if (linksCacheContainsConnection(linksCache, bestConnection) == false) {
338 3 1. combine : replaced call to net/bmahe/genetics4j/neat/Connection::copyOf with argument → SURVIVED
2. combine : removed call to net/bmahe/genetics4j/neat/Connection::copyOf → KILLED
3. combine : removed call to java/util/List::add → KILLED
						combinedConnections.add(Connection.copyOf(bestConnection));
339 1 1. combine : removed call to net/bmahe/genetics4j/neat/combination/NeatChromosomeCombinator::insertInlinksCache → SURVIVED
						insertInlinksCache(linksCache, bestConnection);
340
					}
341
				}
342 2 1. combine : Removed increment 1 → TIMED_OUT
2. combine : Changed increment from 1 to -1 → KILLED
				indexBest++;
343
			}
344
		}
345
346
		/*
347
		 * Case where the best connection has more genes. It's called excess genes
348
		 */
349 5 1. combine : negated conditional → KILLED
2. combine : removed conditional - replaced comparison check with false → KILLED
3. combine : changed conditional boundary → KILLED
4. combine : removed conditional - replaced comparison check with true → KILLED
5. combine : removed call to java/util/List::size → KILLED
		while (indexBest < bestConnections.size()) {
350
			/**
351
			 * If the fitnesses are equal, then we randomly inherit from the parent Otherwise, we always inherit from the
352
			 * better gene
353
			 */
354 8 1. combine : removed call to java/util/random/RandomGenerator::nextDouble → NO_COVERAGE
2. combine : removed conditional - replaced comparison check with true → NO_COVERAGE
3. combine : changed conditional boundary → NO_COVERAGE
4. combine : negated conditional → NO_COVERAGE
5. combine : removed conditional - replaced comparison check with false → NO_COVERAGE
6. combine : removed conditional - replaced equality check with false → SURVIVED
7. combine : negated conditional → KILLED
8. combine : removed conditional - replaced equality check with true → KILLED
			if (fitnessComparison != 0 || randomGenerator.nextDouble() < inheritanceThresold) {
355 1 1. combine : removed call to java/util/List::get → KILLED
				final var bestConnection = bestConnections.get(indexBest);
356 4 1. combine : removed call to net/bmahe/genetics4j/neat/combination/NeatChromosomeCombinator::linksCacheContainsConnection → SURVIVED
2. combine : removed conditional - replaced equality check with true → SURVIVED
3. combine : negated conditional → KILLED
4. combine : removed conditional - replaced equality check with false → KILLED
				if (linksCacheContainsConnection(linksCache, bestConnection) == false) {
357 3 1. combine : replaced call to net/bmahe/genetics4j/neat/Connection::copyOf with argument → SURVIVED
2. combine : removed call to java/util/List::add → KILLED
3. combine : removed call to net/bmahe/genetics4j/neat/Connection::copyOf → KILLED
					combinedConnections.add(Connection.copyOf(bestConnection));
358 1 1. combine : removed call to net/bmahe/genetics4j/neat/combination/NeatChromosomeCombinator::insertInlinksCache → SURVIVED
					insertInlinksCache(linksCache, bestConnection);
359
				}
360
361
			}
362
			indexBest++;
363
		}
364
365
		/*
366
		 * Case where the worst connection has more genes. It's called excess genes. Since we don't inherit when their
367
		 * fitness aren't equal, it means we can skip the excess genes from the weaker connections. However we will
368
		 * randomly inherit if their fitnesses are equal
369
		 */
370 8 1. combine : removed conditional - replaced equality check with false → SURVIVED
2. combine : changed conditional boundary → NO_COVERAGE
3. combine : negated conditional → NO_COVERAGE
4. combine : removed conditional - replaced comparison check with false → NO_COVERAGE
5. combine : removed call to java/util/List::size → NO_COVERAGE
6. combine : removed conditional - replaced comparison check with true → NO_COVERAGE
7. combine : negated conditional → KILLED
8. combine : removed conditional - replaced equality check with true → KILLED
		while (fitnessComparison == 0 && indexWorst < worstConnections.size()) {
371 7 1. combine : removed call to java/util/random/RandomGenerator::nextDouble → NO_COVERAGE
2. combine : Substituted 1.0 with 2.0 → NO_COVERAGE
3. combine : removed conditional - replaced comparison check with false → NO_COVERAGE
4. combine : changed conditional boundary → NO_COVERAGE
5. combine : Replaced double subtraction with addition → NO_COVERAGE
6. combine : removed conditional - replaced comparison check with true → NO_COVERAGE
7. combine : negated conditional → NO_COVERAGE
			if (randomGenerator.nextDouble() < 1.0 - inheritanceThresold) {
372 1 1. combine : removed call to java/util/List::get → NO_COVERAGE
				final var worstConnection = worstConnections.get(indexWorst);
373 4 1. combine : removed call to net/bmahe/genetics4j/neat/combination/NeatChromosomeCombinator::linksCacheContainsConnection → NO_COVERAGE
2. combine : removed conditional - replaced equality check with false → NO_COVERAGE
3. combine : removed conditional - replaced equality check with true → NO_COVERAGE
4. combine : negated conditional → NO_COVERAGE
				if (linksCacheContainsConnection(linksCache, worstConnection) == false) {
374 3 1. combine : replaced call to net/bmahe/genetics4j/neat/Connection::copyOf with argument → NO_COVERAGE
2. combine : removed call to java/util/List::add → NO_COVERAGE
3. combine : removed call to net/bmahe/genetics4j/neat/Connection::copyOf → NO_COVERAGE
					combinedConnections.add(Connection.copyOf(worstConnection));
375 1 1. combine : removed call to net/bmahe/genetics4j/neat/combination/NeatChromosomeCombinator::insertInlinksCache → NO_COVERAGE
					insertInlinksCache(linksCache, worstConnection);
376
				}
377
378
			}
379 2 1. combine : Changed increment from 1 to -1 → NO_COVERAGE
2. combine : Removed increment 1 → NO_COVERAGE
			indexWorst++;
380
		}
381
382 2 1. combine : replaced return value with Collections.emptyList for net/bmahe/genetics4j/neat/combination/NeatChromosomeCombinator::combine → KILLED
2. combine : removed call to java/util/List::of → KILLED
		return List.of(
383 1 1. combine : removed call to net/bmahe/genetics4j/neat/chromosomes/NeatChromosome::getNodeLayout → KILLED
				new NeatChromosome(bestChromosome.getNodeLayout(),
384 1 1. combine : removed call to net/bmahe/genetics4j/neat/chromosomes/NeatChromosome::getMinWeightValue → SURVIVED
						bestChromosome.getMinWeightValue(),
385 2 1. combine : removed call to net/bmahe/genetics4j/neat/chromosomes/NeatChromosome::getMaxWeightValue → SURVIVED
2. combine : removed call to net/bmahe/genetics4j/neat/chromosomes/NeatChromosome::<init> → KILLED
						bestChromosome.getMaxWeightValue(),
386
						combinedConnections));
387
	}
388
}

Mutations

149

1.1
Location : linksCacheContainsConnection
Killed by : none
removed call to net/bmahe/genetics4j/neat/Connection::fromNodeIndex → SURVIVED
Covering tests

150

1.1
Location : linksCacheContainsConnection
Killed by : none
removed call to net/bmahe/genetics4j/neat/Connection::toNodeIndex → SURVIVED
Covering tests

152

1.1
Location : linksCacheContainsConnection
Killed by : none
removed call to java/util/Map::containsKey → SURVIVED
Covering tests

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

3.3
Location : linksCacheContainsConnection
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed conditional - replaced equality check with true → KILLED

4.4
Location : linksCacheContainsConnection
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
negated conditional → KILLED

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

6.6
Location : linksCacheContainsConnection
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
replaced boolean return with true for net/bmahe/genetics4j/neat/combination/NeatChromosomeCombinator::linksCacheContainsConnection → KILLED

7.7
Location : linksCacheContainsConnection
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
Substituted 1 with 0 → KILLED

153

1.1
Location : linksCacheContainsConnection
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
negated conditional → KILLED

2.2
Location : linksCacheContainsConnection
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed call to java/util/Map::get → KILLED

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

4.4
Location : linksCacheContainsConnection
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
Substituted 1 with 0 → KILLED

5.5
Location : linksCacheContainsConnection
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
replaced call to java/util/Map::get with argument → KILLED

6.6
Location : linksCacheContainsConnection
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed call to java/lang/Integer::valueOf → KILLED

7.7
Location : linksCacheContainsConnection
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed conditional - replaced equality check with true → KILLED

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

9.9
Location : linksCacheContainsConnection
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
Substituted 0 with 1 → KILLED

10.10
Location : linksCacheContainsConnection
Killed by : none
Substituted 1 with 0 → NO_COVERAGE

11.11
Location : linksCacheContainsConnection
Killed by : none
removed call to java/util/Set::contains → SURVIVED Covering tests

170

1.1
Location : insertInlinksCache
Killed by : none
removed call to net/bmahe/genetics4j/neat/Connection::fromNodeIndex → SURVIVED
Covering tests

171

1.1
Location : insertInlinksCache
Killed by : none
removed call to net/bmahe/genetics4j/neat/Connection::toNodeIndex → SURVIVED
Covering tests

173

1.1
Location : insertInlinksCache
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
replaced call to java/util/Map::computeIfAbsent with argument → KILLED

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

3.3
Location : insertInlinksCache
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed call to java/util/Map::computeIfAbsent → KILLED

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

5.5
Location : lambda$insertInlinksCache$0
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed call to java/util/HashSet::<init> → KILLED

6.6
Location : insertInlinksCache
Killed by : none
removed call to java/util/Set::add → SURVIVED Covering tests

7.7
Location : lambda$insertInlinksCache$0
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
replaced return value with Collections.emptySet for net/bmahe/genetics4j/neat/combination/NeatChromosomeCombinator::lambda$insertInlinksCache$0 → KILLED

192

1.1
Location : shouldReEnable
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:shouldNeverReEnable()]
Substituted 0 with 1 → KILLED

193

1.1
Location : shouldReEnable
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:shouldAlwaysReEnable()]
removed conditional - replaced equality check with true → KILLED

2.2
Location : shouldReEnable
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:shouldAlwaysReEnable()]
removed call to net/bmahe/genetics4j/neat/Connection::isEnabled → KILLED

3.3
Location : shouldReEnable
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:shouldAlwaysReEnable()]
negated conditional → KILLED

4.4
Location : shouldReEnable
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:shouldAlwaysReEnable()]
removed call to net/bmahe/genetics4j/neat/Connection::isEnabled → KILLED

5.5
Location : shouldReEnable
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:shouldAlwaysReEnable()]
Substituted 1 with 0 → KILLED

6.6
Location : shouldReEnable
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:shouldAlwaysReEnable()]
removed conditional - replaced equality check with false → KILLED

7.7
Location : shouldReEnable
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:shouldAlwaysReEnable()]
removed conditional - replaced equality check with true → KILLED

8.8
Location : shouldReEnable
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:shouldAlwaysReEnable()]
negated conditional → KILLED

9.9
Location : shouldReEnable
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:shouldAlwaysReEnable()]
removed conditional - replaced equality check with false → KILLED

194

1.1
Location : shouldReEnable
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:shouldAlwaysReEnable()]
removed conditional - replaced comparison check with false → KILLED

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

3.3
Location : shouldReEnable
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:shouldNeverReEnable()]
negated conditional → KILLED

4.4
Location : shouldReEnable
Killed by : none
removed call to java/util/random/RandomGenerator::nextDouble → SURVIVED Covering tests

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

6.6
Location : shouldReEnable
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:shouldAlwaysReEnable()]
removed call to net/bmahe/genetics4j/neat/spec/combination/NeatCombination::reenableGeneInheritanceThresold → KILLED

195

1.1
Location : shouldReEnable
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:shouldAlwaysReEnable()]
Substituted 1 with 0 → KILLED

199

1.1
Location : shouldReEnable
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:shouldNeverReEnable()]
replaced boolean return with true for net/bmahe/genetics4j/neat/combination/NeatChromosomeCombinator::shouldReEnable → KILLED

2.2
Location : shouldReEnable
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:shouldAlwaysReEnable()]
replaced boolean return with false for net/bmahe/genetics4j/neat/combination/NeatChromosomeCombinator::shouldReEnable → KILLED

220

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

221

1.1
Location : <init>
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:shouldNeverReEnable()]
Removed assignment to member variable neatCombination → KILLED

222

1.1
Location : <init>
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
Removed assignment to member variable parentComparisonHandler → KILLED

264

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

2.2
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed call to net/bmahe/genetics4j/neat/spec/NeatNodeLayout::isCompatibleWith → KILLED

3.3
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed call to net/bmahe/genetics4j/neat/chromosomes/NeatChromosome::getNodeLayout → KILLED

4.4
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:rejectsIncompatibleNodeLayouts()]
removed call to net/bmahe/genetics4j/neat/chromosomes/NeatChromosome::getNodeLayout → KILLED

266

1.1
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed call to net/bmahe/genetics4j/core/spec/AbstractEAConfiguration::fitnessComparator → KILLED

267

1.1
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed call to net/bmahe/genetics4j/neat/spec/combination/NeatCombination::inheritanceThresold → KILLED

268

1.1
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed call to net/bmahe/genetics4j/neat/spec/combination/NeatCombination::parentComparisonPolicy → KILLED

270

1.1
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed call to java/util/Comparator::compare → KILLED

272

1.1
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed call to net/bmahe/genetics4j/neat/combination/parentcompare/ParentComparisonHandler::compare → KILLED

273

1.1
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed call to net/bmahe/genetics4j/neat/combination/parentcompare/ChosenOtherChromosome::chosen → KILLED

274

1.1
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed call to net/bmahe/genetics4j/neat/combination/parentcompare/ChosenOtherChromosome::other → KILLED

276

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

277

1.1
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed call to java/util/HashMap::<init> → KILLED

279

1.1
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed call to net/bmahe/genetics4j/neat/chromosomes/NeatChromosome::getConnections → KILLED

280

1.1
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed call to net/bmahe/genetics4j/neat/chromosomes/NeatChromosome::getConnections → KILLED

282

1.1
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
Substituted 0 with 1 → KILLED

283

1.1
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
Substituted 0 with 1 → KILLED

285

1.1
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
negated conditional → KILLED

2.2
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
changed conditional boundary → KILLED

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

4.4
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
changed conditional boundary → KILLED

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

6.6
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed call to java/util/List::size → KILLED

7.7
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed conditional - replaced comparison check with true → KILLED

8.8
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed conditional - replaced comparison check with true → KILLED

9.9
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed call to java/util/List::size → KILLED

10.10
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
negated conditional → KILLED

287

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

288

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

290

1.1
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed call to net/bmahe/genetics4j/neat/Connection::innovation → KILLED

2.2
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
negated conditional → KILLED

3.3
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed conditional - replaced equality check with false → KILLED

4.4
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed call to net/bmahe/genetics4j/neat/Connection::innovation → KILLED

5.5
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed conditional - replaced equality check with true → KILLED

296

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

2.2
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickWorstNoReEnable()]
removed conditional - replaced comparison check with false → KILLED

3.3
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
Replaced double subtraction with addition → KILLED

4.4
Location : combine
Killed by : none
removed call to java/util/random/RandomGenerator::nextDouble → SURVIVED
Covering tests

5.5
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
negated conditional → KILLED

6.6
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
Substituted 1.0 with 2.0 → KILLED

7.7
Location : combine
Killed by : none
changed conditional boundary → SURVIVED Covering tests

300

1.1
Location : combine
Killed by : none
removed call to net/bmahe/genetics4j/neat/combination/NeatChromosomeCombinator::linksCacheContainsConnection → SURVIVED
Covering tests

2.2
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
negated conditional → KILLED

3.3
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed conditional - replaced equality check with false → KILLED

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

306

1.1
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickWorstNoReEnable()]
removed conditional - replaced equality check with true → KILLED

2.2
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed conditional - replaced equality check with false → KILLED

3.3
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed call to net/bmahe/genetics4j/neat/Connection::isEnabled → KILLED

4.4
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
Substituted 1 with 0 → KILLED

5.5
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
negated conditional → KILLED

6.6
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed call to net/bmahe/genetics4j/neat/combination/NeatChromosomeCombinator::shouldReEnable → KILLED

308

1.1
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
replaced call to net/bmahe/genetics4j/neat/Connection$Builder::from with receiver → KILLED

2.2
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed call to net/bmahe/genetics4j/neat/Connection::builder → KILLED

3.3
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
replaced call to net/bmahe/genetics4j/neat/Connection$Builder::isEnabled with receiver → KILLED

4.4
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed call to net/bmahe/genetics4j/neat/Connection$Builder::isEnabled → KILLED

5.5
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed call to net/bmahe/genetics4j/neat/Connection$Builder::build → KILLED

6.6
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed call to net/bmahe/genetics4j/neat/Connection$Builder::from → KILLED

309

1.1
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed call to java/util/List::add → KILLED

310

1.1
Location : combine
Killed by : none
removed call to net/bmahe/genetics4j/neat/combination/NeatChromosomeCombinator::insertInlinksCache → SURVIVED
Covering tests

312

1.1
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickWorstNoReEnable()]
Removed increment 1 → KILLED

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

313

1.1
Location : combine
Killed by : none
Removed increment 1 → SURVIVED
Covering tests

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

314

1.1
Location : combine
Killed by : none
removed call to net/bmahe/genetics4j/neat/Connection::innovation → SURVIVED
Covering tests

2.2
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickWorstNoReEnable()]
removed call to net/bmahe/genetics4j/neat/Connection::innovation → KILLED

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

4.4
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
negated conditional → KILLED

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

6.6
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickWorstNoReEnable()]
removed conditional - replaced comparison check with false → KILLED

320

1.1
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickWorstNoReEnable()]
negated conditional → KILLED

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

3.3
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickWorstNoReEnable()]
removed conditional - replaced equality check with true → KILLED

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

5.5
Location : combine
Killed by : none
Replaced double subtraction with addition → NO_COVERAGE

6.6
Location : combine
Killed by : none
removed conditional - replaced comparison check with true → NO_COVERAGE

7.7
Location : combine
Killed by : none
Substituted 1.0 with 2.0 → NO_COVERAGE

8.8
Location : combine
Killed by : none
negated conditional → NO_COVERAGE

9.9
Location : combine
Killed by : none
removed call to java/util/random/RandomGenerator::nextDouble → NO_COVERAGE

10.10
Location : combine
Killed by : none
changed conditional boundary → NO_COVERAGE

322

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

2.2
Location : combine
Killed by : none
removed call to net/bmahe/genetics4j/neat/combination/NeatChromosomeCombinator::linksCacheContainsConnection → NO_COVERAGE

3.3
Location : combine
Killed by : none
removed conditional - replaced equality check with true → NO_COVERAGE

4.4
Location : combine
Killed by : none
removed conditional - replaced equality check with false → NO_COVERAGE

323

1.1
Location : combine
Killed by : none
replaced call to net/bmahe/genetics4j/neat/Connection::copyOf with argument → NO_COVERAGE

2.2
Location : combine
Killed by : none
removed call to java/util/List::add → NO_COVERAGE

3.3
Location : combine
Killed by : none
removed call to net/bmahe/genetics4j/neat/Connection::copyOf → NO_COVERAGE

324

1.1
Location : combine
Killed by : none
removed call to net/bmahe/genetics4j/neat/combination/NeatChromosomeCombinator::insertInlinksCache → NO_COVERAGE

328

1.1
Location : combine
Killed by : none
Removed increment 1 → TIMED_OUT

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

336

1.1
Location : combine
Killed by : none
removed call to java/util/random/RandomGenerator::nextDouble → NO_COVERAGE

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

3.3
Location : combine
Killed by : none
removed conditional - replaced comparison check with false → NO_COVERAGE

4.4
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickWorstNoReEnable()]
negated conditional → KILLED

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

6.6
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickWorstNoReEnable()]
removed conditional - replaced equality check with true → KILLED

7.7
Location : combine
Killed by : none
removed conditional - replaced comparison check with true → NO_COVERAGE

8.8
Location : combine
Killed by : none
negated conditional → NO_COVERAGE

337

1.1
Location : combine
Killed by : none
removed call to net/bmahe/genetics4j/neat/combination/NeatChromosomeCombinator::linksCacheContainsConnection → SURVIVED
Covering tests

2.2
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
negated conditional → KILLED

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

4.4
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed conditional - replaced equality check with false → KILLED

338

1.1
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed call to net/bmahe/genetics4j/neat/Connection::copyOf → KILLED

2.2
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed call to java/util/List::add → KILLED

3.3
Location : combine
Killed by : none
replaced call to net/bmahe/genetics4j/neat/Connection::copyOf with argument → SURVIVED
Covering tests

339

1.1
Location : combine
Killed by : none
removed call to net/bmahe/genetics4j/neat/combination/NeatChromosomeCombinator::insertInlinksCache → SURVIVED
Covering tests

342

1.1
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
Changed increment from 1 to -1 → KILLED

2.2
Location : combine
Killed by : none
Removed increment 1 → TIMED_OUT

349

1.1
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
negated conditional → KILLED

2.2
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed conditional - replaced comparison check with false → KILLED

3.3
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
changed conditional boundary → KILLED

4.4
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed conditional - replaced comparison check with true → KILLED

5.5
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed call to java/util/List::size → KILLED

354

1.1
Location : combine
Killed by : none
removed call to java/util/random/RandomGenerator::nextDouble → NO_COVERAGE

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

3.3
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickWorstNoReEnable()]
negated conditional → KILLED

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

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

6.6
Location : combine
Killed by : none
negated conditional → NO_COVERAGE

7.7
Location : combine
Killed by : none
removed conditional - replaced comparison check with false → NO_COVERAGE

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

355

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

356

1.1
Location : combine
Killed by : none
removed call to net/bmahe/genetics4j/neat/combination/NeatChromosomeCombinator::linksCacheContainsConnection → SURVIVED
Covering tests

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

3.3
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
negated conditional → KILLED

4.4
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed conditional - replaced equality check with false → KILLED

357

1.1
Location : combine
Killed by : none
replaced call to net/bmahe/genetics4j/neat/Connection::copyOf with argument → SURVIVED
Covering tests

2.2
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed call to java/util/List::add → KILLED

3.3
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed call to net/bmahe/genetics4j/neat/Connection::copyOf → KILLED

358

1.1
Location : combine
Killed by : none
removed call to net/bmahe/genetics4j/neat/combination/NeatChromosomeCombinator::insertInlinksCache → SURVIVED
Covering tests

370

1.1
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickWorstNoReEnable()]
negated conditional → KILLED

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

3.3
Location : combine
Killed by : none
changed conditional boundary → NO_COVERAGE

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

5.5
Location : combine
Killed by : none
negated conditional → NO_COVERAGE

6.6
Location : combine
Killed by : none
removed conditional - replaced comparison check with false → NO_COVERAGE

7.7
Location : combine
Killed by : none
removed call to java/util/List::size → NO_COVERAGE

8.8
Location : combine
Killed by : none
removed conditional - replaced comparison check with true → NO_COVERAGE

371

1.1
Location : combine
Killed by : none
removed call to java/util/random/RandomGenerator::nextDouble → NO_COVERAGE

2.2
Location : combine
Killed by : none
Substituted 1.0 with 2.0 → NO_COVERAGE

3.3
Location : combine
Killed by : none
removed conditional - replaced comparison check with false → NO_COVERAGE

4.4
Location : combine
Killed by : none
changed conditional boundary → NO_COVERAGE

5.5
Location : combine
Killed by : none
Replaced double subtraction with addition → NO_COVERAGE

6.6
Location : combine
Killed by : none
removed conditional - replaced comparison check with true → NO_COVERAGE

7.7
Location : combine
Killed by : none
negated conditional → NO_COVERAGE

372

1.1
Location : combine
Killed by : none
removed call to java/util/List::get → NO_COVERAGE

373

1.1
Location : combine
Killed by : none
removed call to net/bmahe/genetics4j/neat/combination/NeatChromosomeCombinator::linksCacheContainsConnection → NO_COVERAGE

2.2
Location : combine
Killed by : none
removed conditional - replaced equality check with false → NO_COVERAGE

3.3
Location : combine
Killed by : none
removed conditional - replaced equality check with true → NO_COVERAGE

4.4
Location : combine
Killed by : none
negated conditional → NO_COVERAGE

374

1.1
Location : combine
Killed by : none
replaced call to net/bmahe/genetics4j/neat/Connection::copyOf with argument → NO_COVERAGE

2.2
Location : combine
Killed by : none
removed call to java/util/List::add → NO_COVERAGE

3.3
Location : combine
Killed by : none
removed call to net/bmahe/genetics4j/neat/Connection::copyOf → NO_COVERAGE

375

1.1
Location : combine
Killed by : none
removed call to net/bmahe/genetics4j/neat/combination/NeatChromosomeCombinator::insertInlinksCache → NO_COVERAGE

379

1.1
Location : combine
Killed by : none
Changed increment from 1 to -1 → NO_COVERAGE

2.2
Location : combine
Killed by : none
Removed increment 1 → NO_COVERAGE

382

1.1
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
replaced return value with Collections.emptyList for net/bmahe/genetics4j/neat/combination/NeatChromosomeCombinator::combine → KILLED

2.2
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed call to java/util/List::of → KILLED

383

1.1
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed call to net/bmahe/genetics4j/neat/chromosomes/NeatChromosome::getNodeLayout → KILLED

384

1.1
Location : combine
Killed by : none
removed call to net/bmahe/genetics4j/neat/chromosomes/NeatChromosome::getMinWeightValue → SURVIVED
Covering tests

385

1.1
Location : combine
Killed by : net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.combination.NeatChromosomeCombinatorTest]/[method:combinePickBestReEnable()]
removed call to net/bmahe/genetics4j/neat/chromosomes/NeatChromosome::<init> → KILLED

2.2
Location : combine
Killed by : none
removed call to net/bmahe/genetics4j/neat/chromosomes/NeatChromosome::getMaxWeightValue → SURVIVED
Covering tests

Active mutators

Tests examined


Report generated by PIT 1.25.7 support