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; }
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(); } }
private void btnGerar_Click(object sender, EventArgs e) { Individuo ind = new Individuo(); txtIndividuo.Text = ind.PrintIndividuo(); Populacao pop = new Populacao(); txtPopulacao.Text = pop.PrintPop(); }
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(); }
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); }
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(); }
/// <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); }
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(); }
private void btnIterar_Click(object sender, EventArgs e) { pop = ag.ExecutaAG(pop); txtPop.Text = pop.PrintPop(); lblMedia.Text = pop.GetMediaPopulacao().ToString(); }
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; }
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; }
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; }