Beispiel #1
0
        private void GA_Simple_Button_Click(object sender, RoutedEventArgs e)
        {
            GSA.GA.Algorithm.UniformRate    = Double.Parse(CrossOverProbTextBox.Text);
            GSA.GA.Algorithm.MutationRate   = Double.Parse(MutationProbTextBox.Text);
            GSA.GA.Algorithm.TournamentSize = Int32.Parse(TournamentSizeTextBox.Text);
            GSA.GA.Algorithm.Elitism        = ElitismCheckBox.IsChecked.Value;
            GSA.GA.Algorithm.Rnd            = new Random();

            LogTextBox log = new GSA.LogTextBox(LogTextBox);

            String solutionSelected = SolutionTextBox.Text;

            if (validateSol(solutionSelected))
            {
                GSA.GA.FitnessCalc.setSolution(solutionSelected);
                GSA.GA.Population myPop = new GSA.GA.Population(50, true);

                int generationCount = 0;
                while (myPop.getFittest().getFitness() < GSA.GA.FitnessCalc.getMaxFitness())
                {
                    generationCount++;
                    log.Write("Generation: " + generationCount + " Fittest: " + myPop.getFittest().getFitness(), Brushes.Yellow);
                    myPop = GSA.GA.Algorithm.evolvePopulation(myPop);
                }
                log.Write("Solution found!", Brushes.GreenYellow);
                log.Write("Generation: " + generationCount);
                log.Write("Genes:");
                log.Write(myPop.getFittest().ToString());
            }
            else
            {
                log.Write("La solución no es válida, recuerda: 64 bits de 0 y 1", Brushes.Red);
            }
            scrollEl.ScrollToBottom();
        }
Beispiel #2
0
        private void performAlgorithm(int maxOrMin)
        {
            GSA.GAMax.Algorithm.UniformRate  = Double.Parse(MaxCrossOverProbTextBox.Text);
            GSA.GAMax.Algorithm.MutationRate = Double.Parse(MaxMutationProbTextBox.Text);
            GSA.GAMax.Algorithm.Elitism      = MaxElitismCheckBox.IsChecked.Value;
            GSA.GAMax.Algorithm.DieFactor    = DieFactorCheckBox.IsChecked.Value;
            GSA.GAMax.Algorithm.Rnd          = new Random();
            GSA.GAMax.Individual.Rnd         = new Random();
            GSA.GAMax.Algorithm.bestSolution = null;

            LogTextBox log = new GSA.LogTextBox(LogTextBox);

            log.Write("Constants setted", Brushes.BlueViolet);
            GSA.GAMax.Individual.setDefaultGeneLength(int.Parse(BinaryLengthTextBox.Text));
            GSA.GAMax.Population maxPop = new GSA.GAMax.Population(int.Parse(PopulationNumberTextBox.Text), true);
            GSA.GAMax.FitnessCalc._op = (GSA.GAMax.Operation)maxOrMin;
            if (GSA.GAMax.FitnessCalc.setFunctionToOperate(FormulaTextBox.Text))
            {
                log.Write(String.Format("Function setted: {0}", GSA.GAMax.FitnessCalc._exp.ParsedExpression.ToString()), Brushes.Azure);
                //setear población
                log.Write("Initial population, size: " + maxPop.size().ToString(), Brushes.Turquoise);
                for (int i = 0; i < maxPop.size(); i++)
                {
                    log.Write(maxPop.getIndividual(i).ToString(), Brushes.Wheat);
                }
            }
            else
            {
                log.Write(String.Format("Your function has errors: {0}", GSA.GAMax.FitnessCalc._exp.Error), Brushes.PaleVioletRed);
                log.Write("The function must be correct and contains an 'x' between []. Example 'Pow([x], 3) + 5*[x] - 2 / ([x]+2)", Brushes.PaleVioletRed);
            }

            int generationCount = 0;
            int MaxGeneration   = int.Parse(MaxIterationsTextBox.Text);

            while (generationCount < MaxGeneration)
            {
                generationCount++;
                //log.Write("Generation: " + generationCount + " Fittest: " + myPop.getFittest().getFitness(), Brushes.Yellow);
                GSA.GAMax.FitnessCalc.CurrentPopulation = maxPop;
                maxPop = GSA.GAMax.Algorithm.evolvePopulation(maxPop);
            }
            log.Write("Best Solution found!", Brushes.GreenYellow);
            log.Write("Generation: " + generationCount);
            log.Write("Genes:");
            GSA.GAMax.Individual bestSolutionFound = GSA.GAMax.FitnessCalc.getFittest();
            if (!GSA.GAMax.Algorithm.betterFitness(GSA.GAMax.Algorithm.bestSolution, bestSolutionFound))
            {
                bestSolutionFound = GSA.GAMax.Algorithm.bestSolution;
            }
            log.Write(bestSolutionFound.ToString());
        }
