static void Main(string[] args) { var gabaritos = GerarGabaritosSomador(quantidadeBitsSomador); // Overflow | MSB | ... | LSB var entradas = Entrada.RetornarEntradas(qtdEntradasCircuito); var custoTotalQuine = 0; var custoTotalAg = 0; foreach (var item in gabaritos) { var quine = new QuineMcCluskeySolver(qtdEntradasCircuito, item); var circuito = quine.Rodar(entradas, caminho, máximoEntradasPorta); custoTotalQuine += circuito.Custo; } var crossover = new CrossoverCircuitoHelper(máximoEntradasPorta, entradas, caminho); var criterioParada = new CriterioParada(100); var taxaLimpeza = new TaxaLimpeza(20); var taxaMutacao = new TaxaConstanteHelper <double>(0.02); var taxaCrossover = new TaxaConstanteHelper <double>(.9); var taxaPopulacao = new TaxaConstanteHelper <int>(100); var taxaInsercao = new TaxaConstanteHelper <double>(0.1); foreach (var item in gabaritos) { var motorGA = new GACircuito(criterioParada, máximoEntradasPorta, qtdEntradasCircuito, caminho, crossover, gabaritos[1], 2, entradas); motorGA.SetarTaxas(taxaMutacao, taxaCrossover, taxaPopulacao, taxaInsercao, taxaLimpeza); motorGA.ProbabilidadeCircuitoMintermoMaxtermo = .1; motorGA.GerarPopulacao(); motorGA.SetarMostrarProgresso(true, 1); motorGA.Rodar(); var campeao = motorGA.RetornarCampeao(); custoTotalAg += campeao.Circuito.Custo; Console.WriteLine(campeao.Circuito.GerarExpressao()); //break; } Console.WriteLine($"Quine: {custoTotalQuine}"); Console.WriteLine($"AG: {custoTotalAg}"); Sair(); }