Ejemplo n.º 1
0
        public void TestMutate()
        {
            var input         = BinaryConvertor.IntsToBinaryString(4, -123, 7, 7, 9, 0, -2);
            var inputLength   = input.Length;
            var mutationImpls = new IMutator[]
            {
                new SimpleMutator(),
                new RepeatableMutator(1, 1),
                new RepeatableMutator(15, 0.7),
                new AdaptiveMutator(1, 1),
                new AdaptiveMutator(17, 1, 1, 0.5, 7),
                new HackMutator(1, 1),
                new HackMutator(10, 0.45)
            };

            foreach (var mutator in mutationImpls)
            {
                var algorithm = new Lab1_C.Algorithm(new AlgorithmOptions(
                                                         lowerBound: -100, // so random value won't ever match `-123`
                                                         mutator: mutator
                                                         ));
                var result = algorithm.Mutate(input);

                Assert.AreNotEqual(input, result);
                Assert.AreEqual(inputLength, result.Length);
            }
        }
Ejemplo n.º 2
0
        public void TestZeroToString()
        {
            var expected = "".PadLeft(BinaryConvertor.IntBytes, '0');
            var result   = BinaryConvertor.IntsToBinaryString(0);

            Assert.AreEqual(expected, result);
        }
Ejemplo n.º 3
0
        public void TestStringToZeros()
        {
            var input    = "".PadLeft(BinaryConvertor.IntBytes * 4, '0');
            var expected = new[] { 0, 0, 0, 0 };
            var result   = BinaryConvertor.BinaryStringToInts(input);

            Assert.AreEqual(expected, result);
        }
Ejemplo n.º 4
0
        public void TestStringToInt()
        {
            var input    = "1011010".PadLeft(BinaryConvertor.IntBytes, '0');
            var expected = new[] { 0x5A };
            var result   = BinaryConvertor.BinaryStringToInts(input);

            Assert.AreEqual(expected, result);
        }
Ejemplo n.º 5
0
        public void TestIntsToString()
        {
            var int1     = "1011010".PadLeft(BinaryConvertor.IntBytes, '0');
            var int2     = "".PadLeft(BinaryConvertor.IntBytes, '0');
            var int3     = "11111111".PadLeft(BinaryConvertor.IntBytes, '0');
            var int4     = "1010101111001101".PadLeft(BinaryConvertor.IntBytes, '0');
            var expected = int1 + int2 + int3 + int4;
            var result   = BinaryConvertor.IntsToBinaryString(0x5A, 0x0, 0xFF, 0xABCD);

            Assert.AreEqual(expected, result);
        }
Ejemplo n.º 6
0
        public void TestStringToInts()
        {
            var int1     = "1011010".PadLeft(BinaryConvertor.IntBytes, '0');
            var int2     = "".PadLeft(BinaryConvertor.IntBytes, '0');
            var int3     = "11111111".PadLeft(BinaryConvertor.IntBytes, '0');
            var int4     = "1010101111001101".PadLeft(BinaryConvertor.IntBytes, '0');
            var input    = int1 + int2 + int3 + int4;
            var expected = new[] { 0x5A, 0x0, 0xFF, 0xABCD };
            var result   = BinaryConvertor.BinaryStringToInts(input);

            Assert.AreEqual(expected, result);
        }
Ejemplo n.º 7
0
        public void TestTournament()
        {
            var candidates = new[]
            {
                BinaryConvertor.IntsToBinaryString(1, 1, 1, 1),
                BinaryConvertor.IntsToBinaryString(0, 0, 0, 0),
                BinaryConvertor.IntsToBinaryString(1, 0, 1, 0),
                BinaryConvertor.IntsToBinaryString(1, 1, 0, 1)
            }.ToList();
            var expected = candidates[1];
            var result   = new Lab1_C.Algorithm().Tournament(new Sphere(), candidates, 4);

            Assert.AreEqual(expected, result);
        }
Ejemplo n.º 8
0
        public void TestCrossoverLength()
        {
            var x         = BinaryConvertor.IntsToBinaryString(1, 4, 6);
            var y         = BinaryConvertor.IntsToBinaryString(211, 0, 42);
            var expected  = x.Length;
            var algorithm = new Lab1_C.Algorithm();

            for (var i = 0; i < 100; ++i)
            {
                var result1 = algorithm.Crossover(x, y).Key.Length;
                var result2 = algorithm.Crossover(x, y).Value.Length;

                Assert.AreEqual(expected, result1);
                Assert.AreEqual(expected, result2);
            }
        }
Ejemplo n.º 9
0
        public void TestBinaryTournament()
        {
            var candidates = new[]
            {
                BinaryConvertor.IntsToBinaryString(12, 1, 10, 11),
                BinaryConvertor.IntsToBinaryString(10, 0, 13, 0),
                BinaryConvertor.IntsToBinaryString(8, 8, 0, 5)
            }.ToList();
            var algorithm = new Lab1_C.Algorithm();

            for (var i = 0; i < 100; ++i)
            {
                var result = algorithm.Tournament(new Sphere(), candidates);
                Assert.AreNotEqual(candidates[0], result);
            }
        }