示例#1
0
        public void FlipBit_Index_ValueFlip()
        {
            var target = new BinaryChromosomeStub(2);

            target.ReplaceGenes(0, new Gene[] {
                new Gene(0), new Gene(1)
            });

            Assert.AreEqual("01", target.ToString());

            target.FlipGene(0);
            Assert.AreEqual("11", target.ToString());

            target.FlipGene(1);
            Assert.AreEqual("10", target.ToString());
        }
        public void Mutate_NoArgs_BitMutated()
        {
            RandomizationProvider.Current = Substitute.For <IRandomization>();
            RandomizationProvider.Current.GetInt(0, 3).Returns(1);

            var target     = new FlipBitMutation();
            var chromosome = new BinaryChromosomeStub(3);

            chromosome.ReplaceGenes(0, new Gene[]
            {
                new Gene(0),
                new Gene(0),
                new Gene(0)
            });

            target.Mutate(chromosome, 1);
            Assert.AreEqual(0, chromosome.GetGene(0).Value);
            Assert.AreEqual(1, chromosome.GetGene(1).Value);
            Assert.AreEqual(0, chromosome.GetGene(2).Value);
        }
示例#3
0
        public void GenerateGene_Index_ZeroOrOne()
        {
            var chromosomes = new List <BinaryChromosomeBase> ();

            for (int i = 0; i < 100; i++)
            {
                var target = new BinaryChromosomeStub(2);
                var gene0  = target.GenerateGene(0);
                Assert.IsInstanceOf <int> (gene0.Value);

                var gene1 = target.GenerateGene(1);
                Assert.IsInstanceOf <int> (gene1.Value);

                target.ReplaceGenes(0, new Gene[] { gene0, gene1 });

                chromosomes.Add(target);
            }

            Assert.IsTrue(chromosomes.Any(c => c.GetGenes().Any(g => ((int)g.Value) == 0)));
        }
示例#4
0
        public void Mutate_NoArgs_BitMutated()
        {
            RandomizationProvider.Current = MockRepository.GenerateMock <IRandomization>();
            RandomizationProvider.Current.Expect(r => r.GetInt(0, 3)).Return(1);

            var target     = new FlipBitMutation();
            var chromosome = new BinaryChromosomeStub(3);

            chromosome.ReplaceGenes(0, new Gene[]
            {
                new Gene(0),
                new Gene(0),
                new Gene(0)
            });

            target.Mutate(chromosome, 1);
            Assert.AreEqual(0, chromosome.GetGene(0).Value);
            Assert.AreEqual(1, chromosome.GetGene(1).Value);
            Assert.AreEqual(0, chromosome.GetGene(2).Value);

            RandomizationProvider.Current.VerifyAllExpectations();
        }