Esempio n. 1
0
        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);
        }