Encog.Neural.Networks.Training.NEAT.NEATGenome.MutateWeights C# (CSharp) Method

MutateWeights() public method

Mutate the weights.
public MutateWeights ( double mutateRate, double probNewMutate, double maxPertubation ) : void
mutateRate double The mutation rate.
probNewMutate double The probability of a whole new weight.
maxPertubation double The max perturbation.
return void
        public void MutateWeights(double mutateRate, double probNewMutate,
                double maxPertubation)
        {
            foreach (IGene gene in linksChromosome.Genes)
            {
                NEATLinkGene linkGene = (NEATLinkGene)gene;
                if (ThreadSafeRandom.NextDouble() < mutateRate)
                {
                    if (ThreadSafeRandom.NextDouble() < probNewMutate)
                    {
                        linkGene.Weight = RangeRandomizer.Randomize(-1, 1);
                    }
                    else
                    {
                        linkGene.Weight += RangeRandomizer.Randomize(-1, 1)
                                        * maxPertubation;
                    }
                }
            }
        }