NeatChromosomeAddConnection.java

1
package net.bmahe.genetics4j.neat.mutation.chromosome;
2
3
import java.util.ArrayList;
4
import java.util.Comparator;
5
import java.util.List;
6
import java.util.random.RandomGenerator;
7
8
import org.apache.commons.lang3.Validate;
9
import org.apache.logging.log4j.LogManager;
10
import org.apache.logging.log4j.Logger;
11
12
import net.bmahe.genetics4j.core.chromosomes.Chromosome;
13
import net.bmahe.genetics4j.core.mutation.chromosome.ChromosomeMutationHandler;
14
import net.bmahe.genetics4j.core.spec.chromosome.ChromosomeSpec;
15
import net.bmahe.genetics4j.core.spec.mutation.MutationPolicy;
16
import net.bmahe.genetics4j.neat.Connection;
17
import net.bmahe.genetics4j.neat.InnovationManager;
18
import net.bmahe.genetics4j.neat.chromosomes.NeatChromosome;
19
import net.bmahe.genetics4j.neat.spec.NeatChromosomeSpec;
20
import net.bmahe.genetics4j.neat.spec.mutation.AddConnection;
21
22
/**
23
 * Chromosome mutation handler that adds new connections to NEAT (NeuroEvolution of Augmenting Topologies) neural networks.
24
 * 
25
 * <p>NeatChromosomeAddConnection implements the add-connection structural mutation for NEAT chromosomes,
26
 * which increases network connectivity by creating new weighted links between existing nodes. This mutation
27
 * is essential for NEAT's ability to explore different network topologies and discover optimal connectivity patterns.
28
 * 
29
 * <p>Add-connection mutation process:
30
 * <ol>
31
 * <li><strong>Node selection</strong>: Randomly select source and target nodes from all available nodes</li>
32
 * <li><strong>Validity checking</strong>: Ensure the connection doesn't violate network constraints</li>
33
 * <li><strong>Duplicate prevention</strong>: Verify the connection doesn't already exist</li>
34
 * <li><strong>Innovation assignment</strong>: Assign unique innovation number via InnovationManager</li>
35
 * <li><strong>Weight initialization</strong>: Set random weight within chromosome bounds</li>
36
 * <li><strong>Connection creation</strong>: Add enabled connection to the chromosome</li>
37
 * </ol>
38
 * 
39
 * <p>Connection constraints:
40
 * <ul>
41
 * <li><strong>No self-connections</strong>: Source and target nodes must be different</li>
42
 * <li><strong>No duplicate connections</strong>: Connection between same nodes cannot already exist</li>
43
 * <li><strong>Feed-forward topology</strong>: Output nodes cannot be sources, input nodes cannot be targets</li>
44
 * <li><strong>Valid node references</strong>: Both nodes must exist in the network</li>
45
 * </ul>
46
 * 
47
 * <p>Node selection strategy:
48
 * <ul>
49
 * <li><strong>Available nodes</strong>: All input, output, and hidden nodes are potential connection endpoints</li>
50
 * <li><strong>Dynamic range</strong>: Node range adapts to include any hidden nodes created by add-node mutations</li>
51
 * <li><strong>Uniform selection</strong>: All valid nodes have equal probability of being selected</li>
52
 * <li><strong>Constraint filtering</strong>: Invalid connections are rejected and no mutation occurs</li>
53
 * </ul>
54
 * 
55
 * <p>Common usage patterns:
56
 * <pre>{@code
57
 * // Create add-connection mutation handler
58
 * RandomGenerator randomGen = RandomGenerator.getDefault();
59
 * InnovationManager innovationManager = new InnovationManager();
60
 * NeatChromosomeAddConnection handler = new NeatChromosomeAddConnection(
61
 *     randomGen, innovationManager
62
 * );
63
 * 
64
 * // Check if handler can process mutation
65
 * AddConnection mutationPolicy = AddConnection.of(0.1);
66
 * NeatChromosomeSpec chromosomeSpec = NeatChromosomeSpec.of(3, 2, -1.0f, 1.0f);
67
 * boolean canHandle = handler.canHandle(mutationPolicy, chromosomeSpec);
68
 * 
69
 * // Apply mutation to chromosome
70
 * NeatChromosome originalChromosome = // ... existing chromosome
71
 * NeatChromosome mutatedChromosome = handler.mutate(mutationPolicy, originalChromosome);
72
 * 
73
 * // Result: chromosome may have one additional connection (if valid connection found)
74
 * }</pre>
75
 * 
76
 * <p>Integration with NEAT algorithm:
77
 * <ul>
78
 * <li><strong>Innovation tracking</strong>: Uses InnovationManager for consistent innovation number assignment</li>
79
 * <li><strong>Population consistency</strong>: Same connection types get same innovation numbers across population</li>
80
 * <li><strong>Genetic alignment</strong>: Innovation numbers enable proper crossover alignment</li>
81
 * <li><strong>Structural diversity</strong>: Increases topological diversity in the population</li>
82
 * </ul>
83
 * 
84
 * <p>Weight initialization:
85
 * <ul>
86
 * <li><strong>Random weights</strong>: New connections get random weights within chromosome bounds</li>
87
 * <li><strong>Uniform distribution</strong>: Weights uniformly distributed between min and max values</li>
88
 * <li><strong>Immediate activation</strong>: New connections are enabled and immediately affect network behavior</li>
89
 * <li><strong>Bounded values</strong>: Weights respect chromosome's min/max weight constraints</li>
90
 * </ul>
91
 * 
92
 * <p>Performance considerations:
93
 * <ul>
94
 * <li><strong>Efficient validation</strong>: Fast checks for connection existence and validity</li>
95
 * <li><strong>Innovation caching</strong>: Leverages InnovationManager's O(1) innovation lookup</li>
96
 * <li><strong>Memory efficiency</strong>: Minimal allocation during mutation</li>
97
 * <li><strong>Failed mutation handling</strong>: Gracefully handles cases where no valid connection can be added</li>
98
 * </ul>
99
 * 
100
 * @see AddConnection
101
 * @see NeatChromosome
102
 * @see InnovationManager
103
 * @see ChromosomeMutationHandler
104
 */
