示例#1
0
        public void AddNodeMutation_Mutate_AddsNodeAndConnection()
        {
            //ARRANGE
            var genome = CreateGenome(1, 1);

            genome.Connections.Add(1,
                                   new Connection {
                Id = 1, InNodeId = 1, OutNodeId = 2, IsEnabled = true, Weight = 2.0
            });

            _nodeInnovationGenerator.GetNextInnovation().Returns(3);
            _connectionInnovationGenerator.GetNextInnovation().Returns(2, 3);
            _randomizer.Next(1).Returns(call => call.Arg <int>() - 1);

            var mutator = new AddNodeMutation(_nodeInnovationGenerator, _connectionInnovationGenerator, _randomizer);
            //ACT
            var result = mutator.Mutate(ref genome);

            //ASSERT
            Assert.IsTrue(result);
            Assert.AreEqual(3, genome.Connections.Count);
            Assert.AreEqual(3, genome.Nodes.Count);
            Assert.AreEqual(NodeType.Hidden, genome.Nodes[3].NodeType);

            AssertConnection(genome, 1, false, 1, 2, 2.0);
            AssertConnection(genome, 2, true, 1, 3, 1.0);
            AssertConnection(genome, 3, true, 3, 2, 2.0);
        }
示例#2
0
        public void AddNodeMutation_Mutate_DidNotAddNodesSinceNoConnections()
        {
            //ARRANGE
            var genome = CreateGenome(1, 1);

            var mutator = new AddNodeMutation(_nodeInnovationGenerator, _connectionInnovationGenerator, _randomizer);
            //ACT
            var result = mutator.Mutate(ref genome);

            //ASSERT
            Assert.IsFalse(result);
            Assert.AreEqual(0, genome.Connections.Count);
            Assert.AreEqual(2, genome.Nodes.Count);
        }
示例#3
0
        public void AddNodeMutation_Mutate_DidNotAddNodesSinceNoEnabledConnections()
        {
            //ARRANGE
            var genome = CreateGenome(1, 1);

            genome.Connections.Add(1,
                                   new Connection {
                Id = 1, InNodeId = 1, OutNodeId = 2, IsEnabled = false, Weight = 1.0
            });

            var mutator = new AddNodeMutation(_nodeInnovationGenerator, _connectionInnovationGenerator, _randomizer);
            //ACT
            var result = mutator.Mutate(ref genome);

            //ASSERT
            Assert.IsFalse(result);
            Assert.AreEqual(1, genome.Connections.Count);
            Assert.AreEqual(2, genome.Nodes.Count);
        }