Record Class ConnectionPair

java.lang.Object
java.lang.Record
net.bmahe.genetics4j.neat.ConnectionPair
Record Components:
from - the source node index of the connection
to - the target node index of the connection

public record ConnectionPair(int from, int to) extends Record
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
    Modifier and Type
    Field
    Description
    private final int
    The field for the from record component.
    private final int
    The field for the to record component.
  • Constructor Summary

    Constructors
    Constructor
    Description
    ConnectionPair(int from, int to)
    Creates an instance of a ConnectionPair record class.
  • Method Summary

    Modifier and Type
    Method
    Description
    final boolean
    Indicates whether some other object is "equal to" this one.
    int
    Returns the value of the from record component.
    final int
    Returns a hash code value for this object.
    int
    to()
    Returns the value of the to record component.
    final String
    Returns a string representation of this record class.

    Methods inherited from class java.lang.Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • Field Details

    • from

      private final int from
      The field for the from record component.
    • to

      private final int to
      The field for the to record component.
  • Constructor Details

    • ConnectionPair

      public ConnectionPair(int from, int to)
      Creates an instance of a ConnectionPair record class.
      Parameters:
      from - the value for the from record component
      to - the value for the to record component
  • Method Details

    • toString

      public final String 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.
      Specified by:
      toString in class Record
      Returns:
      a string representation of this object
    • 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.
      Specified by:
      hashCode in class Record
      Returns:
      a hash code value for this object
    • equals

      public final boolean equals(Object o)
      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 '=='.
      Specified by:
      equals in class Record
      Parameters:
      o - the object with which to compare
      Returns:
      true if this object is the same as the o argument; false otherwise.
    • from

      public int from()
      Returns the value of the from record component.
      Returns:
      the value of the from record component
    • to

      public int to()
      Returns the value of the to record component.
      Returns:
      the value of the to record component