Conveniently encapsulates a single UInt32, which is incremented to produce new IDs.
 /// <summary>
 /// Constructs with the provided IActivationFunctionLibrary, NeatGenomeParameters and ID generators.
 /// </summary>
 public CppnGenomeFactory(int inputNeuronCount, int outputNeuronCount,
                          IActivationFunctionLibrary activationFnLibrary,
                          NeatGenomeParameters neatGenomeParams,
                          UInt32IdGenerator genomeIdGenerator, UInt32IdGenerator innovationIdGenerator)
     : base(inputNeuronCount, outputNeuronCount, activationFnLibrary, neatGenomeParams, genomeIdGenerator, innovationIdGenerator)
 {
 }
 public AutoencoderGenomeFactory(int inputNeuronCount, int outputNeuronCount, int hiddenNeuronCount,
     NeatGenomeParameters neatGenomeParams, UInt32IdGenerator genomeIdGenerator,
     UInt32IdGenerator innovationIdGenerator)
     : base(inputNeuronCount, outputNeuronCount, neatGenomeParams, genomeIdGenerator, innovationIdGenerator)
 {
     _hiddenNeuronCount = hiddenNeuronCount;
 }
 /// <summary>
 /// Construct by assigning new IDs gemnerated by the provided UInt32IdGenerator.
 /// </summary>
 public AddedNeuronGeneStruct(UInt32IdGenerator idGenerator)
 {
     _addedNeuronId = idGenerator.NextId;
     _addedInputConnectionId = idGenerator.NextId;
     _addedOutputConnectionId = idGenerator.NextId;
 }