Esempio n. 1
0
 public void PopulateGenes()
 {
     for (int i = 0; i < maxLength; i++)
     {
         genes.Add(GeneticFunction.GetGene());
     }
 }
Esempio n. 2
0
        public void Mutate()
        {
            int mutationPoint = GeneticPrimes.rnd.Next(genes.Count);

            genes[mutationPoint] = GeneticFunction.GetGene();
            //genes[mutationPoint].Mutate();
        }
Esempio n. 3
0
        public Chromosome RandomMerge(Chromosome ch)
        {
            Chromosome result = new Chromosome();

            for (int i = 0; i < genes.Count; i++)
            {
                GeneticFunction gene = GeneticPrimes.rnd.Next(100) < 50 ? genes[i].Clone() : ch.genes[i].Clone();
                result.genes.Add(gene);
            }

            return(result);
        }
Esempio n. 4
0
        public Chromosome RouletteMerge(Chromosome ch)
        {
            Chromosome result = new Chromosome();

            int splitPoint = GeneticPrimes.rnd.Next(genes.Count);

            for (int i = 0; i < genes.Count; i++)
            {
                GeneticFunction gene = i < splitPoint ? genes[i].Clone() : ch.genes[i].Clone();
                result.genes.Add(gene);
            }

            return(result);
        }
        public static GeneticFunction GetGene()
        {
            GeneticFunction result = null;
            int             r      = GeneticPrimes.rnd.Next(7);

            switch (r)
            {
            case 0:
                result = new AddFunction();
                break;

            case 1:
                result = new SubtractFunction();
                break;

            case 2:
                result = new MultiplyFunction();
                break;

            case 3:
                result = new DivideFunction();
                break;

            case 4:
                result = new OddFunction();
                break;

            case 5:
                result = new SquareRootFunction();
                break;

            case 6:
                result = new SquareFunction();
                break;
            }
            result.modifier = GeneticPrimes.rnd.Next(rndRange);
            return(result);
        }