NeatConnectedChromosomeFactory.java

1
package net.bmahe.genetics4j.neat.chromosomes.factory;
2
3
import java.util.ArrayList;
4
import java.util.List;
5
import java.util.random.RandomGenerator;
6
7
import org.apache.commons.lang3.Validate;
8
9
import net.bmahe.genetics4j.core.chromosomes.factory.ChromosomeFactory;
10
import net.bmahe.genetics4j.core.spec.chromosome.ChromosomeSpec;
11
import net.bmahe.genetics4j.neat.Connection;
12
import net.bmahe.genetics4j.neat.InnovationManager;
13
import net.bmahe.genetics4j.neat.chromosomes.NeatChromosome;
14
import net.bmahe.genetics4j.neat.spec.NeatChromosomeSpec;
15
16
/**
17
 * Factory for creating fully-connected initial NEAT (NeuroEvolution of Augmenting Topologies) chromosomes.
18
 * 
19
 * <p>NeatConnectedChromosomeFactory generates initial neural network chromosomes with direct connections between all
20
 * input and output nodes. This provides a minimal starting topology that ensures all inputs can influence all outputs,
21
 * creating a foundation for structural evolution through the NEAT algorithm.
22
 * 
23
 * <p>Generated network characteristics:
24
 * <ul>
25
 * <li><strong>Full connectivity</strong>: Every input node connected to every output node</li>
26
 * <li><strong>No hidden nodes</strong>: Initial networks contain only input and output layers</li>
27
 * <li><strong>Random weights</strong>: Connection weights uniformly distributed within specified bounds</li>
28
 * <li><strong>Innovation tracking</strong>: All connections assigned unique innovation numbers</li>
29
 * </ul>
30
 * 
31
 * <p>Network topology structure:
32
 * <ul>
33
 * <li><strong>Input layer</strong>: Nodes 0 to (numInputs - 1)</li>
34
 * <li><strong>Output layer</strong>: Nodes numInputs to (numInputs + numOutputs - 1)</li>
35
 * <li><strong>Connections</strong>: numInputs × numOutputs fully-connected bipartite graph</li>
36
 * <li><strong>Enabled state</strong>: All initial connections are enabled</li>
37
 * </ul>
38
 * 
39
 * <p>Common usage patterns:
40
 * 
41
 * <pre>{@code
42
 * // Create factory with innovation manager
43
 * RandomGenerator randomGen = RandomGenerator.getDefault();
44
 * InnovationManager innovationManager = new InnovationManager();
45
 * NeatConnectedChromosomeFactory factory = new NeatConnectedChromosomeFactory(randomGen, innovationManager);
46
 * 
47
 * // Define network specification
48
 * NeatChromosomeSpec spec = NeatChromosomeSpec.of(
49
 * 		3, // 3 input nodes
50
 * 			2, // 2 output nodes
51
 * 			-1.0f, // minimum weight
52
 * 			1.0f // maximum weight
53
 * );
54
 * 
55
 * // Generate initial chromosome
56
 * NeatChromosome chromosome = factory.generate(spec);
57
 * 
58
 * // Result: 3×2 = 6 connections with random weights
59
 * // Connections: (0→3), (0→4), (1→3), (1→4), (2→3), (2→4)
60
 * }</pre>
61
 * 
62
 * <p>Integration with NEAT evolution:
63
 * <ul>
64
 * <li><strong>Population initialization</strong>: Creates diverse initial population with same topology</li>
65
 * <li><strong>Weight diversity</strong>: Random weights provide behavioral variation</li>
66
 * <li><strong>Structural foundation</strong>: Minimal topology allows maximum structural exploration</li>
67
 * <li><strong>Innovation consistency</strong>: Same connection types get same innovation numbers across population</li>
68
 * </ul>
69
 * 
70
 * <p>Innovation number management:
71
 * <ul>
72
 * <li><strong>Deterministic assignment</strong>: Same input-output pairs get same innovation numbers</li>
73
 * <li><strong>Population consistency</strong>: All individuals use same innovation numbers for same connections</li>
74
 * <li><strong>Crossover compatibility</strong>: Enables meaningful genetic recombination from generation 0</li>
75
 * <li><strong>Historical tracking</strong>: Foundation for tracking structural evolution</li>
76
 * </ul>
77
 * 
78
 * <p>Weight initialization strategy:
79
 * <ul>
80
 * <li><strong>Uniform distribution</strong>: Weights uniformly sampled from [minWeight, maxWeight]</li>
81
 * <li><strong>Behavioral diversity</strong>: Different weight combinations create different behaviors</li>
82
 * <li><strong>Network stability</strong>: Bounded weights prevent extreme activation values</li>
83
 * <li><strong>Evolution readiness</strong>: Initial weights suitable for gradient-based optimization</li>
84
 * </ul>
85
 * 
86
 * <p>Performance considerations:
87
 * <ul>
88
 * <li><strong>Linear time complexity</strong>: O(numInputs × numOutputs) generation time</li>
89
 * <li><strong>Memory efficiency</strong>: Minimal memory allocation during generation</li>
90
 * <li><strong>Innovation caching</strong>: InnovationManager provides O(1) innovation number lookup</li>
91
 * <li><strong>Thread safety</strong>: Safe for concurrent chromosome generation</li>
92
 * </ul>
93
 * 
94
 * @see NeatChromosome
95
 * @see NeatChromosomeSpec
96
 * @see InnovationManager
97
 * @see ChromosomeFactory
98
 */
