Example #1
0
        public void Test_Mutation_Flip()
        {
            int count  = 0;
            int length = 50;

            while (count < 10)
            {
                int position = Math.Probability.Sampling.GetUniform(0, length - 1);

                var flip = new FlipMutation()
                {
                    N = position
                };
                // flip
                this.Test_Mutation(() => flip, true, length, (p1, p2) =>
                {
                    bool result = p1.Sequence.IsBinary() && p2.Sequence.IsBinary();
                    result      = result && (p1.Sequence[flip.N] != p2.Sequence[flip.N]);

                    double sum = MATH.Abs((p1.Sequence - p2.Sequence).Sum());
                    result     = result && (sum == 1);

                    return(result);
                });

                count++;
            }
        }
Example #2
0
        public void Test_Mutation_Chain_Fluent()
        {
            var flip     = new FlipMutation();
            var random   = new RandomMutation();
            var gaussian = new GaussianMutation();

            var chain = MutationChain.New(10)
                        .Add(() => flip, 0)
                        .Add(() => random, 4)
                        .Add(() => gaussian, 6);

            Assert.Equal(flip, chain.Mutations.ElementAt(0));
            Assert.Equal(random, chain.Mutations.ElementAt(1));
            Assert.Equal(gaussian, chain.Mutations.ElementAt(2));

            Assert.True(chain.Mutations.Count == 3);
        }
Example #3
0
        public void Test_Mutation_Chain_Build()
        {
            MutationChain chain = new MutationChain(5);

            var flip     = new FlipMutation();
            var random   = new RandomMutation();
            var gaussian = new GaussianMutation();

            var chain1 = chain.Add(() => flip, 1);
            var chain2 = chain1.Add(random);
            var chain3 = chain2.Add(() => gaussian, 4);

            Assert.DoesNotContain(flip, chain.Mutations);
            Assert.Contains(flip, chain1.Mutations);

            Assert.DoesNotContain(random, chain1.Mutations);
            Assert.Contains(random, chain2.Mutations);

            Assert.DoesNotContain(gaussian, chain2.Mutations);
            Assert.Contains(gaussian, chain3.Mutations);
        }