private Individu[] SelectionCouple() { Individu parent1 = population[randomizer.Next(0, NOMBRE_INDIVIDU - 1)]; Individu parent2 = population[randomizer.Next(0, NOMBRE_INDIVIDU - 1)]; double crossover = randomizer.Next(0, 100); crossover /= 100; if (crossover < TXCROSSOVER) { return new Individu[] { parent1, parent2 } } ; else { if (parent1.getNotation() >= parent2.getNotation()) { return new Individu[] { parent1 } } ; else { return new Individu[] { parent2 } }; } }
/// <summary> /// Deux parent qui s'aiment donnent un enfant qui aura des propriété de ses deux parents selon le taux de fusion et la parent dominant /// </summary> /// <param name="secondParent"></param> /// <param name="tauxFusion"></param> /// <returns></returns> public Individu GetEnfantNaturel(Individu secondParent, int tauxFusion) { randomizerNote = new Random(); int[] notesDeMusiqueEnfant = new int[NumberNote]; if (this.notation >= secondParent.getNotation()) { notesDeMusiqueEnfant = FusionNotesDeMusique(this.notesMusique, secondParent.GetNotesDeMusique(), tauxFusion); return(new Individu(notesDeMusiqueEnfant, this.typeInstrument)); } else { notesDeMusiqueEnfant = FusionNotesDeMusique(secondParent.GetNotesDeMusique(), this.notesMusique, tauxFusion); return(new Individu(notesDeMusiqueEnfant, secondParent.GetTypeInstrument())); } }
/// <summary> /// Deux parent qui s'aiment donnent un enfant qui aura des propriété de ses deux parents selon le taux de fusion et la parent dominant /// </summary> /// <param name="secondParent"></param> /// <param name="tauxFusion"></param> /// <returns></returns> public Individu GetEnfantNaturel(Individu secondParent, int tauxFusion) { randomizerNote = new Random(); int[] notesDeMusiqueEnfant = new int[NumberNote]; if (this.notation >= secondParent.getNotation()) { notesDeMusiqueEnfant = FusionNotesDeMusique(this.notesMusique, secondParent.GetNotesDeMusique(), tauxFusion); return new Individu(notesDeMusiqueEnfant, this.typeInstrument); } else { notesDeMusiqueEnfant = FusionNotesDeMusique(secondParent.GetNotesDeMusique(), this.notesMusique, tauxFusion); return new Individu(notesDeMusiqueEnfant, secondParent.GetTypeInstrument()); } }