Métodos Heurísticos
3.4 Metaheurísticas 29 3.3.1Método de Descida3.3.1Método de Descida
3.3.2 Método de Descida Randômico
O Método de Descida Randômico é uma variação do Método de Descida. Este método parte de uma solução inicial qualquer e, a cada iteração, escolhe aleatoria-mente uma estrutura de vizinhança, que é aplicada à solução corrente. Em seguida, analisa um vizinho qualquer, movendo-se somente para o vizinho que representar uma melhora estrita no valor atual da função de avaliação. O método é interrom-pido após um número fixo de iterações sem melhora no valor da melhor solução obtida até então.
A Fig. 3.3 apresenta o pseudocódigo do método de descida randômico.
3.4 Metaheurísticas
Como visto na seção anterior, as heurísticas de construção e de refinamento, em geral, ficam presos em um ótimo local. Aí reside a inovação das metaheurísticas, pois estas têm a capacidade de escapar de ótimos locais. Isso é feito através de estratégias que permitem uma melhor exploração do espaço de busca.
As metaheurísticas são definidas, de acordo com Osman e Laporte (1996), como um processo de geração iterativo, que guia uma heurística subordinada, combinando inteligentemente diferentes conceitos para explorar o espaço de busca.
As metaheurísticas podem ser classificadas, segundo o princípio que utilizam para explorar o espaço de busca, em metaheurísticas baseadas em busca local e metaheurísticas baseadas em busca populacional.
Nas metaheurísticas baseadas em busca local, a exploração é realizada através da aplicação de movimentos à solução corrente, que levam o algoritmo a uma solução
3.4 Metaheurísticas 30 procedimento DescidaRandomica(f(·),N(·), s, iterMax)
1 iter = 0; contador de iterações sem melhora 2 enquanto (iter < iterMax faça
3 iter =iter + 1; 4 selecione aleatóriamente s′ ∈ N(s); 5 Se (f(s′ )< f(s))faça 6 iter = 0; 7 s←s′; 8 fim-se; 9 fim-enquanto; 10 Retorne s; fim DescidaRandomica();
Figura 3.3: pseudocódigo do Método de Descida Randômico.
promissora de sua vizinhança. Pertencem a essa categoria as metaheurísticas Busca Tabu, GRASP, Iterated Local Search e Simulated Annealing(SA).
As metaheurísticas baseadas em busca populacional se inspiram nos mecanismos encontrados na natureza. Consistem em manter um conjunto de boas soluções e combiná-las, de forma a tentar produzir soluções ainda melhores. Se enquadram nessa categoria as metaheurísticas Algoritmos Genéticos (AG), Algoritmos Memé-ticos (AM), Ant Colony System (ACS) e Particle Swarm Optimization (PSO).
Neste trabalho, para solucionar o PCDA, são utilizados métodos evolutivos com-binados com métodos de busca local, resultando, assim, em métodos híbridos. Para resolver o PCEB, é usado um algoritmo baseado em um algoritmo evolutivo multi-objetivo descrito na literatura. Estes métodos serão abordados nas seções a seguir.
3.4.1 Metaheurísticas baseadas em Busca Local
Os algoritmos baseados em busca local descritos a seguir foram utilizados na reso-lução dos problemas de corte tratados nesta dissertação.
3.4.1.1 Iterated Local Search
A metaheurística Iterated Local Search - ILS (Lourenço et al., 2002) é baseada na idéia de que se pode melhorar um procedimento de busca local com a geração de novas soluções de partida, obtidas com a aplicação de perturbações sobre a solução ótima. É um método que não explora o espaço completo das soluções, mas um pequeno subespaço composto por soluções que são ótimos locais, ou ainda, soluções que sofreram uma busca local, mas sem a garantia de otimalidade de determinados procedimentos de otimização.
O algoritmo ILS inicia-se com a geração de uma solução aleatória, que, em se-guida, sofre uma busca local. A seguir, é aplicada uma perturbação nessa solução. Tais perturbações são divididas em níveis. Neste trabalho, o primeiro nível de per-turbação consiste em aplicar uma vez um determinado movimento sobre a solução.
3.4 Metaheurísticas 31 No segundo nível, esse movimento é aplicado duas vezes sobre a solução, e assim sucessivamente. Após a perturbação, a solução passa por uma busca local, sendo avaliada em seguida. Se esta solução for pior que a anterior, o movimento é desfeito e o nível de perturbação cresce. Caso contrário, a solução encontrada passa a ser a solução corrente, e o nível de perturbação atual é aplicado. A solução corrente é a melhor solução encontrada até então. O procedimento pára após um certo número de iterações.
Como se pode perceber, a perturbação deve ser forte o suficiente para garantir a exploração de diferentes soluções e fraca o bastante para que não ocorra um reinício aleatório. A eficiência do ILS é baseada no conjunto de amostragem de ótimos locais e na escolha do método de busca local, das perturbações e do critério de aceitação. O pseudocódigo do método é apresentado na Fig. 3.4.
procedimento ILS(·)
1 s0 ←GeraSoluçãoInicial(); 2 s ←BuscaLocal(s0);
3 enquanto (os critérios de parada não estiverem satisfeitos) faça
4 s′ ← Perturbação(s, historico); 5 s′′ ← BuscaLocal(s′ ); 6 s← CriterioAceitação(s, s′′ ); 7 fim-enquanto; 8 Retorne s; fim ILS();
Figura 3.4: Pseudocódigo da Metaheurística ILS.
Observa-se, no pseudocódigo da Fig. 3.4, que a metaheurística ILS possui cinco pontos importantes para seu funcionamento:
(a) Procedimento de geração da solução inicial: a solução inicial pode ser gerada aleatoriamente ou utilizando-se uma heurística ou metaheurística. O impor-tante é que a solução inicial não deve ser muito cara computacionalmente e deve ser, de preferência, de boa qualidade, ou seja, estar em um subespaço de busca promisor.
(b) Procedimento de busca local: responsável por pesquisar, no subespaço gerado pelas estruturas de vizinhança, uma solução ótima local. Novamente, existe a liberdade de escolher qualquer método de busca local, ou, até mesmo, utilizar uma metaheurística.
(c) Procedimento de perturbação: responsável por gerar uma nova solução, mo-dificando a solução corrente.
(d) Critérios de parada: vários critérios podem ser empregados, como, por exem-plo, número fixo de iterações; parar após a passagem de um certo tempo computacional; parar após um certo número de iterações sem melhora no va-lor da função objetivo; parar quando a melhora no vava-lor da função objetivo se tornar insignificante.
3.4 Algoritmos evolutivos 32
Figura 3.5: Esquema do método ILS, para o caso de funções contínuas.
(e) Critérios de aceitação: o critério de aceitação mais comum é de acordo com o valor da função objetivo. Porém, outros critérios podem ser empregados. A Fig. 3.5 ilustra, através de um esquema hipotético, o comportamento do método.
3.4.1.2 Método Multi-Start
Em 1973, Lin e Kernighan (1973) propuseram a heurísticaMulti-Start, que con-siste em fazer amostragens do espaço de busca, seguidas de refinamento. Um dos métodos mais conhecidos, baseados em Multi-Start, é o Greedy Random Adaptive Search Procedure (GRASP), introduzido por Feo e Resende (1995).
OMulti-Start é uma metaheurística iterativa, composta por duas fases, conforme apresentado na 3.6. Na primeira fase, se constrói uma solução, aleatoriamente ou utilizando uma heurística. Na segunda fase, é aplicada uma busca local sobre a solução obtida na construção. A metaheurística é executada até que um critério de parada seja atingido (número de iterações, tempo de processamento, número de iterações sem melhora (MSmax), etc). O método retorna a melhor das soluções refinadas. O pseudocódigo do método é mostrado na Fig. 3.6.
Os detalhes da implementação de cada um dos métodos, para o problema de corte objeto de interesse, pode ser vista nos Capítulos 4 e 5.