Package net.bmahe.genetics4j.neat
Record Class ConnectionPair
java.lang.Object
java.lang.Record
net.bmahe.genetics4j.neat.ConnectionPair
- Record Components:
from
- the source node index of the connectionto
- the target node index of the connection
Represents a pair of node indices defining a potential connection in NEAT neural networks.
ConnectionPair is a simple record that encapsulates the source and target node indices for a neural network connection. This immutable data structure is primarily used as a key for innovation number caching in the InnovationManager, enabling efficient lookup and assignment of innovation numbers based on connection topology.
Key characteristics:
- Immutable: Record provides immutability for safe use as hash keys
- Value semantics: Equality based on both from and to node indices
- Hash key: Optimized for use in hash-based collections
- Lightweight: Minimal memory overhead with just two integer fields
Usage in innovation tracking:
- Cache key: Used as key in InnovationManager's innovation cache
- Connection identification: Uniquely identifies connection types
- Historical tracking: Enables consistent innovation number assignment
- Population consistency: Same connection pairs get same innovation numbers
Common usage patterns:
// Create connection pair for innovation tracking
ConnectionPair pair = new ConnectionPair(0, 3); // Input 0 -> Output 3
// Use as cache key in innovation manager
Map<ConnectionPair, Integer> innovationCache = new HashMap<>();
int innovationNumber = innovationCache.computeIfAbsent(pair,
k -> innovationManager.getNextInnovationNumber());
// Connection pair represents potential connection topology
List<ConnectionPair> possibleConnections = List.of(
new ConnectionPair(0, 2), // Input 0 -> Output 2
new ConnectionPair(1, 2), // Input 1 -> Output 2
new ConnectionPair(0, 3), // Input 0 -> Output 3
new ConnectionPair(1, 3) // Input 1 -> Output 3
);
Integration with NEAT algorithm:
- Innovation management: Key component of innovation number caching
- Structural mutations: Used when adding new connections to networks
- Genetic tracking: Enables consistent gene identification across population
- Crossover operations: Supports gene alignment during recombination
Performance considerations:
- Efficient hashing: Record provides optimized hash code implementation
- Memory efficient: Compact representation with minimal overhead
- Cache friendly: Small size improves cache locality
- GC efficient: Immutable objects reduce garbage collection pressure
Value semantics:
- Equality: Two pairs are equal if both from and to indices match
- Hash code: Computed from both node indices for efficient hash table usage
- String representation: Readable format showing connection direction
- Comparison: Natural ordering based on from index, then to index
- See Also:
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionConnectionPair
(int from, int to) Creates an instance of aConnectionPair
record class. -
Method Summary
Modifier and TypeMethodDescriptionfinal boolean
Indicates whether some other object is "equal to" this one.int
from()
Returns the value of thefrom
record component.final int
hashCode()
Returns a hash code value for this object.int
to()
Returns the value of theto
record component.final String
toString()
Returns a string representation of this record class.
-
Field Details
-
Constructor Details
-
Method Details
-
toString
Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components. -
hashCode
public final int hashCode()Returns a hash code value for this object. The value is derived from the hash code of each of the record components. -
equals
Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with '=='. -
from
public int from()Returns the value of thefrom
record component.- Returns:
- the value of the
from
record component
-
to
public int to()Returns the value of theto
record component.- Returns:
- the value of the
to
record component
-