static void contabilizaTodosTempos(Cidades matriz) { string nomeArquivo = "Dados do exercício.csv"; StreamWriter escreverArquivo = new StreamWriter(nomeArquivo, true); //se existe, continua a escrever Stopwatch watch; #region Testando Quadratico Quadratico CaixeiroQuadratico = new Quadratico(); //inicia contagem do tempo watch = Stopwatch.StartNew(); Console.Write("\nQuadrático: "); Console.WriteLine(CaixeiroQuadratico.GerarMelhorCaminho(matriz)); watch.Stop(); //finaliza contagem do tempo var tempoQuadratico = watch.ElapsedMilliseconds; //salva tempo #endregion #region Testando Força Bruta int[] permutacao; //vetor com um caminho possíveil Rota[] melhorRota; //contem a melhor rota de viagem int custo = 0, qtdeCidades = matriz.Matriz.GetLength(0); Forca_bruta caixeiro_forca_bruta = new Forca_bruta(); //força bruta permutacao = new int[qtdeCidades]; melhorRota = new Rota[qtdeCidades]; //inicia contagem do tempo watch = Stopwatch.StartNew(); caixeiro_forca_bruta.Escolher_caminhos(ref permutacao, matriz, melhorRota, out custo); Console.Write("\nForça bruta: "); Console.WriteLine(caixeiro_forca_bruta.Imprime_Melhor_Caminho(custo, melhorRota)); watch.Stop(); //finaliza contagem do tempo var tempoForcaBruta = watch.ElapsedMilliseconds; //salva tempo #endregion #region Testando Exponencial permutacao = new int[qtdeCidades]; //tenho quase certeza que pode tirar isso melhorRota = new Rota[qtdeCidades]; //tenho quase certeza que pode tirar isso Exponencial vizinho = new Exponencial(); //inicia contagem do tempo watch = Stopwatch.StartNew(); vizinho.Permutacoes(matriz, matriz.Matriz.GetLength(0), permutacao); watch.Stop(); //finaliza contagem do tempo var tempoExponencial = watch.ElapsedMilliseconds; //salva tempo #endregion Console.Write("\nExponencial: "); Console.WriteLine(vizinho.imprimeResultados(permutacao, matriz)); escreverArquivo.WriteLine("{0};{1};{2};{3}", matriz.Matriz.GetLength(0), tempoForcaBruta, tempoExponencial, tempoQuadratico); Console.WriteLine("---------//-----------------//---------------//---------------//----------------------//----------"); escreverArquivo.Close(); }
public void Escolher_caminhos(ref int[] permutacao, Cidades matrizDistancias, Rota[] melhorRota, out int melhorCusto) { int controle = -1; melhorCusto = int.MaxValue; for (int i = 0; i < melhorRota.Length; i++) { melhorRota[i] = new Rota(); } /* Gera os caminhos possiveis e escolhe o melhor, chamando a funcao recursiva * permuta */ permuta(permutacao, matrizDistancias, melhorRota, ref melhorCusto, controle, 1); }