int ChooseMateIndex(int gen) { int index = 0; float mateNumber = (float)MateSelectorRnd.NextDouble(); float totalFitness = GetTotalFitness(); while (mateNumber > 0) { mateNumber -= Generations[gen - 1][index].Fitness / totalFitness; index++; } return(--index); }
NetworkGenome ChooseMate() { int index = 0; float mateNumber = (float)MateSelectorRnd.NextDouble(); float totalFitness = GetTotalFitness(); do { mateNumber -= Generations[NbGeneration - 1][index].Fitness / totalFitness; index++; } while (mateNumber > 0); return(Generations[NbGeneration - 1][--index]); }
/// <summary> /// /// </summary> /// <param name="gen"></param> /// <param name="indexPartner"></param> /// <returns></returns> int ChooseMateIndex(int gen, int indexPartner) { int index = 0; float totalFitness = GetTotalFitness(); float mateNumber = 0; do { index = 0; mateNumber = (float)MateSelectorRnd.NextDouble(); while (mateNumber > 0) { mateNumber -= (Generations[gen - 1][index].Fitness) / totalFitness; index++; } index--; }while (index == indexPartner); return(index); }