• Nenhum resultado encontrado

Adjacência de Arestas

2.4 Revisão da Literatura para os Problemas da AGMQ e da AGMQA

2.4.11 Cordone e Passeri (2012)

Cordone e Passeri (2012) apresentam três algoritmos para o problema da AGMQ, a saber: uma busca tabu, uma busca em vizinhança variável (VNS, do inglês, Variable Neighbourhood Search) e um branch-and-bound. Tais abordagens são objeto de estudo das Subseções 2.4.11.1, 2.4.11.2 e 2.4.11.3, respectivamente.

O artigo em referência é uma extensão do trabalho de Cordone e Passeri (2008), com a apresentação de um algoritmo novo, a abordagem V NS, assim como a descrição deta- lhada de versões melhoradas dos algoritmos busca tabu e branch-and-bound previamente discutidos.

2.4.11.1 Busca tabu

A busca tabu proposta pelos autores inicia gerando uma árvore geradora aleatória AG. O mecanismo de obtenção de AG consiste em, simplesmente, escolher aleatoriamente n−1 arestas de E que não gerem ciclo.

Em seguida, busca-se melhorar AG com base em uma vizinhança simples: a inserção de uma aresta eg que não está em AG e a remoção de uma aresta er de AG no ciclo

gerado. A busca tabu de Cordone e Passeri (2012) tenta realizar todos os movimentos possíveis a partir da vizinhança especificada.

A visita de soluções já exploradas é evitada utilizando memória. Há duas listas tabu independentes: uma que proíbe a inserção de arestas removidas recentemente e outra que proíbe a remoção de arestas inseridas recentemente. Dessa forma, os autores armazenam, para cada aresta, o valor Itrioe, que representa o número da última iteração em que a

aresta e foi inserida ou removida da árvore. Para avaliar se uma aresta egpode ser inserida

e se uma aresta er pode ser removida, o número da iteração atual do algoritmo tabu deve

ser maior que Itrioeg + tabutenin e que Itrioer+ tabutenout. Caso contrário, o movimento

é tabu. tabutenin e tabutenout representam o número de iterações em que a inserção e a

Cordone e Passeri (2012) empregam uma estratégia de memória de curto prazo para favorecer intensificação ou diversificação de acordo com os resultados recentes. A estratégia consiste em, dentro de limites máximo e mínimo pré-estabelecidos, reduzir os valores de tabu tenure em uma unidade se houve melhoria da função-objetivo na iteração mais recente e incrementar tais valores em uma unidade no caso de piora da função-objetivo.

Vale salientar que o critério de aspiração é empregado. Nesse sentido, caso um movi- mento melhore o melhor resultado já encontrado, tal movimento é realizado mesmo que seja tabu.

O algoritmo executa um total de Itr iterações. A cada Itr/numAG iterações, a árvore AG é reinicializada com uma solução aleatória. numAG é um parâmetro que informa o número de reinicializações de AG.

2.4.11.2 Busca em vizinhança variável (VNS)

O algoritmo V NS requer a definição de uma hierarquia de vizinhanças. A hierarquia definida por Cordone e Passeri (2012) é uma extensão da vizinhança empregada pelos autores nos movimentos do algoritmo tabu em 2.4.11.1. Denominemos tal hierarquia por N Ck, em que k varia de kmin até kmax. Sendo assim, na vizinhança N Ck, k arestas que

estão fora da árvore são inseridas nela e, pois, k arestas da árvore são removidas.

O V NS se inicia com uma solução gerada aleatoriamente denominada AG. k é iniciali- zado com kmin e AG∗, a melhor solução encontrada pelo algoritmo, com AG. A vizinhança

N Ck é aplicada. Ao atingir o ótimo local, verifica-se se AG∗ foi melhorado. Em caso afir-

mativo, AG∗ é atualizado e k = kmin. Senão, k é incrementado em uma unidade.

Sempre que k ultrapassa kmax, k é atualizado com kmin e um procedimento de shaking

(perturbação) extrai uma nova solução para atualizar AG. O procedimento de shaking consiste em gerar uma solução aleatória na vizinhança NCk de AG evitando, se possível,

que as arestas inseridas sejam retiradas e que as arestas removidas sejam recolocadas na árvore. A solução gerada substitui AG.

O algoritmo encerra sua execução quando um número predefinido de iterações de busca local é realizado. Seu retorno é AG∗.

2.4.11.3 Branch-and-bound

O algoritmo branch-and-bound proposto por Cordone e Passeri (2012) é uma reim- plementação do algoritmo proposto por Assad e Xu (1992) para o problema da AGMQ, com algumas modificações.

A principal alteração diz respeito ao procedimento para calcular o limite inferior. De maneira geral, os autores seguem o procedimento descrito em Assad e Xu (1992). Entretanto, há uma relaxação, de modo que a necessidade de gerar um grafo acíclico é ignorada. Sendo assim, o limite inferior gerado é mais fraco (porém mais rápido) que o proposto por Assad e Xu (1992). Os autores também modificaram a condição para término do cálculo do limite inferior. O “Algoritmo por Níveis” é executado até que uma estimativa superior para o melhor limite inferior seja estritamente menor que o limite superior. Neste caso, não há possibilidade de melhorar o limite inferior a ponto de realizar uma poda, então o cálculo do limite inferior é interrompido (CORDONE; PASSERI, 2012).

O limite superior empregado consiste no valor da função-objetivo original da AGMQ aplicado à AGM que soluciona o subproblema relaxado a cada iteração do “Algoritmo por Níveis” (ASSAD; XU, 1992).

A etapa de branching, assim como em Cordone e Passeri (2008), corresponde à fixação de uma aresta dentro ou fora da solução. A regra para escolher a aresta que será exami- nada no branching, entretanto, é diferente. Neste trabalho, os autores seguem a estratégia melhor-limite-primeiro. Nesse sentido, a aresta de branching é a aresta não-fixada mais barata que pertence à solução do problema relaxado, assim como em Assad e Xu (1992). Os autores acrescentam dois testes lógicos que permitem definir se uma determinada aresta deve ser inserida ou removida da solução ótima. Considere o grafo G = (V, E) e uma aresta ek tal que k ∈ L, o conjunto das arestas que ainda podem ser inseridas na

árvore. A primeira regra testa se o subgrafo G′ = (V, e

i|i ∈ L ∨ i ∈ I {ek}) é conexo. Se G′

não for conexo, a aresta eké adicionada a I, o conjunto das arestas que compõem a árvore

geradora. Por outro lado, a segunda regra testa de uma dada aresta ek deve ser incluída

em O, o conjunto das arestas que estão excluídas da árvore. Para tanto, o segundo teste verifica se o subgrafo G′ = (V, e

i|i ∈ I ∪ {ek}) é cíclico. Se G′ for cíclico, então ek deve

ser adicionada ao conjunto O. Cordone e Passeri (2012) também empregam penalidades Lagrangeanas para fixar dentro (ou fora) da solução ótima uma aresta que pertence (ou não) à solução relaxada atual.

de testes propostos pelos autores como também conjuntos de instâncias relatadas na literatura. O algoritmo de busca tabu se mostrou melhor e mais robusto que o VNS. Os resultados do algoritmo exato para as diversas instâncias empregadas também foram descritos.