コード例 #1
0
        public void BuildExpressionTree_Should_Create_ExpressionTree_From_PrefixExpression(List <int> minterms)
        {
            GC.Collect();
            Stopwatch s2 = Stopwatch.StartNew();
            var       externalLibraryResult = QuineMcCluskeySolver.QMC_Solve(minterms, new int[] { });

            s2.Stop();

            TruthTable table = TruthTableHelpers.GenerateTruthTable(minterms);
            Stopwatch  s1    = Stopwatch.StartNew();
            var        customLibraryResult = logic.ExpressionService.Common.QMC.QuineMcCluskey.SimplifyTable(table.Value);

            s1.Stop();

            TestContext.Out.WriteLine(s1.ElapsedTicks);
            TestContext.Out.WriteLine(s2.ElapsedTicks);

            var helperSet = new HashSet <string>();

            foreach (var pr in customLibraryResult)
            {
                helperSet.Add(pr.RowData);
            }

            foreach (var item in externalLibraryResult)
            {
                helperSet.Should().Contain(item.ToString());
            }
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: kennynuylla/trabmodcomp
        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();
        }
コード例 #3
0
ファイル: Program.cs プロジェクト: MintPlayer/QuineMcCluskey
        static void Main(string[] args)
        {
            var random = new Random();
            var list   = new List <int>();

            for (int i = 0; i < 16; i++)
            {
                var num = random.Next(16);
                if (!list.Contains(num))
                {
                    list.Add(num);
                }
            }

            while (true)
            {
                var loops = QuineMcCluskeySolver.QMC_Solve(list, new int[] { });

                Console.ReadKey();
            }
        }