示例#1
0
        public void NoCommonRegionCrossoverTest()
        {
            var converter = new MathExpressionConverter(MathPrimitiveSets.Default);
            var prog1     = converter.FromNormalNotation("sin((1-2))");
            var prog2     = converter.FromNormalNotation("((2+3)-1)");

            Console.WriteLine($"{prog1}, {prog2}");
            var op       = new OnePointCrossover <MathProgram, double>();
            var allProgs = new HashSet <MathProgram>(op.GetAllOffspring(prog1, prog2));
            var prog     = op.Crossover(prog1, prog2);

            Assert.IsTrue(allProgs.Contains(prog2),
                          $"{prog} should be a valid crossover between {prog1} and {prog2}.");
            Assert.IsTrue(prog.Equals(prog2),
                          $"{prog} should be the only valid crossover between {prog1} and {prog2}.");
            Assert.AreEqual(allProgs.Count, 1, double.Epsilon,
                            $"Crossover between {prog1} and {prog2} should only have 1 element.");
        }