99
public class NeatConnectedChromosomeFactory implements ChromosomeFactory<NeatChromosome> {
100
101
	private final RandomGenerator randomGenerator;
102
	private final InnovationManager innovationManager;
103
104
	/**
105
	 * Constructs a new connected chromosome factory with the specified components.
106
	 * 
107
	 * <p>The random generator is used for weight initialization, providing behavioral diversity in the initial
108
	 * population. The innovation manager ensures consistent innovation number assignment across all generated
109
	 * chromosomes.
110
	 * 
111
	 * @param _randomGenerator   random number generator for weight initialization
112
	 * @param _innovationManager innovation manager for tracking structural innovations
113
	 * @throws IllegalArgumentException if randomGenerator or innovationManager is null
114
	 */
115
	public NeatConnectedChromosomeFactory(final RandomGenerator _randomGenerator,
116
			final InnovationManager _innovationManager) {
117
		Validate.notNull(_randomGenerator);
118
		Validate.notNull(_innovationManager);
119
120 1 1. <init> : Removed assignment to member variable randomGenerator → KILLED
		this.randomGenerator = _randomGenerator;
121 1 1. <init> : Removed assignment to member variable innovationManager → KILLED
		this.innovationManager = _innovationManager;
122
	}
123
124
	/**
125
	 * Determines whether this factory can generate chromosomes for the given specification.
126
	 * 
127
	 * <p>This factory specifically handles NeatChromosomeSpec specifications, which define the input/output structure
128
	 * and weight bounds for NEAT neural networks.
129
	 * 
130
	 * @param chromosomeSpec the chromosome specification to check
131
	 * @return true if chromosomeSpec is a NeatChromosomeSpec, false otherwise
132
	 * @throws IllegalArgumentException if chromosomeSpec is null
133
	 */
134
	@Override
135
	public boolean canHandle(final ChromosomeSpec chromosomeSpec) {
136
		Validate.notNull(chromosomeSpec);
137
138 2 1. canHandle : replaced boolean return with false for net/bmahe/genetics4j/neat/chromosomes/factory/NeatConnectedChromosomeFactory::canHandle → KILLED
2. canHandle : replaced boolean return with true for net/bmahe/genetics4j/neat/chromosomes/factory/NeatConnectedChromosomeFactory::canHandle → KILLED
		return chromosomeSpec instanceof NeatChromosomeSpec;
139
	}
140
141
	/**
142
	 * Generates a fully-connected NEAT chromosome based on the given specification.
143
	 * 
144
	 * <p>This method creates a neural network chromosome with direct connections between all input and output nodes.
145
	 * Each connection is initialized with a random weight within the specified bounds and assigned a unique innovation
146
	 * number for genetic tracking.
147
	 * 
148
	 * <p>Generation process:
149
	 * <ol>
150
	 * <li>Extract network parameters from the chromosome specification</li>
151
	 * <li>Create connections between all input-output node pairs</li>
152
	 * <li>Assign innovation numbers to each connection type</li>
153
	 * <li>Initialize connection weights randomly within bounds</li>
154
	 * <li>Enable all connections for immediate network functionality</li>
155
	 * <li>Construct and return the complete chromosome</li>
156
	 * </ol>
157
	 * 
158
	 * @param chromosomeSpec the NEAT chromosome specification defining network structure
159
	 * @return a new fully-connected NEAT chromosome
160
	 * @throws IllegalArgumentException if chromosomeSpec is null or not a NeatChromosomeSpec
161
	 */
162
	@Override
163
	public NeatChromosome generate(final ChromosomeSpec chromosomeSpec) {
164
		Validate.notNull(chromosomeSpec);
165
		Validate.isInstanceOf(NeatChromosomeSpec.class, chromosomeSpec);
166
167
		final NeatChromosomeSpec neatChromosomeSpec = (NeatChromosomeSpec) chromosomeSpec;
168 1 1. generate : removed call to net/bmahe/genetics4j/neat/spec/NeatChromosomeSpec::numInputs → KILLED
		final int numInputs = neatChromosomeSpec.numInputs();
169 1 1. generate : removed call to net/bmahe/genetics4j/neat/spec/NeatChromosomeSpec::numOutputs → KILLED
		final int numOutputs = neatChromosomeSpec.numOutputs();
170 1 1. generate : removed call to net/bmahe/genetics4j/neat/spec/NeatChromosomeSpec::minWeightValue → KILLED
		float minWeightValue = neatChromosomeSpec.minWeightValue();
171 1 1. generate : removed call to net/bmahe/genetics4j/neat/spec/NeatChromosomeSpec::maxWeightValue → KILLED
		float maxWeightValue = neatChromosomeSpec.maxWeightValue();
172
173 1 1. generate : removed call to java/util/ArrayList::<init> → KILLED
		final List<Connection> connections = new ArrayList<>();
174 5 1. generate : changed conditional boundary → KILLED
2. generate : Substituted 0 with 1 → KILLED
3. generate : removed conditional - replaced comparison check with false → KILLED
4. generate : negated conditional → KILLED
5. generate : removed conditional - replaced comparison check with true → KILLED
		for (int inputIndex = 0; inputIndex < numInputs; inputIndex++) {
175 5 1. generate : removed conditional - replaced comparison check with true → TIMED_OUT
2. generate : Replaced integer addition with subtraction → KILLED
3. generate : removed conditional - replaced comparison check with false → KILLED
4. generate : negated conditional → KILLED
5. generate : changed conditional boundary → KILLED
			for (int outputIndex = numInputs; outputIndex < numInputs + numOutputs; outputIndex++) {
176
177 2 1. generate : replaced call to net/bmahe/genetics4j/neat/InnovationManager::computeNewId with argument → KILLED
2. generate : removed call to net/bmahe/genetics4j/neat/InnovationManager::computeNewId → KILLED
				final int innovation = innovationManager.computeNewId(inputIndex, outputIndex);
178 1 1. generate : removed call to net/bmahe/genetics4j/neat/Connection::builder → KILLED
				final Connection connection = Connection.builder()
179 2 1. generate : removed call to net/bmahe/genetics4j/neat/Connection$Builder::fromNodeIndex → KILLED
2. generate : replaced call to net/bmahe/genetics4j/neat/Connection$Builder::fromNodeIndex with receiver → KILLED
						.fromNodeIndex(inputIndex)
180 2 1. generate : removed call to net/bmahe/genetics4j/neat/Connection$Builder::toNodeIndex → KILLED
2. generate : replaced call to net/bmahe/genetics4j/neat/Connection$Builder::toNodeIndex with receiver → KILLED
						.toNodeIndex(outputIndex)
181 3 1. generate : Substituted 1 with 0 → KILLED
2. generate : removed call to net/bmahe/genetics4j/neat/Connection$Builder::innovation → KILLED
3. generate : replaced call to net/bmahe/genetics4j/neat/Connection$Builder::innovation with receiver → KILLED
						.innovation(innovation)
182 2 1. generate : removed call to net/bmahe/genetics4j/neat/Connection$Builder::isEnabled → KILLED
2. generate : replaced call to net/bmahe/genetics4j/neat/Connection$Builder::isEnabled with receiver → KILLED
						.isEnabled(true)
183 4 1. generate : removed call to net/bmahe/genetics4j/neat/Connection$Builder::weight → KILLED
2. generate : replaced call to java/util/random/RandomGenerator::nextFloat with argument → KILLED
3. generate : removed call to java/util/random/RandomGenerator::nextFloat → KILLED
4. generate : replaced call to net/bmahe/genetics4j/neat/Connection$Builder::weight with receiver → KILLED
						.weight(randomGenerator.nextFloat(minWeightValue, maxWeightValue))
184 1 1. generate : removed call to net/bmahe/genetics4j/neat/Connection$Builder::build → KILLED
						.build();
185 1 1. generate : removed call to java/util/List::add → KILLED
				connections.add(connection);
186
			}
187
		}
188
189 2 1. generate : replaced return value with null for net/bmahe/genetics4j/neat/chromosomes/factory/NeatConnectedChromosomeFactory::generate → KILLED
2. generate : removed call to net/bmahe/genetics4j/neat/chromosomes/NeatChromosome::<init> → KILLED
		return new NeatChromosome(numInputs, numOutputs, minWeightValue, maxWeightValue, connections);
190
	}
191
}

