• Nenhum resultado encontrado

O algoritmo de branch-and-bound foi descrito em detalhes na se¸c˜ao 4.1. Durante o processo de busca no espa¸co de solu¸c˜oes do problema, um algoritmo de branch-and-

5.4. ALGORITMO DE BRANCH-AND-BOUND PARA TGP 91 bound produz um conjunto de subproblemas a partir do problema original atrav´es de sucessivas ramifica¸c˜oes (branching). Esse conjunto pode ser visto como uma ´arvore de busca na qual um subproblema ´e denominado filho de um outro subproblema (por sua vez, denominado pai) caso o primeiro tenha sido gerado a partir da ramifica¸c˜ao (ou separa¸c˜ao) do segundo.

Al´em disso, na ´arvore de busca, distinguem-se trˆes tipos b´asicos de n´os: inicial, intermedi´arios e terminais (ou finais). O tratamento de cada um desses tipos ´e geralmente diferenciado e ´e detalhado em seguida.

5.4.1

N´o Inicial

Corresponde ao problema original. Determina-se uma solu¸c˜ao inicial (limite supe- rior) por interm´edio de uma heur´ıstica. O m´etodo de subgradiente ´e aplicado con- forme se¸c˜ao anterior. Se ocorrer a condi¸c˜ao de parada P2 ou P5, ent˜ao a solu¸c˜ao ´otima para o problema foi encontrada. Caso ocorra P3 ou P4, ent˜ao deve-se passar a separa¸c˜ao (branching) do problema (n´o) em dois outros. Neste caso, pode-se ainda tentar a aplica¸c˜ao do m´etodo de subgradiente para um n´umero fixo de itera¸c˜oes e um valor fixo para σ.

O processo de separa¸c˜ao (branching) consiste em dividir um problema, ou n´o, em um conjunto de subproblemas, ou n´os, de tal forma que a uni˜ao dos conjuntos de solu¸c˜oes vi´aveis dos subproblemas corresponda ao conjunto de solu¸c˜oes vi´aveis do problema original. Para o caso espec´ıfico, um problema de programa¸c˜ao inteira envolvendo vari´aveis de decis˜ao bin´arias, separa-se um problema em dois outros, fixando para um dado arco ℓ ∈ Aℓ sua vari´avel wℓ em 0 em um subproblema e em

1 em outro. A escolha da vari´avel a ser fixada poder´a seguir v´arios crit´erios, cuja qualidade deve ser testada.

No caso da relaxa¸c˜ao #1 pode se fixar a vari´avel wˆ associada ao arco ˆℓ ∈ Aℓ,

tal que ˆcℓˆ = minℓ∈Aℓ{ˆcℓ}, em que ˆcℓ representa a contribui¸c˜ao do arco ℓ ∈ Aℓ

para a fun¸c˜ao objetivo do primeiro limite inferior, LTGP

1 (π, φ, λ). Analogamente,

para a relaxa¸c˜ao #2 pode se fixar a vari´avel wˆ associada ao arco ˆℓ ∈ Aℓ, tal que

ˆ

cℓˆ= minℓ∈Aℓ{cℓ− ∆λℓ}, em que cℓ− ∆λℓ representa a contribui¸c˜ao do arco ℓ ∈ Aℓ

para a fun¸c˜ao objetivo do segundo limite inferior, LTGP

2 (λ). Esse mesmo crit´erio de

sele¸c˜ao poderia ser adotado para se fixar uma vari´avel no caso da relaxa¸c˜ao #3. J´a para a relaxa¸c˜ao #4, pode se fixar a vari´avel wℓˆassociada ao arco ˆℓ ∈ Aℓ, tal que

ˆ

cℓˆ= minℓ∈Aℓ{˜cℓ}, em que ˜cℓ representa a contribui¸c˜ao do arco ℓ ∈ Aℓ para a fun¸c˜ao

objetivo do quarto limite inferior, LTGP 4 (φ, λ).

5.4.2

N´os Intermedi´arios

Os subproblemas resultantes da separa¸c˜ao de um problema pai, ou n´o pai, represen- tam os n´os intermedi´arios da ´arvore.

A escolha do n´o intermedi´ario a ser explorado pode tamb´em seguir crit´erios diversos, entre eles:

• Explorar primeiro o ´ultimo subproblema gerado. Este crit´erio procura por uma solu¸c˜ao o mais r´apido poss´ıvel, de modo a permitir podar um n´umero maior de n´os.

• Selecionar o n´o com o menor limite inferior, poss´ıvel candidato a uma solu¸c˜ao a baixo custo.

