• Nenhum resultado encontrado

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.

Documentos relacionados