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); }
protected override void WriteInfo(BinaryWriter w) { base.WriteInfo(w); w.Write(InhibitoryConnectionChance); w.Write(ConnectionChance); w.Write(NewConnectionsCanForm); w.Write(ConnectionsCanDie); w.Write(NewNeuronsCanForm); w.Write(NeuronsCanDie); WriteListInfo(EyeRNeuronGenes, w); WriteListInfo(EyeGNeuronGenes, w); WriteListInfo(EyeBNeuronGenes, w); WriteListInfo(DistanceNeuronGenes, w); WriteListInfo(HiddenNeuronGenes, w); WriteListInfo(InputNeuronGenes, w); WriteListInfo(OutputNeuronGenes, w); WriteListInfo(MutationGenes, w); GlobalSigmoidFunction.Save(w); GlobalOutputSigmoidFunction.Save(w); }
public override INeuralNetChromosome CrossoverWith(INeuralNetChromosome netC2, CrossoverFunction crossoverFunction) { var c2 = (RMP_Chromosome)netC2; var child = new RMP_Chromosome(); crossoverFunction.Crossover(MutationGenes, c2.MutationGenes, child.MutationGenes); crossoverFunction.Crossover(EyeRNeuronGenes, c2.EyeRNeuronGenes, child.EyeRNeuronGenes); crossoverFunction.Crossover(EyeGNeuronGenes, c2.EyeGNeuronGenes, child.EyeGNeuronGenes); crossoverFunction.Crossover(EyeBNeuronGenes, c2.EyeBNeuronGenes, child.EyeBNeuronGenes); crossoverFunction.Crossover(DistanceNeuronGenes, c2.DistanceNeuronGenes, child.DistanceNeuronGenes); crossoverFunction.Crossover(HiddenNeuronGenes, c2.HiddenNeuronGenes, child.HiddenNeuronGenes); crossoverFunction.Crossover(InputNeuronGenes, c2.InputNeuronGenes, child.InputNeuronGenes); crossoverFunction.Crossover(OutputNeuronGenes, c2.OutputNeuronGenes, child.OutputNeuronGenes); child.GlobalSigmoidFunction = (SigmoidFunction)GlobalSigmoidFunction.CrossoverModule(c2.GlobalSigmoidFunction, crossoverFunction); child.GlobalOutputSigmoidFunction = (SigmoidFunction)GlobalOutputSigmoidFunction.CrossoverModule(c2.GlobalOutputSigmoidFunction, crossoverFunction); return(child); }