Exemplo n.º 1
0
        private void plotLines(Population population, Color color)
        {
            Pen penBestIndividual = new Pen(color, 4);
            int genA, genB;

            Individual best = population.GetBestIndividual();

            for (int i = 0; i < ConfigurationGA.sizeChromossome; i++)
            {
                if (i < ConfigurationGA.sizeChromossome - 1)
                {
                    genA = best.GetGene(i);
                    genB = best.GetGene(i + 1);
                }
                else
                {
                    genA = best.GetGene(i);
                    genB = best.GetGene(0);
                }

                int[] vetA = TablePoints.getCoordinates(genA);
                int[] vetB = TablePoints.getCoordinates(genB);

                g.DrawLine(penBestIndividual, vetA[0], vetA[1], vetB[0], vetB[1]);
            }
        }
Exemplo n.º 2
0
        private void BtnExecute_Click(object sender, EventArgs e)
        {
            btnPopulationGenerate.Enabled = false;

            ConfigurationGA.rateCrossOver         = float.Parse(txtCrossOverTax.Text);
            ConfigurationGA.rateMutation          = float.Parse(txtMutationTax.Text);
            ConfigurationGA.tournamentCompetitors = int.Parse(txtFight.Text);
            evolucoes += int.Parse(txtEvolution.Text);

            if (rbNewInd.Checked)
            {
                ConfigurationGA.mutationType = Mutation.NewIndividual;
            }
            else if (rbPopulation.Checked)
            {
                ConfigurationGA.mutationType = Mutation.InPopulation;
            }

            if (chElitsm.Checked)
            {
                ConfigurationGA.elitism     = true;
                ConfigurationGA.sizeElitism = int.Parse(txtQtyElitsm.Text);
            }
            else
            {
                ConfigurationGA.elitism = false;
            }

            GeneticAlgorithm ag = new GeneticAlgorithm();

            for (i = itemp; i < evolucoes; i++)
            {
                itemp++;
                lbEvolucoes.Text = i.ToString();
                lbEvolucoes.Refresh();

                pop = ag.ExecuteGA(pop);

                zedMedia.GraphPane.CurveList.Clear();
                zedMedia.GraphPane.GraphObjList.Clear();

                double mediaPop    = pop.GetAveragePopulation();
                double bestFitness = pop.GetBestIndividual().GetFitness();

                mediaPopulation.Add(i, mediaPop);
                lbDistance.Text = bestFitness.ToString();
                lbDistance.Refresh();

                LineItem media = paneMedia.AddCurve("Média", mediaPopulation, Color.Red, SymbolType.None);

                if (i % 6 == 0 && bestFitness < bestAux)
                {
                    bestAux = bestFitness;
                    g.Clear(Color.White);
                    plotLines(pop, Color.Blue);
                    plotPoints();
                }

                zedMedia.AxisChange();
                zedMedia.Invalidate();
                zedMedia.Refresh();
            }

            g.Clear(Color.White);
            plotLines(pop, Color.Blue);
            plotPoints();
        }