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