Ejemplo n.º 1
0
        public void ProximaGeracao()
        {
            Populacao novaPopulacao = new Populacao(this.size, this.random, this.individuo, this.elitismo, false);

            avaliarIndividuos();
            individuos.Sort(this.individuo.comparar);

            novaPopulacao.individuos.Clear();

            for (int i = 0; i < individuos.Count; i++)
            {
                if (i < elitismo)
                {
                    novaPopulacao.individuos.Add(individuos[i]);
                }
                else
                {
                    Individuo ascendente1 = escolherAscendente();
                    Individuo ascendente2 = escolherAscendente();

                    Individuo child = ascendente1.reproductionFunction(ascendente2);

                    novaPopulacao.individuos.Add(child);
                }
            }

            this.geracao++;
            this.individuos = novaPopulacao.individuos;
        }
Ejemplo n.º 2
0
 private void button1_Click(object sender, EventArgs e)
 {
     for (int i = 0; i < 500; i++)
     {
         pop          = ag.executaAG(pop);
         txtPop.Text  = pop.printPop();
         lbMedia.Text = pop.getMediaPopulacao().ToString();
     }
 }
Ejemplo n.º 3
0
        private void btnGerar_Click(object sender, EventArgs e)
        {
            Individuo ind = new Individuo();

            txtIndividuo.Text = ind.PrintIndividuo();

            Populacao pop = new Populacao();

            txtPopulacao.Text = pop.PrintPop();
        }
Ejemplo n.º 4
0
        private void button1_Click(object sender, EventArgs e)
        {
            //Gera o individuo e printa em txtIndividuo
            Individuo ind = new Individuo();

            txtIndividuo.Text = ind.PrintIndividuo();

            //Catálogo
            //Monstar print de cabeçalho para apresentação dos resultados

            Populacao pop = new Populacao();

            txtPopulacao.Text = pop.printPop();
        }
Ejemplo n.º 5
0
        private Individuo GirarRoleta(Populacao populacao)
        {
            double numeroSorteado = Constantes.random.NextDouble() * 100;

            foreach (var individuo in populacao.Individuos)
            {
                if (numeroSorteado >= individuo.FaixaRoleta[0] &&
                    numeroSorteado <= individuo.FaixaRoleta[1])
                {
                    return(individuo);
                }
            }
            return(null);
        }
