Exemple #1
0
        public bool Mutate(Individual individual)
        {
            bool triedBackPropagation;
            bool mutated = ResultSemanticsOperator.Operate(DesiredSemantics, individual,
                                                           SubTreePool, MaxTreeDepth, out triedBackPropagation);

            double fitnessChange = 0;

            if (triedBackPropagation && individual.FitnessEvaluated && FitnessEvaluator != null)
            {
                double fitness = FitnessEvaluator.Evaluate(individual, Problem).Fitness;
                fitnessChange = fitness - individual.Fitness;
            }

            Statistics.Instance.AddBackpropagationAttemptMutation(triedBackPropagation, fitnessChange);
            if (!triedBackPropagation && Fallback != null)
            {
                return(Fallback.Mutate(individual));
            }
            return(mutated);
        }
Exemple #2
0
        private Individual GenerateChildren(Individual individual1, Individual individual2,
                                            Semantics midpoint, out bool triedBackPropagation)
        {
            var child1 = new Individual(individual1);

            child1.FitnessEvaluated = false;

            var mutated = ResultSemanticsOperator.Operate(midpoint,
                                                          child1, SubTreePool, MaxTreeDepth, out triedBackPropagation);

            double fitnessChange = 0;

            if (mutated && triedBackPropagation && individual1.FitnessEvaluated && FitnessEvaluator != null)
            {
                double fitness = FitnessEvaluator.Evaluate(child1, Problem).Fitness;
                fitnessChange = fitness - individual1.Fitness;
            }
            Statistics.Instance.AddBackpropagationAttemptCrossover(triedBackPropagation, fitnessChange);

            return(mutated ? child1 : individual1);
        }