Beispiel #1
0
 public static bool GeneticallyEqual(Gene gene1, Gene gene2)
 {
     if (gene1.Dna.Count != gene2.Dna.Count)
     {
         return(false);
     }
     for (int i = 0; i < gene1.Dna.Count; i++)
     {
         if (!GeneticallyEqual(gene1.Dna[i], gene2.Dna[i]))
         {
             return(false);
         }
     }
     return(true);
 }
Beispiel #2
0
        public void Mutate()
        {
            int locus1 = _random.Next(0, Genotype.GeneCount);
            int locus2 = _random.Next(0, Genotype.GeneCount);

            Gene gene1 = _genes[locus1];
            Gene gene2 = _genes[locus2];

            switch (Genotype.MutationType)
            {
            case MutationType.Random:
                _genes[locus1] = Gene.RandomGene(Genotype.GeneLength);
                _genes[locus1].SetMutation();
                break;

            case MutationType.Swap:
                _genes[locus1] = gene2;
                _genes[locus2] = gene1;

                _genes[locus1].SetMutation();
                _genes[locus2].SetMutation();
                break;
            }
        }
Beispiel #3
0
 public void Copy(Gene parent)
 {
     _gene = parent._gene;
 }
Beispiel #4
0
 public void AddGene(Gene g)
 {
     _genes.Add(g);
 }