Пример #1
0
        public static void Mutate(this MutationFunction mutationFunction, NeuralNetwork child, float probability, float factor)
        {
            switch (mutationFunction)
            {
            case MutationFunction.Absolute:
                for (var i = 0; i < child.genes.Length; i++)
                {
                    var gene = child.genes[i];
                    child.genes[i] = DoMutation(probability) ? gene : gene + Random.Range(-factor, factor);
                }


                break;

            case MutationFunction.Relative:
                for (var i = 0; i < child.genes.Length; i++)
                {
                    var gene = child.genes[i];
                    child.genes[i] = DoMutation(probability) ? gene : gene + gene * Random.Range(-factor, factor);
                }

                break;

            case MutationFunction.None:
            default:
                break;
            }
        }
Пример #2
0
 public static void Mutate(ref List <Individual> individuals, float tau1, float tau2, MutationFunction mutationFunction)
 {
     for (int i = 0; i < individuals.Count; i++)
     {
         mutationFunction(individuals[i], tau1, tau2);
     }
 }