protected void InitGeneticManager() { var initialGenerationGenerator = new NeuralInitialGenerationCreatorBase( InitNeuralModel(), new FeedForwardOpBaker() ); var selection = new RouletteWheelSelectionWithRepetion(); var crossover = new OnePointCrossover(true); var breeding = new BreedingClassic( crossoverPart, minProduction: 1, selection: selection, crossover: crossover, mutationManager: InitMutations() ); var reinsertion = new ReinsertionFromSelection( reinsertionPart, minProduction: 0, selection: new EliteSelection()); var producers = new IGenomeProducer[] { breeding, reinsertion }; var genomeForge = new GenomeForge(producers); var generationManager = new GenerationManagerKeepLast(); geneticManager = new GeneticManagerClassic( generationManager, initialGenerationGenerator, genomeForge, genomesCount ); geneticManager.Init(); }