Beispiel #3
0
        private void GA_Simple_Button_Click(object sender, RoutedEventArgs e)
        {
            GSA.GA.Algorithm.UniformRate = Double.Parse(CrossOverProbTextBox.Text);
            GSA.GA.Algorithm.MutationRate = Double.Parse(MutationProbTextBox.Text);
            GSA.GA.Algorithm.TournamentSize = Int32.Parse(TournamentSizeTextBox.Text);
            GSA.GA.Algorithm.Elitism = ElitismCheckBox.IsChecked.Value;
            GSA.GA.Algorithm.Rnd = new Random();

            LogTextBox log = new GSA.LogTextBox(LogTextBox);

            String solutionSelected = SolutionTextBox.Text;
                if (validateSol(solutionSelected)) {
                GSA.GA.FitnessCalc.setSolution(solutionSelected);
                GSA.GA.Population myPop = new GSA.GA.Population(50, true);

                int generationCount = 0;
                while (myPop.getFittest().getFitness() < GSA.GA.FitnessCalc.getMaxFitness()) {
                    generationCount++;
                    log.Write("Generation: " + generationCount + " Fittest: " + myPop.getFittest().getFitness(), Brushes.Yellow);
                    myPop = GSA.GA.Algorithm.evolvePopulation(myPop);
                }
                log.Write("Solution found!", Brushes.GreenYellow);
                log.Write("Generation: " + generationCount);
                log.Write("Genes:");
                log.Write(myPop.getFittest().ToString());
            } else {
                log.Write("La solución no es válida, recuerda: 64 bits de 0 y 1", Brushes.Red);
            }
            scrollEl.ScrollToBottom();
        }
Beispiel #4
0
        private void performAlgorithm(int maxOrMin)
        {
            GSA.GAMax.Algorithm.UniformRate = Double.Parse(MaxCrossOverProbTextBox.Text);
            GSA.GAMax.Algorithm.MutationRate = Double.Parse(MaxMutationProbTextBox.Text);
            GSA.GAMax.Algorithm.Elitism = MaxElitismCheckBox.IsChecked.Value;
            GSA.GAMax.Algorithm.DieFactor = DieFactorCheckBox.IsChecked.Value;
            GSA.GAMax.Algorithm.Rnd = new Random();
            GSA.GAMax.Individual.Rnd = new Random();
            GSA.GAMax.Algorithm.bestSolution = null;

            LogTextBox log = new GSA.LogTextBox(LogTextBox);

            log.Write("Constants setted", Brushes.BlueViolet);
            GSA.GAMax.Individual.setDefaultGeneLength(int.Parse(BinaryLengthTextBox.Text));
            GSA.GAMax.Population maxPop = new GSA.GAMax.Population(int.Parse(PopulationNumberTextBox.Text), true);
            GSA.GAMax.FitnessCalc._op = (GSA.GAMax.Operation)maxOrMin;
            if (GSA.GAMax.FitnessCalc.setFunctionToOperate(FormulaTextBox.Text)) {
                log.Write(String.Format("Function setted: {0}", GSA.GAMax.FitnessCalc._exp.ParsedExpression.ToString()), Brushes.Azure);
                //setear población
                log.Write("Initial population, size: " + maxPop.size().ToString(), Brushes.Turquoise);
                for (int i = 0; i < maxPop.size(); i++) {
                    log.Write(maxPop.getIndividual(i).ToString(), Brushes.Wheat);
                }
            } else {
                log.Write(String.Format("Your function has errors: {0}", GSA.GAMax.FitnessCalc._exp.Error), Brushes.PaleVioletRed);
                log.Write("The function must be correct and contains an 'x' between []. Example 'Pow([x], 3) + 5*[x] - 2 / ([x]+2)", Brushes.PaleVioletRed);
            }

            int generationCount = 0;
            int MaxGeneration = int.Parse(MaxIterationsTextBox.Text);
            while (generationCount < MaxGeneration) {
                generationCount++;
                //log.Write("Generation: " + generationCount + " Fittest: " + myPop.getFittest().getFitness(), Brushes.Yellow);
                GSA.GAMax.FitnessCalc.CurrentPopulation = maxPop;
                maxPop = GSA.GAMax.Algorithm.evolvePopulation(maxPop);

            }
            log.Write("Best Solution found!", Brushes.GreenYellow);
            log.Write("Generation: " + generationCount);
            log.Write("Genes:");
            GSA.GAMax.Individual bestSolutionFound = GSA.GAMax.FitnessCalc.getFittest();
            if (!GSA.GAMax.Algorithm.betterFitness(GSA.GAMax.Algorithm.bestSolution, bestSolutionFound)) {
                bestSolutionFound = GSA.GAMax.Algorithm.bestSolution;
            }
            log.Write(bestSolutionFound.ToString());
        }