/// <summary> /// Define the crossover operator for 2 GeneticNeuralNetwork /// </summary> /// <param name="i1">index of mother in population</param> /// <param name="i2">index of father in population</param> /// <returns>the child</returns> protected GeneticNeuralNetwork CrossOver(int i1, int i2) { GeneticNeuralNetwork result = new GeneticNeuralNetwork(nn); GeneticNeuralNetwork ind1 = (GeneticNeuralNetwork)population[i1]; GeneticNeuralNetwork ind2 = (GeneticNeuralNetwork)population[i2]; int t = rand.Next(ind1.N_Genes); int index = 0; while (index<t) { result[index] = ind1[index]; if (Mute) result[index] += MutationValue; index++; } while (index<ind1.N_Genes) { result[index] = ind2[index]; if (Mute) result[index] += MutationValue; index++; } return result; }