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

Mutations

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:mutateConnectionExist()]
Removed assignment to member variable randomGenerator → KILLED

130

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

149

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

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:mutateConnectionExist()]
removed call to net/bmahe/genetics4j/neat/chromosomes/NeatChromosome::getNumInputs → 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:mutateConnectionExist()]
removed call to net/bmahe/genetics4j/neat/chromosomes/NeatChromosome::getNumOutputs → 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:mutateConnectionExist()]
removed call to net/bmahe/genetics4j/neat/chromosomes/NeatChromosome::getMinWeightValue → KILLED

185

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:mutateConnectionExist()]
removed call to net/bmahe/genetics4j/neat/chromosomes/NeatChromosome::getMaxWeightValue → 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:mutateConnectionExist()]
removed call to net/bmahe/genetics4j/neat/chromosomes/NeatChromosome::getConnections → KILLED

188

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:mutateConnectionExist()]
removed call to java/util/ArrayList::<init> → 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:mutateConnectionExist()]
removed call to net/bmahe/genetics4j/neat/chromosomes/NeatChromosome::getConnections → KILLED

191

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

192

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

193

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

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

194

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

196

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

197

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

199

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

200

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:mutateConnectionExist()]
replaced call to java/util/random/RandomGenerator::nextInt with argument → KILLED

202

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

203

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

205

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

206

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

208

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

209

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

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

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

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

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

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

217

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

219

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

222

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:mutateConnectionExist()]
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:mutateConnectionExist()]
removed call to net/bmahe/genetics4j/neat/chromosomes/NeatChromosome::<init> → KILLED

Active mutators

Tests examined


Report generated by PIT 1.20.3