private void button1_Click(object sender, EventArgs e) { //ShortArrayChromosome[] individos = new ShortArrayChromosome[nPopulacao]; //for (int i = 0; i < individos.Length; i++) //{ // individos[i] = new ShortArrayChromosome(nRainhas, nRainhas); // individos[i].Generate(); // Console.WriteLine(i + " : " + individos[i].ToString()); //} configuraAlgoritimo(); int selecao = selecaoBox.SelectedIndex; ISelectionMethod metodoDeSelecao = (selecao == 0) ? (ISelectionMethod) new RouletteWheelSelection() : (selecao == 1) ? (ISelectionMethod) new EliteSelection() : (ISelectionMethod) new RankSelection(); AvaliadorDeRainhas avaliador = new AvaliadorDeRainhas(); Population populacao = new Population(nPopulacao, new ShortArrayChromosome(nRainhas, nRainhas - 1), avaliador, metodoDeSelecao); populacao.CrossoverRate = crossoverRate; populacao.MutationRate = mutationRate; //populacao.AutoShuffling = true; int iteracao = 0; int pararEm = nParada; while (iteracao < nGeracoes) { //populacao.Shuffle(); //populacao.Selection(); //populacao.Crossover(); //populacao.Mutate(); populacao.RunEpoch(); //MessageBox.Show("iteração: " + iteracao + "\n Avaliacao Media: " + populacao.FitnessAvg + "\n Melhor individo: " + populacao.BestChromosome.ToString()); if (nParada > 0 && iteracao == pararEm) { atualizaDadosPara(iteracao, populacao); MessageBox.Show("Visualização\nGeração: " + iteracao + "\n OK para Continuar"); pararEm += nParada; } if (populacao.BestChromosome.Fitness == nRainhas) { break; } iteracao++; } //constroiTabuleiroNoConsole((ShortArrayChromosome)populacao.BestChromosome); atualizaDadosPara(iteracao, populacao); }
private void button1_Click(object sender, EventArgs e) { //ShortArrayChromosome[] individos = new ShortArrayChromosome[nPopulacao]; //for (int i = 0; i < individos.Length; i++) //{ // individos[i] = new ShortArrayChromosome(nRainhas, nRainhas); // individos[i].Generate(); // Console.WriteLine(i + " : " + individos[i].ToString()); //} configuraAlgoritimo(); int selecao = selecaoBox.SelectedIndex; ISelectionMethod metodoDeSelecao = (selecao == 0) ? (ISelectionMethod)new RouletteWheelSelection() : (selecao == 1) ? (ISelectionMethod)new EliteSelection() : (ISelectionMethod)new RankSelection(); AvaliadorDeRainhas avaliador = new AvaliadorDeRainhas(); Population populacao = new Population(nPopulacao, new ShortArrayChromosome(nRainhas, nRainhas - 1), avaliador, metodoDeSelecao); populacao.CrossoverRate = crossoverRate; populacao.MutationRate = mutationRate; //populacao.AutoShuffling = true; int iteracao = 0; int pararEm = nParada; while (iteracao < nGeracoes) { //populacao.Shuffle(); //populacao.Selection(); //populacao.Crossover(); //populacao.Mutate(); populacao.RunEpoch(); //MessageBox.Show("iteração: " + iteracao + "\n Avaliacao Media: " + populacao.FitnessAvg + "\n Melhor individo: " + populacao.BestChromosome.ToString()); if (nParada > 0 && iteracao == pararEm) { atualizaDadosPara(iteracao, populacao); MessageBox.Show("Visualização\nGeração: " + iteracao+"\n OK para Continuar"); pararEm += nParada; } if (populacao.BestChromosome.Fitness == nRainhas) break; iteracao++; } //constroiTabuleiroNoConsole((ShortArrayChromosome)populacao.BestChromosome); atualizaDadosPara(iteracao,populacao); }