public void HandlePopulationLevelStagnationTest_SingleSpecies() { UnitTests.RandomStub randomStub = new UnitTests.RandomStub(); Simulation sim = new Simulation(randomStub, gen, 20); // Create some fake species and genomes Species species1 = new Species(randomStub); Genome gen1 = new Genome(randomStub); gen1.OriginalFitness = 10; species1.AddGenome(gen1); // Remove default species/genomes and add fake ones sim.Species.Clear(); sim.Species.Add(species1); sim.OrderSpeciesByOriginalFitness(); sim.HandlePopulationLevelStagnation(); Assert.AreEqual(20, species1.Offspring); Assert.AreEqual(20, species1.ChampionOffspring); Assert.AreEqual(0, sim.GenerationsSinceLastUpdate); }
public void AddGenomesToSpeciesTest() { UnitTests.RandomStub randomStub = new UnitTests.RandomStub(); Simulation sim = new Simulation(randomStub, gen, 10); // Create some fake species and genomes Species species1 = new Species(randomStub); // Two genomes are matching, one is not so we should get 2 species (with 2 and 1 Genomes respectively) Genome gen1 = new Genome(randomStub); Genome gen2 = new Genome(randomStub); Genome gen3 = new Genome(randomStub); gen3.ParentSimulation = sim; gen3.AddNode(new Node(Node.ENodeType.SENSOR, 1)); gen3.AddNode(new Node(Node.ENodeType.SENSOR, 2)); gen3.AddNode(new Node(Node.ENodeType.OUTPUT, 3)); gen3.AddNode(new Node(Node.ENodeType.OUTPUT, 4)); gen3.AddConnectionGene(1, 2, true); gen3.AddConnectionGene(1, 3, true); gen3.AddConnectionGene(1, 4, true); sim.Species.Clear(); sim.AddGenomesToSpecies(new List <Genome> { gen1, gen2, gen3 }); Assert.AreEqual(2, sim.Species.Count); Assert.AreEqual(2, sim.Species[0].Genomes.Count); Assert.AreEqual(1, sim.Species[1].Genomes.Count); }
public void AddGenomesToSpeciesTest_NullGenomes_Expected_Exception() { UnitTests.RandomStub randomStub = new UnitTests.RandomStub(); Simulation sim = new Simulation(randomStub, gen, 21); sim.AddGenomesToSpecies(null); }
public void InsertGeneTest_Null_ExpectedException() { UnitTests.RandomStub randomStub = new UnitTests.RandomStub(); randomStub.NextIntValue = 0; randomStub.NextDoubleValue = 0.0; Genome genome = new Genome(randomStub); genome.AddNode(new Node(Node.ENodeType.SENSOR, 1)); genome.AddNode(new Node(Node.ENodeType.OUTPUT, 2)); genome.InsertConnectionGene(null); }
public void HandlePopulationLevelStagnationTest_OddPopulationSize() { UnitTests.RandomStub randomStub = new UnitTests.RandomStub(); Simulation sim = new Simulation(randomStub, gen, 21); // Create some fake species and genomes Species species1 = new Species(randomStub); Species species2 = new Species(randomStub); Species species3 = new Species(randomStub); Species species4 = new Species(randomStub); Genome gen1 = new Genome(randomStub); gen1.OriginalFitness = 10; species1.AddGenome(gen1); Genome gen2 = new Genome(randomStub); gen2.OriginalFitness = 0; species2.AddGenome(gen2); Genome gen3 = new Genome(randomStub); gen3.OriginalFitness = 20; species3.AddGenome(gen3); Genome gen4 = new Genome(randomStub); gen4.OriginalFitness = 1; species4.AddGenome(gen4); // Remove default species/genomes and add fake ones sim.Species.Clear(); sim.Species.AddRange(new Species[] { species1, species2, species3, species4 }); sim.OrderSpeciesByOriginalFitness(); sim.HandlePopulationLevelStagnation(); Assert.AreEqual(10, species1.Offspring); Assert.AreEqual(10, species1.ChampionOffspring); Assert.AreEqual(0, species2.Offspring); Assert.AreEqual(11, species3.Offspring); Assert.AreEqual(11, species3.ChampionOffspring); Assert.AreEqual(0, species4.Offspring); Assert.AreEqual(0, sim.GenerationsSinceLastUpdate); }
public void CalculateSpeciesOffspringTest_TotalFitnessGreaterThanZero() { UnitTests.RandomStub randomStub = new UnitTests.RandomStub(); Simulation sim = new Simulation(randomStub, gen, 21); // Create some fake species and genomes Species species1 = new Species(randomStub); Species species2 = new Species(randomStub); Species species3 = new Species(randomStub); Species species4 = new Species(randomStub); Genome gen1 = new Genome(randomStub); gen1.OriginalFitness = 5; gen1.Fitness = 5; species1.AddGenome(gen1); Genome gen2 = new Genome(randomStub); gen2.OriginalFitness = 10; gen2.Fitness = 10; species2.AddGenome(gen2); Genome gen3 = new Genome(randomStub); gen3.OriginalFitness = 15; gen3.Fitness = 15; species3.AddGenome(gen3); Genome gen4 = new Genome(randomStub); gen4.OriginalFitness = 20; gen4.Fitness = 20; species4.AddGenome(gen4); // Remove default species/genomes and add fake ones sim.Species.Clear(); sim.Species.AddRange(new Species[] { species1, species2, species3, species4 }); sim.OrderSpeciesByOriginalFitness(); sim.CalculateSpeciesOffspring(50.0f); Assert.AreEqual(2, species1.Offspring); Assert.AreEqual(4, species2.Offspring); Assert.AreEqual(6, species3.Offspring); Assert.AreEqual(9, species4.Offspring); }
public void FindConnectionGeneToSplitTest_Correct_Expected_True() { UnitTests.RandomStub randomStub = new UnitTests.RandomStub(); randomStub.NextIntValue = 0; randomStub.NextDoubleValue = 0.0; Genome genome = new Genome(randomStub); genome.AddNode(new Node(Node.ENodeType.SENSOR, 1)); genome.AddNode(new Node(Node.ENodeType.OUTPUT, 2)); genome.AddConnectionGene(1, 2, true); int connectionIndex = -1; bool found = genome.FindConnectionGeneToSplit(out connectionIndex); Assert.AreEqual(true, found); Assert.AreEqual(0, connectionIndex); }
public void CalculateSpeciesOffspringTest_TotalFitnessZero_Expected_AllSpeciesHaveSameOffspring_ButOne() { UnitTests.RandomStub randomStub = new UnitTests.RandomStub(); Simulation sim = new Simulation(randomStub, gen, 22); // Create some fake species and genomes Species species1 = new Species(randomStub); Species species2 = new Species(randomStub); Species species3 = new Species(randomStub); Species species4 = new Species(randomStub); Genome gen1 = new Genome(randomStub); gen1.OriginalFitness = 10; species1.AddGenome(gen1); Genome gen2 = new Genome(randomStub); gen2.OriginalFitness = 0; species2.AddGenome(gen2); Genome gen3 = new Genome(randomStub); gen3.OriginalFitness = 20; species3.AddGenome(gen3); Genome gen4 = new Genome(randomStub); gen4.OriginalFitness = 1; species4.AddGenome(gen4); // Remove default species/genomes and add fake ones sim.Species.Clear(); sim.Species.AddRange(new Species[] { species1, species2, species3, species4 }); sim.OrderSpeciesByOriginalFitness(); sim.CalculateSpeciesOffspring(0.0f); Assert.AreEqual(7, sim.Species[0].Offspring); for (int i = 1; i < sim.Species.Count; ++i) { Assert.AreEqual(5, sim.Species[i].Offspring); } }
public void AddGenomesToSpeciesTest_NoSpecies_Expected_CreateNewSpecies() { UnitTests.RandomStub randomStub = new UnitTests.RandomStub(); Simulation sim = new Simulation(randomStub, gen, 10); sim.Species.Clear(); Genome gen1 = new Genome(randomStub); gen1.OriginalFitness = 5; gen1.Fitness = 5; Assert.AreEqual(0, sim.Species.Count); sim.AddGenomesToSpecies(new List <Genome> { gen1 }); Assert.AreEqual(1, sim.Species.Count); }