105
public class NeatChromosomeAddConnection implements ChromosomeMutationHandler<NeatChromosome> {
106
107
	public static final Logger logger = LogManager.getLogger(NeatChromosomeAddConnection.class);
108
109
	private final RandomGenerator randomGenerator;
110
	private final InnovationManager innovationManager;
111
112
	/**
113
	 * Constructs a new add-connection mutation handler with the specified components.
114
	 * 
115
	 * <p>The random generator is used for node selection and weight initialization.
116
	 * The innovation manager provides unique innovation numbers for new connections,
117
	 * ensuring consistent tracking across the population.
118
	 * 
119
	 * @param _randomGenerator random number generator for stochastic operations
120
	 * @param _innovationManager innovation manager for tracking structural changes
121
	 * @throws IllegalArgumentException if randomGenerator or innovationManager is null
122
	 */
123
	public NeatChromosomeAddConnection(final RandomGenerator _randomGenerator,
124
			final InnovationManager _innovationManager) {
125
		Validate.notNull(_randomGenerator);
126
		Validate.notNull(_innovationManager);
127
128 1 1. <init> : Removed assignment to member variable randomGenerator → KILLED
		this.randomGenerator = _randomGenerator;
129 1 1. <init> : Removed assignment to member variable innovationManager → KILLED
		this.innovationManager = _innovationManager;
130
	}
131
132
	/**
133
	 * Determines whether this handler can process the given mutation policy and chromosome specification.
134
	 * 
135
	 * <p>This handler specifically processes AddConnection mutations applied to NeatChromosomeSpec
136
	 * specifications, ensuring type compatibility for NEAT neural network connection addition.
137
	 * 
138
	 * @param mutationPolicy the mutation policy to check
139
	 * @param chromosome the chromosome specification to check
140
	 * @return true if policy is AddConnection and chromosome is NeatChromosomeSpec, false otherwise
141
	 * @throws IllegalArgumentException if any parameter is null
142
	 */
143
	@Override
144
	public boolean canHandle(final MutationPolicy mutationPolicy, final ChromosomeSpec chromosome) {
145
		Validate.notNull(mutationPolicy);
146
		Validate.notNull(chromosome);
147
148 9 1. canHandle : negated conditional → KILLED
2. canHandle : removed conditional - replaced equality check with false → KILLED
3. canHandle : Substituted 0 with 1 → KILLED
4. canHandle : removed conditional - replaced equality check with false → KILLED
5. canHandle : removed conditional - replaced equality check with true → KILLED
6. canHandle : replaced boolean return with true for net/bmahe/genetics4j/neat/mutation/chromosome/NeatChromosomeAddConnection::canHandle → KILLED
7. canHandle : Substituted 1 with 0 → KILLED
8. canHandle : removed conditional - replaced equality check with true → KILLED
9. canHandle : negated conditional → KILLED
		return mutationPolicy instanceof AddConnection && chromosome instanceof NeatChromosomeSpec;
149
	}
150
151
	/**
152
	 * Applies add-connection mutation to a NEAT chromosome.
153
	 * 
154
	 * <p>This method attempts to add a new connection between two randomly selected nodes
155
	 * in the neural network. The mutation may fail if no valid connection can be found
156
	 * (e.g., all possible connections already exist or violate network constraints).
157
	 * 
158
	 * <p>Mutation algorithm:
159
	 * <ol>
160
	 * <li>Determine the range of available nodes (inputs, outputs, and hidden nodes)</li>
161
	 * <li>Randomly select source and target nodes</li>
162
	 * <li>Validate the connection doesn't violate constraints</li>
163
	 * <li>If valid, create new connection with innovation number and random weight</li>
164
	 * <li>Add connection to chromosome and return modified chromosome</li>
165
	 * <li>If invalid, return chromosome unchanged</li>
166
	 * </ol>
167
	 * 
168
	 * @param mutationPolicy the add-connection mutation policy
169
	 * @param chromosome the NEAT chromosome to mutate
170
	 * @return a new chromosome with potentially one additional connection
171
	 * @throws IllegalArgumentException if policy is not AddConnection or chromosome is not NeatChromosome
172
	 */
173
	@Override
174
	public NeatChromosome mutate(final MutationPolicy mutationPolicy, final Chromosome chromosome) {
175
		Validate.notNull(mutationPolicy);
176
		Validate.notNull(chromosome);
177
		Validate.isInstanceOf(AddConnection.class, mutationPolicy);
178
		Validate.isInstanceOf(NeatChromosome.class, chromosome);
179
180
		final var neatChromosome = (NeatChromosome) chromosome;
181 1 1. mutate : removed call to net/bmahe/genetics4j/neat/chromosomes/NeatChromosome::getNumInputs → KILLED
		final var numInputs = neatChromosome.getNumInputs();
182 1 1. mutate : removed call to net/bmahe/genetics4j/neat/chromosomes/NeatChromosome::getNumOutputs → KILLED
		final var numOutputs = neatChromosome.getNumOutputs();
183 1 1. mutate : removed call to net/bmahe/genetics4j/neat/chromosomes/NeatChromosome::getMinWeightValue → KILLED
		final var minValue = neatChromosome.getMinWeightValue();
184 1 1. mutate : removed call to net/bmahe/genetics4j/neat/chromosomes/NeatChromosome::getMaxWeightValue → KILLED
		final var maxValue = neatChromosome.getMaxWeightValue();
185
186 1 1. mutate : removed call to net/bmahe/genetics4j/neat/chromosomes/NeatChromosome::getConnections → KILLED
		final var oldConnections = neatChromosome.getConnections();
187 1 1. mutate : removed call to java/util/ArrayList::<init> → KILLED
		final List<Connection> newConnections = new ArrayList<>(oldConnections);
188
189 1 1. mutate : removed call to net/bmahe/genetics4j/neat/chromosomes/NeatChromosome::getConnections → KILLED
		final int maxNodeConnectionsValue = neatChromosome.getConnections()
190 1 1. mutate : removed call to java/util/List::stream → KILLED
				.stream()
191 8 1. lambda$mutate$0 : removed call to net/bmahe/genetics4j/neat/Connection::fromNodeIndex → SURVIVED
2. lambda$mutate$0 : removed call to net/bmahe/genetics4j/neat/Connection::toNodeIndex → SURVIVED
3. lambda$mutate$0 : replaced Integer return value with 0 for net/bmahe/genetics4j/neat/mutation/chromosome/NeatChromosomeAddConnection::lambda$mutate$0 → SURVIVED
4. lambda$mutate$0 : removed call to java/lang/Math::max → SURVIVED
5. lambda$mutate$0 : replaced call to java/lang/Math::max with argument → SURVIVED
6. mutate : removed call to java/util/stream/Stream::map → KILLED
7. lambda$mutate$0 : removed call to java/lang/Integer::valueOf → KILLED
8. mutate : replaced call to java/util/stream/Stream::map with receiver → KILLED
				.map(connection -> Math.max(connection.fromNodeIndex(), connection.toNodeIndex()))
192 3 1. mutate : Substituted 0 with 1 → SURVIVED
2. mutate : removed call to java/util/stream/Stream::max → KILLED
3. mutate : removed call to java/util/Comparator::naturalOrder → KILLED
				.max(Comparator.naturalOrder())
193 4 1. mutate : removed call to java/lang/Integer::intValue → SURVIVED
2. mutate : replaced call to java/util/Optional::orElse with argument → SURVIVED
3. mutate : removed call to java/lang/Integer::valueOf → SURVIVED
4. mutate : removed call to java/util/Optional::orElse → KILLED
				.orElse(0);
194
195 2 1. mutate : removed call to java/lang/Math::max → SURVIVED
2. mutate : replaced call to java/lang/Math::max with argument → SURVIVED
		final int maxNodeValue = Math.max(maxNodeConnectionsValue,
196 5 1. mutate : removed call to net/bmahe/genetics4j/neat/chromosomes/NeatChromosome::getNumInputs → SURVIVED
2. mutate : Replaced integer addition with subtraction → SURVIVED
3. mutate : Substituted 1 with 0 → SURVIVED
4. mutate : Replaced integer subtraction with addition → SURVIVED
5. mutate : removed call to net/bmahe/genetics4j/neat/chromosomes/NeatChromosome::getNumOutputs → SURVIVED
				neatChromosome.getNumInputs() + neatChromosome.getNumOutputs() - 1);
197
198 4 1. mutate : Replaced integer addition with subtraction → SURVIVED
2. mutate : Substituted 1 with 0 → SURVIVED
3. mutate : removed call to java/util/random/RandomGenerator::nextInt → KILLED
4. mutate : replaced call to java/util/random/RandomGenerator::nextInt with argument → KILLED
		final int fromNode = randomGenerator.nextInt(maxNodeValue + 1);
199 4 1. mutate : Replaced integer addition with subtraction → SURVIVED
2. mutate : Substituted 1 with 0 → SURVIVED
3. mutate : removed call to java/util/random/RandomGenerator::nextInt → KILLED
4. mutate : replaced call to java/util/random/RandomGenerator::nextInt with argument → KILLED
		final int toNode = randomGenerator.nextInt(maxNodeValue + 1);
200
201 1 1. mutate : removed call to java/util/List::stream → KILLED
		final boolean isConnectionExist = oldConnections.stream()
202 12 1. lambda$mutate$1 : removed conditional - replaced equality check with true → KILLED
2. lambda$mutate$1 : removed conditional - replaced equality check with false → KILLED
3. lambda$mutate$1 : replaced boolean return with true for net/bmahe/genetics4j/neat/mutation/chromosome/NeatChromosomeAddConnection::lambda$mutate$1 → KILLED
4. lambda$mutate$1 : negated conditional → KILLED
5. lambda$mutate$1 : removed call to net/bmahe/genetics4j/neat/Connection::fromNodeIndex → KILLED
6. lambda$mutate$1 : Substituted 0 with 1 → KILLED
7. lambda$mutate$1 : removed conditional - replaced equality check with true → KILLED
8. mutate : removed call to java/util/stream/Stream::anyMatch → KILLED
9. lambda$mutate$1 : removed conditional - replaced equality check with false → KILLED
10. lambda$mutate$1 : negated conditional → KILLED
11. lambda$mutate$1 : Substituted 1 with 0 → KILLED
12. lambda$mutate$1 : removed call to net/bmahe/genetics4j/neat/Connection::toNodeIndex → KILLED
				.anyMatch(connection -> connection.fromNodeIndex() == fromNode && connection.toNodeIndex() == toNode);
203
204 11 1. mutate : removed conditional - replaced comparison check with true → SURVIVED
2. mutate : changed conditional boundary → KILLED
3. mutate : negated conditional → KILLED
4. mutate : removed conditional - replaced comparison check with false → KILLED
5. mutate : Substituted 0 with 1 → KILLED
6. mutate : removed conditional - replaced comparison check with false → KILLED
7. mutate : changed conditional boundary → KILLED
8. mutate : Replaced integer addition with subtraction → KILLED
9. mutate : Substituted 1 with 0 → KILLED
10. mutate : removed conditional - replaced comparison check with true → KILLED
11. mutate : negated conditional → KILLED
		final boolean isFromNodeAnOutput = fromNode < numInputs + numOutputs && fromNode >= numInputs;
205 6 1. mutate : removed conditional - replaced comparison check with false → SURVIVED
2. mutate : changed conditional boundary → SURVIVED
3. mutate : Substituted 1 with 0 → SURVIVED
4. mutate : Substituted 0 with 1 → KILLED
5. mutate : removed conditional - replaced comparison check with true → KILLED
6. mutate : negated conditional → KILLED
		final boolean isToNodeAnInput = toNode < numInputs;
206
207 12 1. mutate : removed conditional - replaced equality check with true → SURVIVED
2. mutate : negated conditional → KILLED
3. mutate : removed conditional - replaced equality check with false → KILLED
4. mutate : negated conditional → KILLED
5. mutate : removed conditional - replaced equality check with true → KILLED
6. mutate : removed conditional - replaced equality check with true → KILLED
7. mutate : negated conditional → KILLED
8. mutate : removed conditional - replaced equality check with false → KILLED
9. mutate : removed conditional - replaced equality check with false → KILLED
10. mutate : removed conditional - replaced equality check with true → KILLED
11. mutate : negated conditional → KILLED
12. mutate : removed conditional - replaced equality check with false → KILLED
		if (fromNode != toNode && isConnectionExist == false && isToNodeAnInput == false && isFromNodeAnOutput == false) {
208 2 1. mutate : replaced call to net/bmahe/genetics4j/neat/InnovationManager::computeNewId with argument → SURVIVED
2. mutate : removed call to net/bmahe/genetics4j/neat/InnovationManager::computeNewId → KILLED
			final int innovation = innovationManager.computeNewId(fromNode, toNode);
209
210 1 1. mutate : removed call to net/bmahe/genetics4j/neat/Connection::builder → KILLED
			final var newConnection = Connection.builder()
211 2 1. mutate : removed call to net/bmahe/genetics4j/neat/Connection$Builder::fromNodeIndex → KILLED
2. mutate : replaced call to net/bmahe/genetics4j/neat/Connection$Builder::fromNodeIndex with receiver → KILLED
					.fromNodeIndex(fromNode)
212 2 1. mutate : removed call to net/bmahe/genetics4j/neat/Connection$Builder::toNodeIndex → KILLED
2. mutate : replaced call to net/bmahe/genetics4j/neat/Connection$Builder::toNodeIndex with receiver → KILLED
					.toNodeIndex(toNode)
213 2 1. mutate : removed call to net/bmahe/genetics4j/neat/Connection$Builder::innovation → KILLED
2. mutate : replaced call to net/bmahe/genetics4j/neat/Connection$Builder::innovation with receiver → KILLED
					.innovation(innovation)
214 5 1. mutate : Substituted 1 with 0 → SURVIVED
2. mutate : removed call to java/util/random/RandomGenerator::nextFloat → SURVIVED
3. mutate : replaced call to java/util/random/RandomGenerator::nextFloat with argument → SURVIVED
4. mutate : replaced call to net/bmahe/genetics4j/neat/Connection$Builder::weight with receiver → KILLED
5. mutate : removed call to net/bmahe/genetics4j/neat/Connection$Builder::weight → KILLED
					.weight(randomGenerator.nextFloat(minValue, maxValue))
215 2 1. mutate : removed call to net/bmahe/genetics4j/neat/Connection$Builder::isEnabled → KILLED
2. mutate : replaced call to net/bmahe/genetics4j/neat/Connection$Builder::isEnabled with receiver → KILLED
					.isEnabled(true)
216 1 1. mutate : removed call to net/bmahe/genetics4j/neat/Connection$Builder::build → KILLED
					.build();
217
218 1 1. mutate : removed call to java/util/List::add → KILLED
			newConnections.add(newConnection);
219
		}
220
221 2 1. mutate : replaced return value with null for net/bmahe/genetics4j/neat/mutation/chromosome/NeatChromosomeAddConnection::mutate → KILLED
2. mutate : removed call to net/bmahe/genetics4j/neat/chromosomes/NeatChromosome::<init> → KILLED
		return new NeatChromosome(numInputs, numOutputs, minValue, maxValue, newConnections);
222
	}
223
}