Mutations

120

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

121

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

138

1.1
Location : canHandle
Killed by : net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest]/[method:canHandle()]
replaced boolean return with false for net/bmahe/genetics4j/neat/chromosomes/factory/NeatConnectedChromosomeFactory::canHandle → KILLED

2.2
Location : canHandle
Killed by : net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest]/[method:invalidCanHandle()]
replaced boolean return with true for net/bmahe/genetics4j/neat/chromosomes/factory/NeatConnectedChromosomeFactory::canHandle → KILLED

168

1.1
Location : generate
Killed by : net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest]/[method:generate()]
removed call to net/bmahe/genetics4j/neat/spec/NeatChromosomeSpec::numInputs → KILLED

169

1.1
Location : generate
Killed by : net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest]/[method:generate()]
removed call to net/bmahe/genetics4j/neat/spec/NeatChromosomeSpec::numOutputs → KILLED

170

1.1
Location : generate
Killed by : net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest]/[method:generate()]
removed call to net/bmahe/genetics4j/neat/spec/NeatChromosomeSpec::minWeightValue → KILLED

171

1.1
Location : generate
Killed by : net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest]/[method:generate()]
removed call to net/bmahe/genetics4j/neat/spec/NeatChromosomeSpec::maxWeightValue → KILLED

173

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

