public void MyTestMethod() { var random = new RandomImplementation(23); INeatConfiguration configuration = new DefaultNeatConfiguration(500); var nodeInovator = new InnovationGenerator(1); var ConnectionInovator = new InnovationGenerator(1); var genomeProvider = new GenomeProvider(nodeInovator, ConnectionInovator, random); var crossFunction = new NeatCrossFunction(random, configuration); var weightMutation = new ApplyWeightMutation(random, configuration); var addNodeMutation = new AddNodeMutation(nodeInovator, ConnectionInovator, random); var addConnectionMutation = new AddConnectionMutation(ConnectionInovator, random, configuration); var evaluator = new WeightOfAHundred(configuration, genomeProvider, nodeInovator, ConnectionInovator, addConnectionMutation, addNodeMutation, weightMutation, crossFunction, random); for (int i = 0; i < 1000; i++) { evaluator.EvaluateGeneration(); Console.WriteLine($"Best Fitness: {evaluator.FittestGenome.Fitness}"); } Assert.That(evaluator.FittestGenome.Fitness > 90); }
public void AddConnectionMutation_Mutate_AddedConnection() { //ARRANGE var i = 0; _random.Next(Arg.Is <int>(2)).Returns(call => { var ret = i; i = i + 1; return(ret); }); _random.NextDouble().ReturnsForAnyArgs(1.0); _innovationPointGenerator.GetNextInnovation().Returns(23); var genome = CreateGenome(); var addConnectionMutator = new AddConnectionMutation(_innovationPointGenerator, _random, _config); //ACT var result = addConnectionMutator.Mutate(ref genome); //ASSERT Assert.IsTrue(result); Assert.AreEqual(1, genome.Connections.Count()); Assert.AreEqual(1.0, genome.Connections.First().Value.Weight); Assert.AreEqual(23, genome.Connections.First().Value.Id); }
public void test() { var random = new RandomImplementation(23); INeatConfiguration configuration = new DefaultNeatConfiguration(500); var nodeInovator = new InnovationGenerator(1); var connectionInovator = new InnovationGenerator(1); var problemDomain = new ProblemDomain( inputs: new double[, ] { { 0, 0, 1 }, { 0, 1, 1 }, { 1, 0, 1 }, { 1, 1, 1 } }, outputs: new double[, ] { { 0 }, { 1 }, { 1 }, { 0 } }); var genome = CreateOriginalGenome(nodeInovator, connectionInovator, problemDomain); var genomeProvider = new XORNNProvider(nodeInovator, connectionInovator, random, genome); var crossFunction = new NeatCrossFunction(random, configuration); var weightMutation = new ApplyWeightMutation(random, configuration); var addNodeMutation = new AddNodeMutation(nodeInovator, connectionInovator, random); var addConnectionMutation = new AddConnectionMutation(connectionInovator, random, configuration); var evaluator = new XORNNEvaluator(configuration, genomeProvider, nodeInovator, connectionInovator, addConnectionMutation, addNodeMutation, weightMutation, crossFunction, random, problemDomain); for (int i = 0; i < 1000; i++) { evaluator.EvaluateGeneration(); Console.WriteLine($"Best Fitness: {evaluator.FittestGenome.Fitness}"); } Assert.That(evaluator.FittestGenome.Fitness > 90); }
public void AddConnectionMutation_Mutate_FailedToAddConnection() { //ARRANGE _random.Next(Arg.Is <int>(2)).Returns(1); _random.NextDouble().ReturnsForAnyArgs(1.0); var genome = CreateGenome(); var addConnectionMutator = new AddConnectionMutation(_innovationPointGenerator, _random, _config); //ACT var result = addConnectionMutator.Mutate(ref genome); //ASSERT Assert.IsFalse(result); Assert.AreEqual(0, genome.Connections.Count()); }