Mutations

128

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

129

1.1
Location : <init>
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutate()]
Removed assignment to member variable innovationManager → KILLED

148

1.1
Location : canHandle
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:canHandle()]
negated conditional → KILLED

2.2
Location : canHandle
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:canHandle()]
removed conditional - replaced equality check with false → KILLED

3.3
Location : canHandle
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:canHandle()]
Substituted 0 with 1 → KILLED

4.4
Location : canHandle
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:canHandle()]
removed conditional - replaced equality check with false → KILLED

5.5
Location : canHandle
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:canHandle()]
removed conditional - replaced equality check with true → KILLED

6.6
Location : canHandle
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:canHandle()]
replaced boolean return with true for net/bmahe/genetics4j/neat/mutation/chromosome/NeatChromosomeAddConnection::canHandle → KILLED

7.7
Location : canHandle
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:canHandle()]
Substituted 1 with 0 → KILLED

8.8
Location : canHandle
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:canHandle()]
removed conditional - replaced equality check with true → KILLED

9.9
Location : canHandle
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:canHandle()]
negated conditional → KILLED

181

1.1
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutateConnectionFromAndToAreSame()]
removed call to net/bmahe/genetics4j/neat/chromosomes/NeatChromosome::getNumInputs → KILLED

182

1.1
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutateConnectionFromAndToAreSame()]
removed call to net/bmahe/genetics4j/neat/chromosomes/NeatChromosome::getNumOutputs → KILLED