Ejemplo n.º 6
0
        private void btnCriarPop_Click(object sender, EventArgs e)
        {
            btnIniciarAG.Enabled = true;
            pop = new Populacao();
            populacaoGrafico = new PointPairList();

            for (int j = 0; j < Constants.sizePopulacao; j++)
            {
                populacaoGrafico.Add(pop.getPopulacao()[j].getInt(), pop.getPopulacao()[j].getFitness());
            }

            LineItem inds = panePop.AddStick("Indivuos", populacaoGrafico, Color.Blue);

            zedPopulacao.AxisChange();
            zedPopulacao.Invalidate();
            zedPopulacao.Refresh();
        }
        private void btnCriarPop_Click(object sender, EventArgs e)
        {
            btnIniciarAG.Enabled = true;
            pop = new Populacao();
            populacaoGrafico = new PointPairList();

            for (int j = 0; j < Constants.sizePopulacao; j++)
            {
                //Eixo X é o valor inteiro do Individuo (Bool convertido para decimal
                //Eixo Y é o valor decimal já convertido
                populacaoGrafico.Add(pop.getPopulacao()[j].getInt(), pop.getPopulacao()[j].getFitness());
            }

            LineItem inds = panePop.AddStick("Individuos", populacaoGrafico, Color.Blue);

            zedPopulacao.AxisChange();
            zedPopulacao.Invalidate();
            zedPopulacao.Refresh();
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Inicia o AG
        /// Avaliação da população
        /// Selecionar pais
        /// realizar cruzamento
        /// aplicar mutacao
        /// apagar velhos membros
        /// inserir novos
        /// re-avaliar a população
        /// </summary>
        /// <param name="populacao"></param>
        /// <returns></returns>
        public Populacao ExecutaAG(Populacao populacao)
        {
            List <Individuo> buffer = new List <Individuo>();

            for (int i = 0; i < Constantes.TamanhoPopulacao / 2; i++)
            {
                Individuo pai = GirarRoleta(populacao);
                Individuo mae = GirarRoleta(populacao);

                Individuo[] filhos = Crossover(pai, mae);
                filhos[0] = Mutacao(filhos[0]);
                filhos[1] = Mutacao(filhos[1]);

                buffer.AddRange(filhos);
            }

            Populacao novaPopulacao = new Populacao(buffer);

            return(novaPopulacao);
        }
Ejemplo n.º 9
0
        private void btnCriarPop_Click(object sender, EventArgs e)
        {
            //Habilita o botão para executar o algoritmo genético
            btnExecutarAG.Enabled = true;

            //Instancia uma nova população
            pop = new Populacao();

            populacaoGrafico = new PointPairList();

            for (int i = 0; i < Constants.sizePopulacao; i++)
            {
                populacaoGrafico.Add(pop.GetPopulacao()[i].GetInt(), pop.GetPopulacao()[i].GetFitness());
            }

            LineItem inds = panePop.AddStick("Indivíduos", populacaoGrafico, Color.Blue);

            zedPopulacao.AxisChange();
            zedPopulacao.Invalidate();
            zedPopulacao.Refresh();
        }
Ejemplo n.º 10
0
 private void btnIterar_Click(object sender, EventArgs e)
 {
     pop           = ag.ExecutaAG(pop);
     txtPop.Text   = pop.PrintPop();
     lblMedia.Text = pop.GetMediaPopulacao().ToString();
 }
Ejemplo n.º 11
0
 private void btnInteirar_Click(object sender, EventArgs e)
 {
     pop           = ag.executaAG(pop);
     textPop.Text  = pop.printPop();
     lblMedia.Text = pop.getMediaPopulacao().ToString();
 }
        private void btnIniciarAG_Click(object sender, EventArgs e)
        {
            //Variaveis enriquecidas com os dados do txt
            double taxaMutacao   = double.Parse(txtTaxaMutacao.Text);
            double taxaCrossover = double.Parse(txtTaxaMutacao.Text);
            int    iteracoes     = int.Parse(txtIteracoes.Text);

            //Criar Algoritmo Genetico
            Class.AlgoritmoGenetico ag = new Class.AlgoritmoGenetico(taxaCrossover, taxaMutacao);

            for (int i = 0; i < iteracoes; i++)
            {
                pop = ag.executaAG(pop);

                mediaPopulacao.Add(i, pop.getMediaPopulacao());

                zedMediaPopulacao.GraphPane.CurveList.Clear(); //Limpar zed toda vez que o for é executado
                zedMediaPopulacao.GraphPane.GraphObjList.Clear();

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

                populacaoGrafico = new PointPairList();

                for (int j = 0; j < Constants.sizePopulacao; j++)
                {
                    populacaoGrafico.Add(pop.getPopulacao()[j].getInt(), pop.getPopulacao()[j].getFitness());
                }

                //Incluindo no gráfico
                LineItem media = paneMedia.AddCurve("Média", mediaPopulacao, Color.Red, SymbolType.None);
                LineItem func  = panePop.AddCurve("Função", curvaGrafico, Color.Red, SymbolType.None);
                LineItem indv  = panePop.AddStick("Individuo", populacaoGrafico, Color.Red);

                //Atualizar Valores
                zedPopulacao.AxisChange();
                zedPopulacao.Invalidate();
                zedPopulacao.Refresh();

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

            //Ordenar novamente a população
            pop.OrdenarPopulacao();

            string pioresInds = string.Empty;

            for (int i = 0; i < 10; i++)
            {
                pioresInds += pop.getPopulacao()[i].PrintIndividuo() + "\n";
            }

            string melhoresInds = string.Empty;

            for (int i = Constants.sizePopulacao - 1; i > (Constants.sizePopulacao - 1) - 10; i--)
            {
                melhoresInds += pop.getPopulacao()[i].PrintIndividuo() + "\n";
            }

            //Imprimindo no Form
            txtMelhoresInd.Text = melhoresInds;
            txtPioresInd.Text   = pioresInds;
        }
Ejemplo n.º 13
0
        private void btnExecutarAG_Click(object sender, EventArgs e)
        {
            //Recupera os elementos das textbox
            double taxaMutacao   = double.Parse(txtTaxaMutacao.Text);
            double taxaCrossover = double.Parse(txtTaxaCrossover.Text);
            int    iteracoes     = int.Parse(txtEvolucoes.Text);

            //Instancia do algoritmo genetico
            AlgoritmoGeneticoImpl ag = new AlgoritmoGeneticoImpl(taxaCrossover, taxaMutacao);

            for (int i = 0; i < iteracoes; i++)
            {
                pop = ag.ExecutaAG(pop);

                //Adicionando os pontos ao gráfico
                mediaPopulacao.Add(i, pop.GetMediaPopulacao());

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

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

                populacaoGrafico = new PointPairList();
                for (int j = 0; j < Constants.sizePopulacao; j++)
                {
                    populacaoGrafico.Add(pop.GetPopulacao()[j].GetInt(), pop.GetPopulacao()[j].GetFitness());
                }

                LineItem media = paneMedia.AddCurve("Média", mediaPopulacao, Color.Red, SymbolType.None);
                LineItem func  = panePop.AddCurve("Função", curvaGrafico, Color.Red, SymbolType.None);
                LineItem indv  = panePop.AddStick("Indivíduo", populacaoGrafico, Color.Blue);

                zedPopulacao.AxisChange();
                zedPopulacao.Invalidate();
                zedPopulacao.Refresh();

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

            //Seleção dos melhores e piores individuos
            pop.OrdenarPopulacao();

            //Piores individuos
            string pioresInd = string.Empty;

            for (int i = 0; i < 10; i++)
            {
                pioresInd += pop.GetPopulacao()[i].PrintIndividuo() + "\n";
            }

            txtPioresIndividuos.Text = pioresInd;

            string melhoresInd = string.Empty;

            for (int i = Constants.sizePopulacao - 1; i > (Constants.sizePopulacao - 1) - 10; i--)
            {
                melhoresInd += pop.GetPopulacao()[i].PrintIndividuo() + "\n";
            }

            txtMelhoresIndividuos.Text = melhoresInd;
        }
Ejemplo n.º 14
0
        private void btnIniciarAG_Click(object sender, EventArgs e)
        {
            double taxaMutacao   = double.Parse(txtTaxaMutacao.Text);
            double taxaCrossover = double.Parse(txtTaxaCrossover.Text);
            int    iteracoes     = int.Parse(txtIteracoes.Text);

            Console.Write(taxaMutacao.ToString() + "\n");
            Console.Write(taxaCrossover.ToString() + "\n");
            Console.Write(iteracoes.ToString() + "\n");

            Class.AlgoritmoGenetico ag = new Class.AlgoritmoGenetico(taxaCrossover, taxaMutacao);

            for (int i = 0; i < iteracoes; i++)
            {
                pop = ag.executaAG(pop);

                mediaPopulacao.Add(i, pop.getMediaPopulacao());

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

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


                populacaoGrafico = new PointPairList();

                for (int j = 0; j < Constants.sizePopulacao; j++)
                {
                    populacaoGrafico.Add(pop.getPopulacao()[j].getInt(), pop.getPopulacao()[j].getFitness());
                }

                LineItem media = paneMedia.AddCurve("Média", mediaPopulacao, Color.Green, SymbolType.None);
                LineItem func  = panePop.AddCurve("Função", curvaGrafico, Color.Red, SymbolType.None);
                LineItem indv  = panePop.AddStick("Indivíduo", populacaoGrafico, Color.Blue);

                zedPopulacao.AxisChange();
                zedPopulacao.Invalidate();
                zedPopulacao.Refresh();

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

            pop.OrdenarPopulacao();

            string pioresInds = string.Empty;

            for (int i = 0; i < 10; i++)
            {
                pioresInds += pop.getPopulacao()[i].PrintIndividuo() + "\n";
            }

            string melhoresInds = string.Empty;

            for (int i = Constants.sizePopulacao - 1; i > (Constants.sizePopulacao - 1) - 10; i--)
            {
                melhoresInds += pop.getPopulacao()[i].PrintIndividuo() + "\n";
            }

            txtMelhoresInd.Text = melhoresInds;
            txtPioresInd.Text   = pioresInds;
        }