• Nenhum resultado encontrado

2.5 TRABALHOS SIMILARES

2.5.3 Breakout Local Search (BLS)

2.5.2.3 Algoritmo

O processo de perturbação é realizado a partir de uma rotina 𝑓𝑜𝑟𝑐𝑒(𝑘) e consiste em inserir sequencialmente 𝑘 vértices na solução e remover os vértices vizinhos, conforme necessário. Na maioria das iterações apenas um vértice será inserido, ou seja, 𝑘 = 1, porém para uma pequena probabilidade (1/(2 ∗ |𝑆|)), 𝑘 = 𝑖 + 1, sendo proporcional a 1/2𝑖 para 𝑖 ≥ 1.

Local Search é o núcleo da heurística ARW, onde se aplica a ideia de 2-improvement, ou seja, a partir de uma solução 𝑆 é necessário substituir 𝑣 ∈ 𝑆 por dois outros vértices 𝑥 𝑒 𝑤 ∉ 𝑆. Os vértices 𝑥 e 𝑤 devem ser 1-tight (possuir um vizinho em 𝑆) e não adjacentes, além disto, 𝑥 e 𝑤 devem ser vizinhos de 𝑣.

Para cada 𝑣 ∈ 𝑆 faz-se o seguinte: (i) 𝑣 é removido temporariamente de 𝑆, gerando assim uma solução 𝑆'; (ii) Se 𝑆′ possuir menos de dois vértices livres não há 2-improvement envolvendo 𝑣, neste caso pula para o próximo vértice 𝑣 ∈ 𝑆; (iii) para cada vizinho 𝑥 de 𝑣 que esteja livre em 𝑆′, 𝑥 é inserido em 𝑆′ criando uma nova solução 𝑆′′; (iv) se houver um vértice 𝑤 livre em 𝑆′′, inserir 𝑤 em 𝑆′′ leva a um 2-improvement, caso contrário 𝑥 é removido restaurando 𝑆′ e o próximo vizinho de 𝑣 é verificado; e (v) caso não seja encontrado 2- improvement, 𝑣 é reinserido na solução 𝑆. De acordo com Andrade, Resende, Werneck (2012), o algoritmo consegue encontrar, se houver um 2-improvement, em tempo polinomial 𝑂(𝑚).

Ao final de cada Local Search é aplicado um critério de aceitação, o qual verifica a qualidade da solução 𝑆’. Caso a solução 𝑆′ seja melhor que a solução 𝑆 (por exemplo, |𝑆′ | ≥

|𝑆|), então 𝑆 ← 𝑆′. Por fim, faz-se necessário definir um critério de parada (fim da execução).

No caso da heurística ARW, o algoritmo se encerra quando um número médio de verificações por aresta atinge um limite predeterminado, esta abordagem permite que o algoritmo execute com maior tempo em instâncias maiores de grafos.

exploração das áreas de busca se dá pela alternância entre perturbações aleatórias ou dirigidas e perturbações fracas ou fortes, de acordo com o estado atual da busca (BENLIC; HAO, 2013).

A heurística BLS foi testada em famílias de referência como DIMACS e BHOSLIB e apresentou excelente desempenho em comparação com outras heurísticas. A avaliação da mesma considerou os seguintes critérios: (i) a melhor solução ao longo de 𝑛 execuções; (ii) a solução média ao longo de 𝑛 execuções; e (iii) o número de instâncias para as quais se encontrou as melhores soluções possíveis (BENLIC; HAO, 2013).

A seguir, são apresentados os resultados para as famílias DIMACS e BHOSLIB ao longo de 100 execuções. Para as famílias DIMACS (Figura 17) e BHOSLIB (Figura 18) é apresentada a melhor solução conhecida (BR), o melhor resultado obtido seguido de médio e pior resultado entre parênteses (Cliquesize) e o tempo em segundos (CPU(s)). A análise dos quadros permite afirmar que a heurística BLS alcança a melhor solução para praticamente todas as instâncias em tempo polinomial hábil.

Figura 17. Resultados para a família DIMACS – BLS.

Fonte: Benlic, Hao (2013).

Figura 18. Resultados para família BHOSLIB – BLS.

Fonte: Benlic, Hao (2013).

2.5.3.1 Especificação

Breakout Local Search é uma abordagem heurística, a qual herda qualidades de duas heurísticas conhecidas, sendo elas: (i) Iterated Local Search; e (ii) Tabu Search. A heurística BLS se utiliza, assim como a ARW, de buscas locais e de perturbações para diversificar a busca.

