Ejemplo n.º 1
0
        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();
        }