Beispiel #1
0
        public async Task <int> AddNewPlan(PersonalPlanDto personalPlan)
        {
            _dbContext.PersonalPlans.Add(personalPlan);
            await _dbContext.SaveChangesAsync();

            return(personalPlan.Id);
        }
Beispiel #2
0
        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);
        }