• Nenhum resultado encontrado

8.2 O Algoritmo Branch-and-Cut Desenvolvido

8.2.1 Modelo Matem´ atico

Dentre os modelos apresentados no cap´ıtulo 4, optamos por utilizar o modelo MAO des-

crito na se¸c˜ao 4.2. A justificativa para esta escolha est´a no fato de que no trabalho de Oliveira [35] foi realizado um estudo poli´edrico mostrando que esta ´e uma formula¸c˜ao forte para o problema. Al´em disso, tamb´em foi desenvolvido um algoritmo branch-and-cut que obteve bons resultados em instˆancias do PASG para uma aplica¸c˜ao em problemas de ro- teamento em circuitos. Estas instˆancias s˜ao constitu´ıdas de grafos planares com pesos nas arestas que respeitam a m´etrica retilinear. Desta forma, esperamos que este algoritmo tamb´em obtenha bons resultados para o PCCM, uma vez que, as instˆancias do PCCM, quando convertidas em instˆancias do PASG, possuem estas mesmas caracter´ısticas.

Para este modelo, ´e preciso implementar a rotina de separa¸c˜ao descrita na se¸c˜ao 4.2. Esta rotina ´e ajustada para ser invocada toda vez que o m´etodo branch-and-bound obt´em uma solu¸c˜ao fracion´aria em um n´o. Quando isso ocorre, a rotina procura por uma ine- qua¸c˜ao violada e, caso a encontre, adiciona-a ao modelo. Caso n˜ao seja encontrada ne- nhuma inequa¸c˜ao violada, o m´etodo de branch-and-bound prossegue a otimiza¸c˜ao na sua forma usual. A rotina de separa¸c˜ao consiste na resolu¸c˜ao de uma sequˆencia de problemas de corte m´ınimo. Por´em, como visto na se¸c˜ao 4.2, tamb´em podemos utilizar a adapta¸c˜ao do algoritmo de Hao e Orlin para o problema de corte irrestrito m´ınimo proposta por Cronholm et al. [13]. Assim como o algoritmo de Hao e Orlin, esta adapta¸c˜ao tamb´em ´e uma modifica¸c˜ao do algoritmo de fluxo m´aximo baseado na id´eia de pr´e-fluxo, proposto

8.2. O Algoritmo Branch-and-Cut Desenvolvido 61

por Goldberg e Tarjan [22]. Portanto, implementamos este algoritmo de fluxo m´aximo e o modificamos da forma como ´e descrita em Hao e Orlin [26] e Cronholm et al. [13]. Com isso, a rotina de separa¸c˜ao em quest˜ao foi desenvolvida fazendo uso deste algoritmo, assim como foi apresentada na se¸c˜ao 4.2. Al´em disso, tamb´em empregamos nesta rotina a estrat´egia denominada Creep Flow apresentada em Koch e Martin [31]. Nesta estrat´egia definimos um valor m´ınimo para as capacidades que atribu´ımos no grafo onde calculamos o corte m´ınimo. Isto ´e feito para que a rotina encontre cortes com uma menor quantidade de arcos, levando a desigualdades mais fortes. Ent˜ao, ao atribuirmos uma capacidade a um arco do grafo, esta dever´a ser escolhida como sendo o m´aximo entre o valor da vari´avel correspondente na solu¸c˜ao fracion´aria e um milion´esimo.

Al´em desta rotina de separa¸c˜ao, tamb´em implementamos outra rotina de separa¸c˜ao considerando as restri¸c˜oes de fluxo apresentadas em Koch e Martin [31]. As restri¸c˜oes nesta referˆencia s˜ao espec´ıficas para o PAS. Elas modelam uma ´arvore de Steiner atrav´es de um conjunto de fluxos de uma unidade que saem do v´ertice terminal considerado como raiz da ´arvore e chegam em cada um dos demais terminais. Para poder utilizar estas restri¸c˜oes no nosso modelo, foi necess´ario adapt´a-las para o PASG. Sendo assim, no nosso caso teremos um conjunto de fluxos de uma unidade que saem do v´ertice raiz e chegam em pelo menos um v´ertice de cada grupo. As restri¸c˜oes para o PASG s˜ao dadas pelas equa¸c˜oes abaixo, considerando as vari´aveis do modelo MAO.

