Encog.Neural.Networks.Training.Genetic.NeuralGeneticAlgorithm.NeuralGeneticAlgorithm C# (CSharp) Method

NeuralGeneticAlgorithm() public method

Construct a neural genetic algorithm.
public NeuralGeneticAlgorithm ( BasicNetwork network, IRandomizer randomizer, ICalculateScore calculateScore, int populationSize, double mutationPercent, double percentToMate ) : Encog.MathUtil.Randomize
network BasicNetwork The network to base this on.
randomizer IRandomizer The randomizer used to create this initial population.
calculateScore ICalculateScore The score calculation object.
populationSize int The population size.
mutationPercent double The percent of offspring to mutate.
percentToMate double The percent of the population allowed to mate.
return Encog.MathUtil.Randomize
        public NeuralGeneticAlgorithm(BasicNetwork network,
                                      IRandomizer randomizer, ICalculateScore calculateScore,
                                      int populationSize, double mutationPercent,
                                      double percentToMate) : base(TrainingImplementationType.Iterative)
        {
            Genetic = new NeuralGeneticAlgorithmHelper
                           {
                               CalculateScore = new GeneticScoreAdapter(calculateScore)
                           };
            IPopulation population = new BasicPopulation(populationSize);
            Genetic.MutationPercent = mutationPercent;
            Genetic.MatingPopulation = percentToMate*2;
            Genetic.PercentToMate = percentToMate;
            Genetic.Crossover = new Splice(network.Structure.CalculateSize()/3);
            Genetic.Mutate = new MutatePerturb(4.0d);
            Genetic.Population = population;
            for (int i = 0; i < population.PopulationSize; i++)
            {
                var chromosomeNetwork = (BasicNetwork) (network
                                                           .Clone());
                randomizer.Randomize(chromosomeNetwork);

                var genome = new NeuralGenome(chromosomeNetwork) {GA = Genetic};
                Genetic.PerformCalculateScore(genome);
                Genetic.Population.Add(genome);
            }
            population.Sort();
        }