public async Task <int> AddNewPlan(PersonalPlanDto personalPlan) { _dbContext.PersonalPlans.Add(personalPlan); await _dbContext.SaveChangesAsync(); return(personalPlan.Id); }
public void OptimizeStrategicPlan(PersonalPlanDto personalPlan) { PersonalPlan = personalPlan; var population = new Population(); for (var p = 0; p < 20; p++) { var chromosome = new Chromosome(); foreach (var activitySlotDto in personalPlan.Activities) { chromosome.Genes.Add(new Gene(activitySlotDto)); } chromosome.Genes.ShuffleFast(); population.Solutions.Add(chromosome); } // create the elite operator var elite = new Elite(10); // create the crossover operator var crossover = new Crossover(0.8) { CrossoverType = CrossoverType.DoublePointOrdered }; // create the mutation operator var mutate = new SwapMutate(0.02); // create the GA var ga = new GeneticAlgorithm(population, CalculateFitness); // hook up to some useful events ga.OnGenerationComplete += ga_OnGenerationComplete; ga.OnRunComplete += ga_OnRunComplete; // add the operators ga.Operators.Add(elite); ga.Operators.Add(crossover); ga.Operators.Add(mutate); // run the GA ga.Run(Terminate); }