protected override void Evolve(EvaluatorBase evaluator) { var offspringPopulationSize = Parameters.OffspringPopulationSize; var numberOfParentsSolutionsToSelect = Parameters.NumberOfParentsSolutionsToSelect; for (var i = 0; i < offspringPopulationSize; i++) { var parentsPopulation = new Solution[numberOfParentsSolutionsToSelect]; for (var j = 0; j < numberOfParentsSolutionsToSelect; j++) { parentsPopulation[j] = ParentsSelector.Select(BasePopulation); } OffspringPopulation[i] = StdDeviationsRecombiner.Recombine(parentsPopulation, OffspringPopulation[i]); OffspringPopulation[i] = RotationsRecombiner.Recombine(parentsPopulation, OffspringPopulation[i]); OffspringPopulation[i] = ObjectRecombiner.Recombine(parentsPopulation, OffspringPopulation[i]); OffspringPopulation[i] = StdDeviationsMutator.Mutate(OffspringPopulation[i]); OffspringPopulation[i] = RotationsMutator.Mutate(OffspringPopulation[i]); OffspringPopulation[i] = ObjectMutator.Mutate(OffspringPopulation[i]); OffspringPopulation[i].FitnessScore = evaluator.Evaluate(OffspringPopulation[i]); } BasePopulation = SurvivorsSelector.Select(BasePopulation, OffspringPopulation); }
//public override void SynthesizeModel(Point[] trainingPoints) //{ // var offspringPopulationSize = ExperimentParameters.OffspringPopulationSize; // var numberOfGenerations = ExperimentParameters.NumberOfGenerations; // BasePopulation = PopulationGenerator.GeneratePopulation(ExperimentParameters); // for (var i = 0; i < offspringPopulationSize; i++) // OffspringPopulation[i] = new Solution(ExperimentParameters); // InitialPopulation = BasePopulation.DeepCopyByExpressionTree(); // for (var i = 0; i < numberOfGenerations; i++) // { // for (var j = 0; j < offspringPopulationSize; j++) // { // var parentsPopulation = ParentsSelector.Select(BasePopulation); // OffspringPopulation[j] = StdDeviationsRecombiner.Recombine(parentsPopulation, OffspringPopulation[j]); // OffspringPopulation[j] = RotationsRecombiner.Recombine(parentsPopulation, OffspringPopulation[j]); // OffspringPopulation[j] = ObjectRecombiner.Recombine(parentsPopulation, OffspringPopulation[j]); // OffspringPopulation[j] = StdDeviationsMutator.Mutate(OffspringPopulation[j]); // OffspringPopulation[j] = RotationsMutator.Mutate(OffspringPopulation[j]); // OffspringPopulation[j] = ObjectMutator.Mutate(OffspringPopulation[j]); // OffspringPopulation[j].FitnessScore = Evaluator.Evaluate(OffspringPopulation[j]); // } // BasePopulation = SurvivorsSelector.Select(BasePopulation, OffspringPopulation); // } //} protected override void Evolve(int offspringPopulationSize) { for (var j = 0; j < offspringPopulationSize; j++) { var parentsPopulation = ParentsSelector.Select(BasePopulation); OffspringPopulation[j] = StdDeviationsRecombiner.Recombine(parentsPopulation, OffspringPopulation[j]); OffspringPopulation[j] = RotationsRecombiner.Recombine(parentsPopulation, OffspringPopulation[j]); OffspringPopulation[j] = ObjectRecombiner.Recombine(parentsPopulation, OffspringPopulation[j]); OffspringPopulation[j] = StdDeviationsMutator.Mutate(OffspringPopulation[j]); OffspringPopulation[j] = RotationsMutator.Mutate(OffspringPopulation[j]); OffspringPopulation[j] = ObjectMutator.Mutate(OffspringPopulation[j]); OffspringPopulation[j].FitnessScore = Evaluator.Evaluate(OffspringPopulation[j]); } BasePopulation = SurvivorsSelector.Select(BasePopulation, OffspringPopulation); }