No entanto, BLS se diferencia por apresentar dois tipos de perturbação, sendo estes acionados de acordo com o estado da busca.

Além disto, a heurística BLS sempre aceita o resultado da busca como ponto de partida para a próxima iteração, eliminando o componente de aceitação característica de uma Iterated Local Search. A perturbação direta utilizada na heurística BLS se baseia em listas tabu (Tabu Lists), as quais são utilizadas na heurística Tabu Search.

Basicamente, a abordagem BLS se move entre as áreas de atração formadas por soluções ótimas locais, utilizando-se de saltos diretos ou indiretos, grandes ou pequenos de acordo com o estado da busca. A heurística começa de uma solução inicial, na qual é aplicada a busca local a fim de se obter uma solução ótima local. Cada iteração percorre toda a vizinhança, selecionando a melhor solução vizinha para substituir a solução atual. Caso não haja melhor solução, a heurística busca pular para uma nova área de soluções. O algoritmo base para a heurística pode ser visualizado na Figura 19.

Figura 19. Algoritmo base heurística BLS.

Fonte: Benlic, Hao (2013).

2.5.3.1 Algoritmo

O algoritmo da heurística BLS se inicia a partir de uma solução inicial, onde um vértice 𝑣 ∈ 𝑉 é escolhido aleatoriamente e adicionado à solução 𝑆. Enquanto houver vértice 𝑣 ∈ 𝑉 | 𝑣 ∉ 𝑆 de modo que ∀𝑠 ∈ 𝑆, {𝑣, 𝑠} ∈ 𝐸, ou seja, vértices em 𝑉 que sejam adjacentes a todos os vértices em 𝑆, 𝑣 é adicionado em 𝑆.

A heurística BLS emprega quatro movimentações, as quais objetivam gerar uma nova solução a partir da solução atual, através de: (i) adição de 𝑣 ∈ 𝑉 | 𝑣 ∉ 𝑆 em 𝑆; (ii) troca de vértices 𝑣 e 𝑢, de modo que 𝑢 ∈ 𝑆 𝑒 𝑣 ∈ 𝑉 | 𝑣 ∉ 𝑆; e (iii) remoção de vértices 𝑣 ∈ 𝑉 de 𝑆.

Para possibilitar a definição destas movimentações, são utilizados três conjuntos, sendo 𝑃𝐴, 𝑂𝑀 e 𝑂𝐶.

𝑃𝐴: é o conjunto de vértices não pertencentes à solução 𝑆 e que são adjacentes a todos os vértices de 𝑆;

𝑂𝑀: é o conjunto de pares de vértices {𝑣, 𝑢}, de modo que 𝑣 não pertence a 𝑆 e que são adjacentes a todos os vértices de 𝑆, exceto a 𝑢 ∈ 𝑆;

𝑂𝐶: é o conjunto de vértices não pertencentes a 𝑆.

O processo de perturbação das soluções é adaptativo e importante para a heurística BLS, tentando se deslocar para diferentes áreas, de forma buscando melhores soluções. Este processo se dá por aplicar perturbações de diferentes intensidades, diretas ou aleatórias de acordo com o estado da busca.

A partir destas perturbações adaptativas, a ideia é inicialmente explorar uma região e movimentar-se apenas caso a solução ótima local estar se estagnando. Em sua maioria são aplicadas perturbações fracas (por uma pequena quantidade de movimentos 𝐿), caso não seja suficientemente forte para mudar de área, 𝐿 é incrementada e uma nova perturbação é aplicada.

Esta perturbação forte é aplicada apenas caso não seja encontrada melhoria na qualidade da solução em 𝑇 visitas.

Além da intensidade das perturbações, a heurística BLS emprega o uso de perturbações direcionadas ou aleatórias para guiar a busca para novas áreas no espaço de busca. Perturbações direcionadas são baseadas em listas tabu. As perturbações aleatórias são significativamente mais fortes, sendo que seu grau de perturbação pode ser ajustado ao se modificar o parâmetro 𝛼 (0 < 𝛼 < 1), sendo que quanto mais próximo de 0, maior a força da perturbação. O pseudocódigo deste mecanismo de perturbações pode ser visualizado na Figura 20.

Figura 20. Mecanismo de Perturbação (Esquerda) e Operador de Perturbação (Direita).

Fonte: Benlic, Hao (2013).

Documentos relacionados