183

1.1
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutateConnectionFromAndToAreSame()]
removed call to net/bmahe/genetics4j/neat/chromosomes/NeatChromosome::getMinWeightValue → KILLED

184

1.1
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutateConnectionFromAndToAreSame()]
removed call to net/bmahe/genetics4j/neat/chromosomes/NeatChromosome::getMaxWeightValue → KILLED

186

1.1
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutateConnectionFromAndToAreSame()]
removed call to net/bmahe/genetics4j/neat/chromosomes/NeatChromosome::getConnections → KILLED

187

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

189

1.1
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutateConnectionFromAndToAreSame()]
removed call to net/bmahe/genetics4j/neat/chromosomes/NeatChromosome::getConnections → KILLED

190

1.1
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutateConnectionFromAndToAreSame()]
removed call to java/util/List::stream → KILLED

191

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

2.2
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutateConnectionFromAndToAreSame()]
removed call to java/util/stream/Stream::map → KILLED

3.3
Location : lambda$mutate$0
Killed by : none
removed call to net/bmahe/genetics4j/neat/Connection::toNodeIndex → SURVIVED Covering tests

4.4
Location : lambda$mutate$0
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutateConnectionFromAndToAreSame()]
removed call to java/lang/Integer::valueOf → KILLED

5.5
Location : lambda$mutate$0
Killed by : none
replaced Integer return value with 0 for net/bmahe/genetics4j/neat/mutation/chromosome/NeatChromosomeAddConnection::lambda$mutate$0 → SURVIVED Covering tests

