3.2 Algoritmos
5.2.6 Algoritmo de optimiza¸c˜ ao de novos t´ uneis
O algoritmo de optimiza¸c˜ao de novos t´uneis baseia-se na pesquisa local com m´ultiplas si- tua¸c˜oes iniciais. Inicialmente, ´e determinado o balanceamento da carga da rede para eventuais t´uneis existentes. De seguida, ´e gerada uma ordena¸c˜ao aleat´oria para os novos t´uneis τ ∈ Υ e ´e determinado um percurso de servi¸co para os t´uneis sem protec¸c˜ao e dois percursos para os t´uneis com protec¸c˜ao. A partir desta configura¸c˜ao ´e feita uma pesquisa local e obtida uma solu¸c˜ao incumbente. De seguida, e at´e terminar o tempo definido pelo utilizador, MAXTIME, ´e realizada uma pesquisa local com m´ultiplas situa¸c˜oes iniciais. A representa a solu¸c˜ao actual, M a melhor solu¸c˜ao encontrada numa pesquisa local, INC a solu¸c˜ao incumbente. O tempo decorrido ´e armazenado em tempo. O algoritmo 5.2.6 reflecte a implementa¸c˜ao efectuada.
A pesquisa local para t´uneis novos difere da pesquisa local do algoritmo 4.2.1 pois ´e necess´ario ter em conta que um t´unel pode ter um ou dois percursos. Assim, o algoritmo que realiza a pesquisa local para novos percursos apresenta-se em 5.2.7. (PA, PB) armazenam um par de percursos e PA armazena um percurso.
Algoritmo 5.2.6Optimiza¸c˜ao de novos t´uneis
1: A ← Determina¸c˜ao do balanceamento de carga, algoritmo 3.2.2 2: tempo ← 0
3: Gerar ordem aleat´oria dos ´ındices τ ∈ Υ 4: for each τ ∈ Υ pela ordem anterior do 5: if VALORτ = 1 then
6: (PSτ, PPτ) ← Par de percursos de custo m´ınimo para o t´unel τ , algoritmo 5.2.5 7: Adicionar as reservas do par (PSτ, PPτ) em A
8: else
9: PSτ ← Percurso de servi¸co de custo m´ınimo para o t´unel τ 10: Adicionar as reservas do t´unel τ no percurso PSτ em A 11: end if
12: end for 13: INC ← A
14: Ordenar cargas de INC
15: Executar pesquisa local para t´uneis novos 16: if M ≺ INC then 17: INC ← M 18: end if 19: do 20: for eachτ ∈ Υ do 21: if VALORτ = 1 then
22: Remover as reservas do par (PSτ, PPτ) em A 23: else
24: Remover as reservas do t´unel τ no percurso PSτ em A 25: end if
26: end for
27: Gerar ordem aleat´oria dos ´ındices τ ∈ Υ 28: for eachτ ∈ Υ pela ordem anterior do 29: if VALORτ = 1 then
30: (PSτ, PPτ) ← Par de percursos de custo m´ınimo para o t´unel τ , algoritmo 5.2.5 31: Adicionar as reservas do par (PSτ, PPτ) em A
32: else
33: PSτ ← Percurso de servi¸co de custo m´ınimo para o t´unel τ 34: Adicionar as reservas do t´unel τ no percurso PSτ em A 35: end if
36: end for
37: Executar pesquisa local para t´uneis novos 38: if M ≺ INC then
39: INC ← M
40: end if
41: Actualizar tempo
Algoritmo 5.2.7Pesquisa local para t´uneis novos 1: M ← A 2: Ordenar cargas de M 3: do 4: melhoria ← false 5: for eachτ ∈ Υ do 6: if VALORτ = 1 then 7: (PA, PB) ← (PSτ, PPτ)
8: Remover as reservas do par (PSτ, PPτ) em A
9: (PSτ, PPτ) ← Par de percursos de custo m´ınimo para o t´unel τ , algoritmo 5.2.5 10: Adicionar as reservas do par (PSτ, PPτ) em A
11: else
12: PA ← PSτ
13: Remover as reservas do t´unel τ no percurso PSτ em A 14: PSτ ← Percurso de servi¸co de custo m´ınimo para o t´unel τ 15: Adicionar as reservas do t´unel τ no percurso PSτ em A 16: end if 17: Ordenar cargas de A 18: if A ≺ M then 19: M ← A 20: melhoria ← true 21: end if 22: if VALORτ = 1 then
23: Remover as reservas do par (PSτ, PPτ) em A 24: (PSτ, PPτ) ← (PA, PB)
25: Adicionar as reservas do par (PSτ, PPτ) em A 26: else
27: Remover as reservas do t´unel τ no percurso PSτ em A 28: PSτ ← PA
29: Adicionar as reservas do t´unel τ no percurso PSτ em A 30: end if
31: end for
32: if melhoria = true then
33: A ← M
34: end if
Cap´ıtulo 6
Apresenta¸c˜ao e discuss˜ao dos
resultados computacionais
6.1
Introdu¸c˜ao
Neste cap´ıtulo pretende determinar-se a efic´acia dos algoritmos desenvolvidos em dife- rentes cen´arios de teste. S˜ao apresentados os valores determinados pelo balanceamento de carga inicial da rede para os v´arios cen´arios e comparados com a optimiza¸c˜ao global de todos os percursos de todos os t´uneis. Como numa rede de um operador, alterar todos os t´uneis tem impacto no funcionamento da rede, o operador pode n˜ao querer alterar os percursos de servi¸co dos t´uneis. Ent˜ao, s˜ao apresentados os resultados da optimiza¸c˜ao apenas dos percur- sos de protec¸c˜ao dos t´uneis j´a existentes numa rede. Para o caso em que operador deseja acrescentar t´uneis `a rede, apresentam-se os resultados da optimiza¸c˜ao dos percursos de novos t´uneis a serem configurados na rede. Os valores obtidos s˜ao comparados com os resultados da optimiza¸c˜ao global.
Na rede da figura 2.1 foram considerados v´arios cen´arios. Os cen´arios escolhidos diferem em n´umero e em combina¸c˜oes de t´uneis configurados e de novos t´uneis para configurar.
Foram implementados os seguintes cen´arios: Cen´ario A 22 t´uneis
Cen´ario A1 T´uneis 1 a 22 novos Cen´ario A2 T´uneis 1 a 22 configurados Cen´ario B 32 t´uneis
Cen´ario B1 T´uneis 1 a 32 novos
Cen´ario B2 T´uneis 1 a 22 configurados, 23 a 32 novos Cen´ario B3 T´uneis 1 a 32 configurados
Cen´ario C 42 t´uneis
Cen´ario C1 T´uneis 1 a 42 novos
Cen´ario C2 T´uneis 1 a 22 configurados, 23 a 42 novos Cen´ario C3 T´uneis 1 a 32 configurados, 33 a 42 novos
Cen´ario C4 T´uneis 1 a 42 configurados
Nos trˆes cen´arios, os primeiros 22 t´uneis s˜ao os mesmos, os n´os extremos s˜ao iguais e reserva de recursos em ambos os sentidos ´e igual. Nos cen´arios B e C, os primeiros 32 t´uneis s˜ao tamb´em os mesmos. Todos os t´uneis foram configurados com protec¸c˜ao. Os percursos dos t´uneis j´a configurados foram determinados escolhendo visualmente o par de percursos disjuntos mais curto entre os n´os extremos, ou seja, aquele com o menor n´umero de liga¸c˜oes. No anexo A apresentam-se os 42 t´uneis utilizados na rede de testes.
Para os cen´arios em que todos os t´uneis j´a est˜ao configurados, foi determinado o balan- ceamento da carga e foi optimizada a carga da rede. Nos cen´arios que incluem t´uneis novos, foi executada a tarefa de optimizar novos t´uneis na rede. Al´em destes cen´arios, dos quais se apresentam os resultados e apenas para verifica¸c˜ao do funcionamento dos algoritmos em situa¸c˜oes de impossibilidade de disjun¸c˜ao, foi utilizada uma rede semelhante `a da figura 2.1, mas em que se removeram as liga¸c˜oes 1, 4 e 6. Verificou-se que os algoritmos conseguem determinar percursos nestas situa¸c˜oes.
Todos os resultados apresentados, em que s˜ao optimizados novos t´uneis foram obtidos utilizando o algoritmo de Suurballe para percursos disjunto nos n´os. Como a rede utilizada permite sempre a existˆencia de percursos disjuntos, o algoritmo 5.2.5 encontra sempre um par de percursos disjuntos.