Beispiel #1
0
        public IEnumerable <Individual> Cross(Individual individual1, Individual individual2)
        {
            var midpoint = GeometricCalculator.GetMidpoint(individual1.Semantics, individual2.Semantics);

            bool triedBackPropagation1;
            var  child1 = GenerateChildren(individual1, individual2, midpoint, out triedBackPropagation1);

            bool triedBackPropagation2;
            var  child2 = GenerateChildren(individual2, individual1, midpoint, out triedBackPropagation2);

            if (!triedBackPropagation1 && !triedBackPropagation2 && Fallback != null)
            {
                return(Fallback.Cross(individual1, individual2));
            }

            return(new[] { child1, child2 });
        }