Esempio n. 1
0
        public SmallGenetics(Main form1, Func <string, int, string, bool> populateM, SmallEquation ptarget)
        {
            pop    = populateM;
            form   = form1;
            target = ptarget;

            var population = new Population(populationSize, 320, false, false);

            //create the genetic operators
            var elite = new Elite(elitismPercentage);

            var crossover = new Crossover(crossoverProbability, true)
            {
                CrossoverType = CrossoverType.SinglePoint
            };

            var mutation = new BinaryMutate(mutationProbability, true);

            //create the GA itself
            ga = new GeneticAlgorithm(population, EvaluateFitness);

            ga.OnGenerationComplete += ga_OnGenerationComplete;

            ga.Operators.Add(elite);
            ga.Operators.Add(crossover);
            ga.Operators.Add(mutation);
        }
Esempio n. 2
0
File: Main.cs Progetto: jlga/MUFFIN
 public bool populateMethod(SmallEquation equation, int size, string graphseries)
 {
     chart1.Series.FindByName(graphseries).Points.Clear();
     for (int i = -size; i <= size; i++)
     {
         chart1.Series.FindByName(graphseries).Points.AddXY(i, Utils.calculateY(equation, i));
     }
     Thread.Sleep(10);
     return(true);
 }
Esempio n. 3
0
File: Utils.cs Progetto: jlga/MUFFIN
        public static Dictionary <int, double> convertToDictionary(SmallEquation equation, int size)
        {
            Dictionary <int, double> output = new Dictionary <int, double>();

            for (int i = -size; i <= size; i++)
            {
                output.Add(i, calculateY(equation, i));
            }
            return(output);
        }
Esempio n. 4
0
        private void ga_OnGenerationComplete(object sender, GaEventArgs e)
        {
            Console.WriteLine("---Generation Complete---");
            Console.WriteLine("Gen: " + e.Generation);

            Console.WriteLine("Fit: " + e.Population.MaximumFitness + " " + (e.Population.MaximumFitness - lastGenFitness));
            lastGenFitness = e.Population.MaximumFitness;

            //get the best solution
            var chromosome = e.Population.GetTop(1)[0];

            int numOfBytes = chromosome.ToBinaryString().Length / 8;

            byte[] bytes = new byte[numOfBytes];
            for (int i = 0; i < numOfBytes; i++)
            {
                bytes[i] = Convert.ToByte(chromosome.ToBinaryString().Substring(8 * i, 8), 2);
            }
            SmallEquation eq = Decoder.decodeToSmallEquation(bytes);

            eq.fitness = e.Population.MaximumFitness;
            Console.WriteLine("Eq : " + eq.ToString());
            form.backgroundWorker1.ReportProgress(Convert.ToInt32(e.Population.MaximumFitness * 100), JsonConvert.SerializeObject(eq));
        }
Esempio n. 5
0
File: Utils.cs Progetto: jlga/MUFFIN
 public static double calculateY(SmallEquation eq, double x)
 {
     return(eq.d0 * Math.Pow((x), 4) + eq.d1 * Math.Pow((x), 3) + eq.d2 * Math.Pow((x), 2) + eq.d3 * Math.Pow((x), 1) + eq.d4);
 }