public override void Run() { solucao = geraSolucaoGulosa(tipo, alfaGrasp); if (opt == 3) { int k = 0, k_max = 3; while (k != k_max) { for (var i = 0; i < numIteracoesLocal; i++) { while (pertuba(ref solucao, k)) { ; } } k++; } Iteracoes.Add(avaliar(solucao)); for (var i = 0; i < numIteracoesGuloso; i++) { var novaSolucao = geraSolucaoGulosa(tipo, alfaGrasp); k = 0; while (k != k_max) { for (var j = 0; j < numIteracoesLocal; j++) { while (pertuba(ref novaSolucao, k)) { ; } } k++; } if ((avaliar(novaSolucao).Item1 > avaliar(solucao).Item1&& !minimizar) || (avaliar(novaSolucao).Item1 < avaliar(solucao).Item1&& minimizar)) { solucao = novaSolucao; } Iteracoes.Add(avaliar(novaSolucao)); } if (!minimizar) { Iteracoes = Iteracoes.OrderBy(p => p.Item1).ToList(); } else { Iteracoes = Iteracoes.OrderBy(p => - p.Item1).ToList(); } } else { int k = 0; for (var i = 0; i < numIteracoesLocal; i++) { while (pertuba(ref solucao, k)) { ; } } Iteracoes.Add(avaliar(solucao)); for (var i = 0; i < numIteracoesGuloso; i++) { var novaSolucao = geraSolucaoGulosa(tipo, alfaGrasp); for (var j = 0; j < numIteracoesLocal; j++) { while (pertuba(ref novaSolucao, k)) { ; } } if ((avaliar(novaSolucao).Item1 > avaliar(solucao).Item1&& !minimizar) || (avaliar(novaSolucao).Item1 < avaliar(solucao).Item1&& minimizar)) { solucao = novaSolucao; } Iteracoes.Add(avaliar(novaSolucao)); } if (!minimizar) { Iteracoes = Iteracoes.OrderBy(p => p.Item1).ToList(); } else { Iteracoes = Iteracoes.OrderBy(p => - p.Item1).ToList(); } } }