6.6
Location : lambda$mutate$0
Killed by : none
removed call to java/lang/Math::max → SURVIVED Covering tests

7.7
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutateConnectionFromAndToAreSame()]
replaced call to java/util/stream/Stream::map with receiver → KILLED

8.8
Location : lambda$mutate$0
Killed by : none
replaced call to java/lang/Math::max with argument → SURVIVED Covering tests

192

1.1
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutateConnectionFromAndToAreSame()]
removed call to java/util/stream/Stream::max → KILLED

2.2
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutateConnectionFromAndToAreSame()]
removed call to java/util/Comparator::naturalOrder → KILLED

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

193

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

2.2
Location : mutate
Killed by : none
replaced call to java/util/Optional::orElse with argument → SURVIVED Covering tests

3.3
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutateConnectionFromAndToAreSame()]
removed call to java/util/Optional::orElse → KILLED

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

195

1.1
Location : mutate
Killed by : none
removed call to java/lang/Math::max → SURVIVED
Covering tests

2.2
Location : mutate
Killed by : none
replaced call to java/lang/Math::max with argument → SURVIVED Covering tests

196

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

2.2
Location : mutate
Killed by : none
Replaced integer addition with subtraction → SURVIVED Covering tests

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

4.4
Location : mutate
Killed by : none
Replaced integer subtraction with addition → SURVIVED Covering tests

