Пример #1
0
        public void Init(int patternLength, List <string> choices, int populationSize, int maxGenerations,
                         Selection selection, Crossover crossover, Mutation mutation)
        {
            string selectionname = Enum.GetName(typeof(Selection), selection);

            _selection = (ISelection)Activator.CreateInstance("GeneticSharp.Domain", "GeneticSharp.Domain.Selections." + selectionname).Unwrap(); //new EliteSelection();
            _crossover = (ICrossover)Activator.CreateInstance("GeneticSharp.Domain", "GeneticSharp.Domain.Crossovers." + crossover).Unwrap();     //new TwoPointCrossover();
            _mutation  = (IMutation)Activator.CreateInstance("GeneticSharp.Domain", "GeneticSharp.Domain.Mutations." + mutation).Unwrap();        //new PartialShuffleMutation();

            _fittness = new ClosestToMillion();

            _playPatternChromosome = new PlayPatternChromosome(patternLength, choices);
            //var bestPattern = BestPattern.Get(context);
            _population = new Population(populationSize, populationSize, _playPatternChromosome);

            _geneticAlgorithm = new GeneticSharp.Domain.GeneticAlgorithm(_population, _fittness, _selection,
                                                                         _crossover, _mutation);
            _geneticAlgorithm.Termination = new GenerationNumberTermination(maxGenerations);
            _geneticAlgorithm.Init();
        }