Beispiel #1
0
        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 }
                };
            }
        }
Beispiel #2
0
        /// <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()));
            }
        }
Beispiel #3
0
        /// <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());
            }
        }