5.5
Location : mutate
Killed by : none
removed call to net/bmahe/genetics4j/neat/chromosomes/NeatChromosome::getNumOutputs → SURVIVED Covering tests

198

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

2.2
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutateConnectionFromAndToAreSame()]
removed call to java/util/random/RandomGenerator::nextInt → KILLED

3.3
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutateConnectionFromAndToAreSame()]
replaced call to java/util/random/RandomGenerator::nextInt with argument → KILLED

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

199

1.1
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutate()]
removed call to java/util/random/RandomGenerator::nextInt → KILLED

2.2
Location : mutate
Killed by : none
Replaced integer addition with subtraction → SURVIVED
Covering tests

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

4.4
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutateConnectionFromAndToAreSame()]
replaced call to java/util/random/RandomGenerator::nextInt with argument → KILLED

201

1.1
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutateConnectionFromAndToAreSame()]
removed call to java/util/List::stream → KILLED

202

1.1
Location : lambda$mutate$1
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutate()]
removed conditional - replaced equality check with true → KILLED

2.2
Location : lambda$mutate$1
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutateConnectionExist()]
removed conditional - replaced equality check with false → KILLED

3.3
Location : lambda$mutate$1
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutate()]
replaced boolean return with true for net/bmahe/genetics4j/neat/mutation/chromosome/NeatChromosomeAddConnection::lambda$mutate$1 → KILLED