X a∈δ−D({v}) xa≤  1 − yv, 1, ∀ v ∈ R0, ∀ v ∈ V \ R0, (8.4) X a∈δD−(R) xa≥ 1, ∀ R ∈ < \ {R0}, (8.5) X a∈δ−D({v}) xa ≤ X a∈δD+({v}) xa, ∀ v ∈ V \ [ R∈< R, (8.6) X a0∈δ− D({v}) xa0 ≥ xa − yv, xa, ∀ v ∈ R0, a ∈ δD+({v}), ∀ v ∈ V \ R0, a ∈ δ+D({v}). (8.7)

No modelo MAO determinamos qual ser´a o n´o raiz da ´arvore atrav´es das vari´aveis y.

Desta forma, na restri¸c˜ao (8.4) estabelecemos que todos os v´ertices do grafo podem receber no m´aximo uma unidade de fluxo, `a exce¸c˜ao do v´ertice raiz que pode apenas enviar fluxo. A restri¸c˜ao (8.5) determina que uma unidade de fluxo deve chegar a pelo menos um v´ertice de cada grupo que n˜ao ´e raiz. Segundo a restri¸c˜ao (8.6), a quantidade de fluxo que sai de um v´ertice que n˜ao pertecente a nenhum grupo deve ser no m´ınimo a mesma quantidade de fluxo que entra neste v´ertice. Observe que pode sair mais fluxo do que entra no v´ertice. Este desbalanceamento ´e necess´ario para representar as ramifica¸c˜oes da ´

62 Cap´ıtulo 8. Algoritmo Exato

arco ´e no m´aximo a quantidade de fluxo que chega no v´ertice de onde este arco parte, salvo os arcos que partem do v´ertice raiz que podem enviar mais fluxo do que este v´ertice recebe.

Al´em destas restri¸c˜oes, inclu´ımos tamb´em na rotina de separa¸c˜ao a fam´ılia de restri¸c˜oes dada pela equa¸c˜ao abaixo.

xa+ xa0 ≤ 1, ∀ u, v ∈ V, a = (u, v), a0 = (v, u) ∈ A, (8.8)

A finalidade desta restri¸c˜ao ´e impedir que os dois arcos que representam uma mesma aresta do grafo orientado estejam em uma solu¸c˜ao. Observe que a princ´ıpio n˜ao necessi- tamos desta condi¸c˜ao, pois toda instˆancia com pesos positivos j´a a satisfaz. Todavia, a consideramos porque verificamos atrav´es de testes experimentais que ela ajuda a acelerar a execu¸c˜ao do m´etodo de planos de corte.

Apesar de termos considerado as restri¸c˜oes (8.4)-(8.8) para a rotina de separa¸c˜ao, n˜ao utilizamos as restri¸c˜oes (8.5) e (8.6) na rotina. Primeiramente, note que para o PCCM a restri¸c˜ao (8.6) corresponde a um conjunto vazio de inequa¸c˜oes, pois sabemos que as instˆancias do PASG que representam instˆancias do PCCM tˆem todos os v´ertices em G pertencendo a pelo menos um grupo. Tamb´em verificamos experimentalmente que acrescentar a restri¸c˜ao (8.5) deixa a resolu¸c˜ao do modelo relaxado muito lenta e n˜ao melhora a qualidade dos limitantes duais.

Durante o processo de otimiza¸c˜ao existem rotinas implementadas pela biblioteca Callable Library que se encarregam de fazer a manuten¸c˜ao do modelo. Tais rotinas procuram por restri¸c˜oes redundantes ou que j´a n˜ao est˜ao mais justas e as removem do modelo. En- tretanto, quando inserimos no modelo uma nova restri¸c˜ao da fam´ılia dada pela equa¸c˜ao (4.13), marcamo-la para nunca ser removida do modelo. Isso foi feito porque constata- mos experimentalmente que impedir a remo¸c˜ao destas restri¸c˜oes levou o m´etodo a obter melhores resultados.