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]); } }
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(); }