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; } }
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); } }