174

1.1
Location : generate
Killed by : net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest]/[method:generate()]
changed conditional boundary → KILLED

2.2
Location : generate
Killed by : net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest]/[method:generate()]
Substituted 0 with 1 → KILLED

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

4.4
Location : generate
Killed by : net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest]/[method:generate()]
negated conditional → KILLED

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

175

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

2.2
Location : generate
Killed by : net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest]/[method:generate()]
removed conditional - replaced comparison check with false → KILLED

3.3
Location : generate
Killed by : none
removed conditional - replaced comparison check with true → TIMED_OUT

4.4
Location : generate
Killed by : net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest]/[method:generate()]
negated conditional → KILLED

5.5
Location : generate
Killed by : net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest]/[method:generate()]
changed conditional boundary → KILLED

177

1.1
Location : generate
Killed by : net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest]/[method:generate()]
replaced call to net/bmahe/genetics4j/neat/InnovationManager::computeNewId with argument → KILLED

2.2
Location : generate
Killed by : net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest]/[method:generate()]
removed call to net/bmahe/genetics4j/neat/InnovationManager::computeNewId → KILLED

178

1.1
Location : generate
Killed by : net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest]/[method:generate()]
removed call to net/bmahe/genetics4j/neat/Connection::builder → KILLED

179

1.1
Location : generate
Killed by : net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest]/[method:generate()]
removed call to net/bmahe/genetics4j/neat/Connection$Builder::fromNodeIndex → KILLED

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

180

1.1
Location : generate
Killed by : net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest]/[method:generate()]
removed call to net/bmahe/genetics4j/neat/Connection$Builder::toNodeIndex → KILLED

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

181

1.1
Location : generate
Killed by : net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest]/[method:generate()]
Substituted 1 with 0 → KILLED

2.2
Location : generate
Killed by : net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest]/[method:generate()]
removed call to net/bmahe/genetics4j/neat/Connection$Builder::innovation → KILLED

3.3
Location : generate
Killed by : net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest]/[method:generate()]
replaced call to net/bmahe/genetics4j/neat/Connection$Builder::innovation with receiver → KILLED

182

1.1
Location : generate
Killed by : net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest]/[method:generate()]
removed call to net/bmahe/genetics4j/neat/Connection$Builder::isEnabled → KILLED

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

183

1.1
Location : generate
Killed by : net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest]/[method:generate()]
removed call to net/bmahe/genetics4j/neat/Connection$Builder::weight → KILLED

2.2
Location : generate
Killed by : net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest]/[method:generate()]
replaced call to java/util/random/RandomGenerator::nextFloat with argument → KILLED

3.3
Location : generate
Killed by : net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest]/[method:generate()]
removed call to java/util/random/RandomGenerator::nextFloat → KILLED

4.4
Location : generate
Killed by : net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest]/[method:generate()]
replaced call to net/bmahe/genetics4j/neat/Connection$Builder::weight with receiver → KILLED

184

1.1
Location : generate
Killed by : net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest]/[method:generate()]
removed call to net/bmahe/genetics4j/neat/Connection$Builder::build → KILLED

185

1.1
Location : generate
Killed by : net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest]/[method:generate()]
removed call to java/util/List::add → KILLED

189

1.1
Location : generate
Killed by : net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest]/[method:generate()]
replaced return value with null for net/bmahe/genetics4j/neat/chromosomes/factory/NeatConnectedChromosomeFactory::generate → KILLED

2.2
Location : generate
Killed by : net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest.[engine:junit-jupiter]/[class:net.bmahe.genetics4j.neat.chromosomes.factory.NeatConnectedChromosomeFactoryTest]/[method:generate()]
removed call to net/bmahe/genetics4j/neat/chromosomes/NeatChromosome::<init> → KILLED

Active mutators

Tests examined


Report generated by PIT 1.20.3