Nestes crit´erios existe um compromisso em reduzir o espa¸co de mem´oria ocu- pada, caminhado pela ´arvore em profundidade, no primeiro caso; enquanto que no segundo procura-se reduzir o tempo computacional, caminhando na ´arvore em lar- gura. Pode-se trabalhar com um ou outro ou, at´e mesmo, os dois intercalados. Na atual implementa¸c˜ao optou-se pelo primeiro. Al´em disso, optou-se por explorar primeiramente o subproblema em que a vari´avel fixada possuia valor igual ao da solu¸c˜ao obtida para ´ultimo limite inferior calculado durante a explora¸c˜ao do n´o pai. Dessa forma, em conformidade com o exposto em [74], espera-se acelerar o processo de obten¸c˜ao de uma solu¸c˜ao vi´avel, visto que tal procedimento tende a manter a mesma dire¸c˜ao (subgradiente) de busca, ao passo que o subproblema se torna mais simples (devido a fixa¸c˜ao de valor das vari´aveis).

O procedimento de retrocesso (backtracking) no caminhamento pela ´arvore acon- tece quando L > ˆLmin, quando o subproblema for invi´avel ou quando o n´o for

terminal.

De forma a se determinar a viabilidade do subproblema utilizou-se a heur´ıstica descrita anteriormente para c´alculo do limite superior (uma vez que ela ´e capaz de produzir solu¸c˜oes de forma bem r´apida). Caso a heur´ıstica tenha sucesso na ob- ten¸c˜ao de uma solu¸c˜ao vi´avel a partir das facilidades dispon´ıveis (isto ´e, utilizando apenas aquelas fixadas abertas e as livres), o subproblema certamente ´e vi´avel e o va- lor da solu¸c˜ao ´otima encontrada at´e o momento pode, eventualmente, ser atualizado (se esse novo limite superior possuir valor menor que o da melhor solu¸c˜ao). Caso a heur´ıstica venha a falhar, utiliza-se um segundo procedimento de sondagem da via- bilidade do subproblema, que consiste na resolu¸c˜ao do problema de fluxo de custo m´ınimo de v´arios produtos em que os arcos (facilidades) fechados s˜ao eliminados. Novamente, se uma solu¸c˜ao vi´avel for obtida ela pode ser utilizada na atualiza¸c˜ao do valor ´otimo (isto ´e, do melhor limite superior encontrado durante a busca). En- tretanto, se esse procedimento falhar, n˜ao h´a garantias de que o subproblema seja vi´avel ou n˜ao e, portanto, deve se prosseguir na busca.

Sendo assim, essa estrat´egia para verifica¸c˜ao da viabilidade do subproblema n˜ao ´e capaz de determinar se o mesmo ´e invi´avel, pois para tanto seria necess´ario se resolver um problema tanto dif´ıcil quanto o problema original. Contudo, ao produzir novos limites superiores e, at´e mesmo, novas solu¸c˜oes globais para o problema, ela resulta em uma redu¸c˜ao do espa¸co de busca, tendo em vista que muitos subproblemas ser˜ao abandonados (fathomed nodes), na medida que se verificar que seus limites inferiores superam o valor da melhor solu¸c˜ao obtida at´e um dado momento.

Escolhido o n´o e verificada sua viabilidade, a sua explora¸c˜ao consiste em aplicar o m´etodo de subgradiente sob condi¸c˜oes especiais. Parte-se do conjunto de multipli- cadores correspondentes ao maior limite inferior do n´o pai. O n´umero de itera¸c˜oes m´aximo ´e fixado em 10 e valor de σ ´e fixado inicialmente como 0,5 (e dividido por 2 se ocorrem duas intera¸c˜oes consecutivas sem que haja aumento do valor do me- lhor limite inferior). A cada itera¸c˜ao a busca por uma solu¸c˜ao vi´avel ´e realizada utilizando a heur´ıstica primal baseada no c´alculo de caminhos m´ınimos.

5.5. HEUR´ISTICA LAGRANGEANA PARA TGP 93

5.4.3

N´o Terminal

Um n´o terminal ´e aquele em que todas as vari´aveis de decis˜ao possuem valores fixados em zero ou um. Neste caso, ap´os se verificar que o conjunto de vari´aveis de decis˜ao atende as restri¸c˜oes (3.10c), basta obter a solu¸c˜ao para um problema de fluxo de custo m´ınimo de v´arios produtos e retomar a busca a partir do pr´oximo n´o (subproblema). Em verdade, ´e necess´ario apenas se verificar a viabilidade do problema de fluxo de custo m´ınimo de v´arios produtos, pois como os custos est˜ao associados apenas as vari´aveis de decis˜ao ´e poss´ıvel se calcular o valor da solu¸c˜ao associada a um n´o terminal sem resolver o problema de fluxo de custo m´ınimo de v´arios produtos completamente.