public void Init() { var innovations = new InnovationCollection(); var neuronGenes = Enumerable.Range(0, 3).Select(i => { var inId = innovations.GetInitialNeuronInnovationId(i); return(new NeuronGene(inId, NeuronType.HiddenNeuron)); }).ToGeneList(); var synapseGenes = Enumerable.Range(0, 3).Select(i => { var inId = innovations.GetSynapseInnovationId(i, i + 1); return(new SynapseGene(inId, i, i + 1, true)); }).ToGeneList(); var protoGenotype = new Genotype(neuronGenes, synapseGenes); var phenotypes = Enumerable.Range(0, 100).Select(_ => { var gt = Genotype.FromPrototype(protoGenotype); var pt = new Phenotype(gt); return(pt); }).ToArray(); var distanceMetric = new NEAT.DistanceMetric(0.0f, 0.0f, 35.0f); var speciation = new NEAT.Speciation(10, 50.0f, 0.2f, distanceMetric); species = speciation.Speciate(new NEAT.Specie[0], phenotypes); }
public void TestMutationCollection() { var genotypes = Enumerable.Range(0, 100).Select(_ => Genotype.FromPrototype(protoGenotype)).ToArray(); var mutations = new NEAT.MutationCollection(); mutations.Add(0.75f, new NEAT.AddNeuronMutator(innovations)); mutations.Add(0.25f, new NEAT.AddSynapseMutator(innovations)); var results = mutations.Mutate(genotypes); Assert.AreEqual(75, results.addedNeurons, 75 * 0.15f); Assert.AreEqual(175, results.addedSynapses, 175 * 0.25f); }
public void TestSpecie() { var specie = new Specie(13, protoGenotype, 0, 0, 0.0f); for (int i = 0; i < 100; i++) { var gt = Genotype.FromPrototype(protoGenotype); var pt = new Phenotype(gt); specie.Add(pt); } foreach (var pt in specie) { pt.AdjustedFitness = 1.0f / (float)specie.Count; } Assert.AreEqual(0.0f, specie.MeanFitness, 0.001f); Assert.AreEqual(0.01f, specie.MeanAdjustedFitness, 0.001f); Assert.AreEqual(100, specie.Count); }
public void Init() { var innovations = new InnovationCollection(); var neuronGenes = Enumerable.Range(0, 3).Select(i => { var inId = innovations.GetInitialNeuronInnovationId(i); return(new NeuronGene(inId, NeuronType.HiddenNeuron)); }).ToGeneList(); var synapseGenes = Enumerable.Range(0, 3).Select(i => { var inId = innovations.GetSynapseInnovationId(i, i + 1); return(new SynapseGene(inId, i, i + 1, true)); }).ToGeneList(); var protoGenotype = new Genotype(neuronGenes, synapseGenes); phenotypes = Enumerable.Range(0, 100).Select(_ => { var gt = Genotype.FromPrototype(protoGenotype); var pt = new Phenotype(gt); return(pt); }).ToArray(); }