Beispiel #1
0
        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();
                }
            }
        }