4.4
Location : lambda$mutate$1
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutateConnectionExist()]
negated conditional → KILLED

5.5
Location : lambda$mutate$1
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutateConnectionExist()]
removed call to net/bmahe/genetics4j/neat/Connection::fromNodeIndex → KILLED

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

7.7
Location : lambda$mutate$1
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutate()]
removed conditional - replaced equality check with true → KILLED

8.8
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutateConnectionExist()]
removed call to java/util/stream/Stream::anyMatch → KILLED

9.9
Location : lambda$mutate$1
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutateConnectionExist()]
removed conditional - replaced equality check with false → KILLED

10.10
Location : lambda$mutate$1
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutateConnectionExist()]
negated conditional → KILLED

11.11
Location : lambda$mutate$1
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutateConnectionExist()]
Substituted 1 with 0 → KILLED

12.12
Location : lambda$mutate$1
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutateConnectionExist()]
removed call to net/bmahe/genetics4j/neat/Connection::toNodeIndex → KILLED

204

1.1
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutate()]
changed conditional boundary → KILLED

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

3.3
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutateConnectionFromOutput()]
negated conditional → KILLED

4.4
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutateConnectionFromOutput()]
removed conditional - replaced comparison check with false → KILLED

5.5
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutate()]
Substituted 0 with 1 → KILLED

6.6
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutateConnectionFromOutput()]
removed conditional - replaced comparison check with false → KILLED

