public override INeuralNetChromosome Clone() { var clone = new RMP_Chromosome(); clone.InhibitoryConnectionChance = InhibitoryConnectionChance; clone.ConnectionChance = ConnectionChance; clone.NewConnectionsCanForm = NewConnectionsCanForm; clone.ConnectionsCanDie = ConnectionsCanDie; clone.NewNeuronsCanForm = NewNeuronsCanForm; clone.NeuronsCanDie = NeuronsCanDie; clone.EyeRNeuronGenes.AddRange(EyeRNeuronGenes.Select(n => (RMP_NeuronGene)n.Clone())); clone.EyeGNeuronGenes.AddRange(EyeGNeuronGenes.Select(n => (RMP_NeuronGene)n.Clone())); clone.EyeBNeuronGenes.AddRange(EyeBNeuronGenes.Select(n => (RMP_NeuronGene)n.Clone())); clone.DistanceNeuronGenes.AddRange(DistanceNeuronGenes.Select(n => (RMP_NeuronGene)n.Clone())); clone.HiddenNeuronGenes.AddRange(HiddenNeuronGenes.Select(n => (RMP_NeuronGene)n.Clone())); clone.InputNeuronGenes.AddRange(InputNeuronGenes.Select(n => (RMP_NeuronGene)n.Clone())); clone.OutputNeuronGenes.AddRange(OutputNeuronGenes.Select(n => (RMP_NeuronGene)n.Clone())); clone.MutationGenes.AddRange(MutationGenes.Select(n => (DoubleGene)n.Clone())); clone.GlobalSigmoidFunction = (SigmoidFunction)GlobalSigmoidFunction.Clone(); clone.GlobalOutputSigmoidFunction = (SigmoidFunction)GlobalOutputSigmoidFunction.Clone(); return(clone); }