7.7
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutateConnectionFromOutput()]
changed conditional boundary → KILLED

8.8
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutateConnectionFromOutput()]
Replaced integer addition with subtraction → KILLED

9.9
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutateConnectionFromOutput()]
Substituted 1 with 0 → KILLED

10.10
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutate()]
removed conditional - replaced comparison check with true → KILLED

11.11
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutateConnectionFromOutput()]
negated conditional → KILLED

205

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

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

3.3
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutate()]
Substituted 0 with 1 → KILLED

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

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

6.6
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutate()]
negated conditional → KILLED

207

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

2.2
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutateConnectionFromOutput()]
negated conditional → KILLED

3.3
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutate()]
removed conditional - replaced equality check with false → KILLED

4.4
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutateConnectionFromAndToAreSame()]
negated conditional → KILLED

5.5
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutateConnectionFromOutput()]
removed conditional - replaced equality check with true → KILLED

6.6
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutateConnectionFromAndToAreSame()]
removed conditional - replaced equality check with true → KILLED

7.7
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutateConnectionExist()]
negated conditional → KILLED

8.8
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutate()]
removed conditional - replaced equality check with false → KILLED

9.9
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutate()]
removed conditional - replaced equality check with false → KILLED

10.10
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutateConnectionExist()]
removed conditional - replaced equality check with true → KILLED

11.11
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutate()]
negated conditional → KILLED

12.12
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutate()]
removed conditional - replaced equality check with false → KILLED

208

1.1
Location : mutate
Killed by : none
replaced call to net/bmahe/genetics4j/neat/InnovationManager::computeNewId with argument → SURVIVED
Covering tests

2.2
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutate()]
removed call to net/bmahe/genetics4j/neat/InnovationManager::computeNewId → KILLED

210

1.1
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutate()]
removed call to net/bmahe/genetics4j/neat/Connection::builder → KILLED

211

1.1
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutate()]
removed call to net/bmahe/genetics4j/neat/Connection$Builder::fromNodeIndex → KILLED

2.2
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutate()]
replaced call to net/bmahe/genetics4j/neat/Connection$Builder::fromNodeIndex with receiver → KILLED

212

1.1
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutate()]
removed call to net/bmahe/genetics4j/neat/Connection$Builder::toNodeIndex → KILLED

2.2
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutate()]
replaced call to net/bmahe/genetics4j/neat/Connection$Builder::toNodeIndex with receiver → KILLED

213

1.1
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutate()]
removed call to net/bmahe/genetics4j/neat/Connection$Builder::innovation → KILLED

2.2
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutate()]
replaced call to net/bmahe/genetics4j/neat/Connection$Builder::innovation with receiver → KILLED

214

1.1
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutate()]
replaced call to net/bmahe/genetics4j/neat/Connection$Builder::weight with receiver → KILLED

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

3.3
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutate()]
removed call to net/bmahe/genetics4j/neat/Connection$Builder::weight → KILLED

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

5.5
Location : mutate
Killed by : none
replaced call to java/util/random/RandomGenerator::nextFloat with argument → SURVIVED Covering tests

215

1.1
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutate()]
removed call to net/bmahe/genetics4j/neat/Connection$Builder::isEnabled → KILLED

2.2
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutate()]
replaced call to net/bmahe/genetics4j/neat/Connection$Builder::isEnabled with receiver → KILLED

216

1.1
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutate()]
removed call to net/bmahe/genetics4j/neat/Connection$Builder::build → KILLED

218

1.1
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutate()]
removed call to java/util/List::add → KILLED

221

1.1
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutateConnectionFromAndToAreSame()]
replaced return value with null for net/bmahe/genetics4j/neat/mutation/chromosome/NeatChromosomeAddConnection::mutate → KILLED

2.2
Location : mutate
Killed by : net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.mutation.chromosome.NeatChromosomeAddConnectionTest]/[method:mutateConnectionFromAndToAreSame()]
removed call to net/bmahe/genetics4j/neat/chromosomes/NeatChromosome::<init> → KILLED

Active mutators

Tests examined


Report generated by PIT 1.19.6