Trata-se de um passo de pr´e-processamento da instˆancia, realizado antes da fase de cons- tru¸c˜ao. O objetivo ´e eliminar informa¸c˜ao desnecess´aria para as heur´ısticas do GRASP.
O pr´e-processamento utiliza padr˜oes de v´ertices facilmente identificados e que repre- sentam uma configura¸c˜ao redundante. Estes v´ertices sofrem modifica¸c˜oes para se obter uma instˆancia mais simples, mas equivalente `a instˆancia original.
5.10.1
Caminhos desnecess´arios
Na topologia do grafo de possibilidades de cabeamento sugerido nos dados fornecidos pelo CPqD, observa-se um grande n´umero de v´ertices com as seguintes caracter´ısticas:
• N˜ao apresentam caixa terminal.
• Encontram-se no centro de quadras, ou est˜ao ao longo das ruas ou avenidas, mas
5.10. Simplifica¸c˜ao 67
• Apresentam grau 1, ou s˜ao bifurca¸c˜oes para v´ertices de grau 1, ou bifurca¸c˜oes para
sub-´arvores que n˜ao apresentam caixa terminal. Ou seja, s˜ao sub-´arvores que n˜ao apresentam demanda, que ser˜ao chamadas de ´arvores de caminhos desnecess´arios. Estes v´ertices n˜ao necessitam de cabeamento, mas elevam a complexidade do espa¸co de busca com op¸c˜oes que n˜ao contribuem com a solu¸c˜ao. S˜ao identificados pela heur´ıstica de caminhos desnecess´arios e eliminados da instˆancia. Esta heur´ıstica opera iterativamente em passos. No primeiro, ela busca e marca na instˆancia todos os v´ertices que satisfazem as seguintes condi¸c˜oes:
• N˜ao possuem caixa, n˜ao possuem demanda nem oferta de pares telefˆonicos. • N˜ao s˜ao pontos de curva nem ponto de distribui¸c˜ao.
• Apresentam grau zero ou um e n˜ao permitem bifurca¸c˜oes.
Isto equivale a encontrar as folhas das ´arvores de caminhos desnecess´arios.
Nos demais passos, realiza-se a mesma busca, mas restrita aos vizinhos dos v´ertices marcados. Ao calcular o grau de um v´ertice, n˜ao se contabiliza os vizinhos marcados. Isto equivale a reduzir as ´arvores de caminhos desnecess´arios retirando v´ertices a partir das folhas.
Por fim, os v´ertices marcados s˜ao removidos.
5.10.2
V´ertices desnecess´arios
Em trechos cont´ınuos de arestas consecutivas ao longo de uma rua ou avenida ´e comum ocorrerem v´ertices sem caixas terminais. Estes v´ertices s˜ao postes (ou caixas) que servem como suporte para o cabeamento entre um par de caixas ou bifurca¸c˜oes. A adi¸c˜ao de uma aresta do trecho far´a sentido somente mediante a adi¸c˜ao das demais arestas no trecho. Todas as arestas do trecho receber˜ao o mesmo cabo, uma vez que n˜ao faria sentido instalar uma emenda entre suas extremidades.
Nada mais natural que condicionar que estas arestas sejam adicionadas simultanea- mente em uma s´o opera¸c˜ao. Para isso, a heur´ıstica de v´ertices desnecess´arios substitui todo trecho por uma ´unica aresta fict´ıcia, cujo comprimento ´e igual `a soma das arestas retiradas.
A heur´ıstica opera em dois passos. No primeiro, identifica conjuntos de v´ertices que satisfazem as seguintes restri¸c˜oes:
• N˜ao possuem caixa, nem demanda ou oferta de pares telefˆonicos. • N˜ao s˜ao pontos de curva ou distribui¸c˜ao.
• N˜ao s˜ao o encontro de uma possibilidade de tubo subterrˆaneo com uma de lance
a´ereo.
• Apresentam grau 2.
68 Cap´ıtulo 5. Heur´ıstica
(a) Exemplo de ponto de curva (b) Representa¸c˜ao por arestas
Figura 5.16: Exemplo de ponto de curva transformado em arestas ´unica aresta.
5.10.3
Pontos de curva
Os pontos de curva s˜ao v´ertices que apresentam uma caracter´ıstica especial: eles possuem regras que associam custos diferentes para cada possibilidade de cabeamento atrav´es dos mesmos. Para evitar a complexidade decorrente de implementar essas regras na heur´ıstica, decidiu-se criar arestas especiais para representar cada poss´ıvel cabeamento atrav´es um ponto de curva.
Se existe um ponto de curva entre dois v´ertices alinhados, ent˜ao se cria uma aresta com comprimento igual `a distˆancia entre estes dois v´ertices e sem custo de instala¸c˜ao. Esta aresta representa a possibilidade de instalar um cabeamento entre os dois postes,
que dispensa de ponto de curva. Na figura 5.16(a), isto seria um cabeamento do poste A1
para o A2 ou de B1 para o B2, tal como na figura 5.16(b).
J´a para dois v´ertices n˜ao alinhados, entre os quais existe um ponto de curva, adiciona- se uma aresta com comprimento igual `a distˆancia do caminho entre esses trˆes v´ertices e com custo de instala¸c˜ao igual ao custo de instala¸c˜ao do ponto de curva que seria necess´ario
para realizar este cabeamento. Na figura 5.16(a), isto seria um cabeamento do poste A1
Cap´ıtulo 6
Resultados experimentais
6.1
Instˆancia de testes
Nesta se¸c˜ao ser´a apresentada a instˆancia de testes. Esta instˆancia foi selecionada, pois apresenta as seguintes caracter´ısticas de interesse:
• A instˆancia reflete dados reais, obtidos atrav´es de parceria com o CPqD.
• Ela apresenta uma rica variedade de caracter´ısticas, desde quadras regulares para
as quais o cabeamento ´e bastante trivial, como tamb´em assimetrias na geografia que perturbar˜ao o cabeamento sistem´atico. Para instˆancias muito regulares, o problema de cabeamento ´e mais simples, de modo que n˜ao haveria necessidade de um algoritmo de otimiza¸c˜ao. A instˆancia ilustra um caso importante no qual uma ferramenta computacional ser´a de grande valor para aux´ılio no projeto da rede telefˆonica.
• Na instˆancia ocorrem v´arias situa¸c˜oes de cabeamento, uniformemente distribu´ıdas
pelo mapa. Entre elas podemos reconhecer possibilidades de lances a´ereos e de dutos subterrˆaneos, ambos os casos envolvendo distˆancias curtas e longas.
• Existe uma diversidade de ruas e avenidas, que geram v´arias configura¸c˜oes inte-
ressantes para instala¸c˜ao de cabos. Em aproximadamente metade das esquinas h´a possibilidade de instala¸c˜ao de pontos de curva. Dutos subterrˆaneos est˜ao `a dis- posi¸c˜ao para atravessar avenidas, uma vez que na maioria das vezes elas n˜ao podem ser cruzadas por lances a´ereos. V´arias avenidas possuem galerias subterrˆaneas, nas quais poder´a ser passado um cabeamento caso os postes pr´oximos estejam com cabeamento saturado.
A instˆancia abrange uma ´area de aproximadamente 780x730 metros. Nela encontram- se 706 postes e 215 caixas subterrˆaneas. Existem 710 arestas representando possibilidades
70 Cap´ıtulo 6. Resultados experimentais
de lances a´ereos e 327 de dutos subterrˆaneos. A figura 6.2 cont´em uma ilustra¸c˜ao da instˆancia original, antes de aplicar as simplifica¸c˜oes e o pr´e-processamento.
Existem 71 caixas distribu´ıdas em 63 postes. N˜ao h´a caixas subterrˆaneas atendendo demanda. Apenas 8 postes cont´em 2 caixas. S˜ao 61 caixas de capacidade 10 e outras 10 de capacidade 20. A demanda m´edia das caixas ´e de 6,7 pares telefˆonicos.
Os v´ertices possuem grau relativamente baixo devido a topologia da instˆancia. A maioria dos v´ertices de grau 1 pode ser considerada ru´ıdo nos dados de entrada. J´a os v´ertices de grau 2 s˜ao postes (ou caixas subterrˆaneas) intermedi´arias ao longo de ruas ou avenidas pelas quais ´e poss´ıvel passar um cabeamento, mas n˜ao faz sentido realizar bifurca¸c˜oes. V´ertices de grau 3 ou 4 s˜ao t´ıpicos de cruzamentos, muitas vezes como pontos de curva. V´ertices de grau maior s˜ao caixas subterrˆaneas com muitas liga¸c˜oes ou o pr´oprio ponto de distribui¸c˜ao. A figura 6.1 ilustra algumas caracter´ısticas da instˆancia.
(a) Grau dos v´ertices (b) Distribui¸c˜ao de demanda por caixa
Figura 6.1: Distribui¸c˜ao de grau de v´ertice e demanda por caixa
Ao aplicar a simplifica¸c˜ao de caminhos desnecess´arios, vide se¸c˜ao 5.10, s˜ao removidos 247 postes, 167 caixas subterrˆaneas, 230 possibilidades de lances a´ereos e 135 possibi- lidades de dutos. O resultado desta simplifica¸c˜ao encontra-se na figura 6.3, que agora reflete possibilidades reais de cabeamento. O resultado da simplifica¸c˜ao de v´ertices des- necess´arios pode ser encontrado na figura 6.4. Mais 262 postes e 30 caixas subterrˆaneas foram removidos, al´em de 262 possibilidades de lances a´ereos e 30 dutos. A tabela 6.1 resume estes resultados.
Instˆancia Simplifica¸c˜ao Simplifica¸c˜ao
Original caminhos v´ertices
Postes 706 459 197
Caixas subterrˆaneas 215 80 50
Possib. lances a´ereos 710 480 218
Possib. dutos sub. 327 192 162
Total 1958 1211 627
6.1. Instˆancia de testes 71
Nela observamos que o n´umero de componentes que formam a solu¸c˜ao foi reduzido em aproximadamente 70%. Ainda assim, o problema sobre a instˆancia ´e complexo.
A instˆancia ap´os simplifica¸c˜oes, usada como entrada para os algoritmos de otimiza¸c˜ao, est´a mostrada na figura 6.4.
333200 333300 333400 333500 333600 333700 333800 7392000 7392100 7392200 7392300 7392400 7392500 7392600
72 Cap´ıtulo 6. Resultados experimentais 333200 333300 333400 333500 333600 333700 333800 7392000 7392100 7392200 7392300 7392400 7392500
6.1. Instˆancia de testes 73 333200 333300 333400 333500 333600 333700 333800 7392000 7392100 7392200 7392300 7392400 7392500
74 Cap´ıtulo 6. Resultados experimentais
6.2
Planejamento e execu¸c˜ao
Para verificar a heur´ıstica proposta neste trabalho, implementou-se os algoritmos em C++. O total aproximado de 45.000 linhas de c´odigo foi traduzido para bin´ario execut´avel com aux´ılio do compilador GNU, vers˜ao 4.0.3. Os testes ocorreram em um ambiente formado pelo sistema operacional Linux (Ubuntu 5, kernel 2.6.15-28-386), utilizando a ferramenta de desenvolvimento Eclipse C/C++ Development Tooling - CDT.
Os resultados experimentais foram obtidos executando a heur´ıstica em duas m´aquinas distintas, com as seguintes configura¸c˜oes:
• Caracter´ısticas da M´aquina A:
Um processador Intel(R) Pentium(R) M, freq¨uˆencia 1.6GHz, cache de 2MB; 1GB mem´oria RAM.
• Caracter´ısticas da M´aquina B:
Dois processadores Intel(R) Pentium(R) 4, freq¨uˆencia 3.2GHz, cache de 0,5MB; 2GB mem´oria RAM.
Durante a investiga¸c˜ao da melhor estrat´egia para a fase de crescimento na se¸c˜ao 5.4, realizaram-se testes espec´ıficos para gerar 100 solu¸c˜oes iniciais na fase de constru¸c˜ao. Os resultados destes testes permitiram aprimorar e compreender melhor as t´ecnicas sugeridas e mencionadas anteriormente. No entanto, estes resultados ser˜ao omitidos por n˜ao serem essenciais para a conclus˜ao deste trabalho. Para comparar os testes, para reproduzir resultados e para depurar o algoritmo durante o desenvolvimento do c´odigo fonte, utilizou- se sempre a mesma semente para o gerador de n´umeros aleat´orios e a mesma fun¸c˜ao objetivo com valores que refletem custos reais.
Para os testes finais, cada m´aquina realizou um conjunto de testes para trˆes poss´ıveis configura¸c˜oes do algoritmo. As configura¸c˜oes diferem de acordo com o crit´erio utilizado para as tabelas de estimativas de varia¸c˜ao de penaliza¸c˜ao (se¸c˜ao 5.6.2) e os respectivos limitnates superiores. Em cada teste, a fase de constru¸c˜ao gera 300 solu¸c˜oes iniciais.
Configura¸c˜ao Intervalos de demanda
1 1–10; 11–20
2 0–5; 6–10; 11–20
3 0-5; 6–10; 11–14; 15–20
Tabela 6.2: Configura¸c˜oes dos testes da heur´ıstica
A tabela 6.2 ilustra as trˆes configura¸c˜oes usadas neste trabalho. A primeira, e mais simples, utiliza dois limitantes superiores para o valor da varia¸c˜ao de penaliza¸c˜ao: 10 (para caixas com demanda de 1 a 10) e 20 (para caixas com demanda de 11 a 20). A
6.2. Planejamento e execu¸c˜ao 75
escolha destes limitantes se deve ao fato que, para esta instˆancia, as caixas terminais existem somente para capacidades de 10 ou 20.
Evidentemente, a aproxima¸c˜ao ser´a de baixa qualidade para os v´ertices com demanda muito inferior ao limitante superior. Por exemplo, suponha que um determinado v´ertice com demanda 3 possa ser atendido utilizando o cabeamento j´a existente nas Instala¸c˜oes de uma solu¸c˜ao parcial. Neste caso, a varia¸c˜ao de penaliza¸c˜ao na solu¸c˜ao ser´a zero. O limitante superior utilizado para este v´ertice considerar´a uma demanda de 10. Devido ao uso da aproxima¸c˜ao com um excesso de 7, a heur´ıstica poder´a contabilizar, desnecessari- amente, a substitui¸c˜ao de cabos por outros de maior capacidade, ou a instala¸c˜ao de novas emendas, resultando em um valor muito maior para a varia¸c˜ao de penaliza¸c˜ao.
Por este motivo, experimentou-se tamb´em para uma outra configura¸c˜ao (a segunda da tabela 6.2) para os limitantes superiores nas tabelas de estimativas de varia¸c˜ao de pena- liza¸c˜ao. Como a instˆancia revelou um n´umero expressivo de v´ertices com demanda entre 6 e 10, adotou-se uma tabela estimativas dedicada exclusivamente para este intervalo. Com a fase de constru¸c˜ao utilizando valores mais precisos para a escolha dos caminhos, espera-se obter resultados melhores.
Na terceira configura¸c˜ao da tabela 6.2, aplicou-se o mesmo racioc´ınio para o intervalo de demanda de 11 a 20. A melhora esperada para a convergˆencia, todavia, ´e menos significativa que para a segunda configura¸c˜ao, uma vez que ´e relativamente baixo o n´umero de v´ertices com demanda nos intervalos de 11 a 14 e de 15 a 20.
A implementa¸c˜ao utiliza tabelas (hash-maps) para associar entre si os elementos das estruturas de dados. Utiliza tamb´em conjuntos (hash-sets) para enumerar elementos. No in´ıcio do trabalho, optou-se pelo endere¸co de mem´oria dos elementos para servir de ´ındice das tabelas e de identificador para os conjuntos. Esta decis˜ao era interessante por simplificar o c´odigo que opera sobre as estruturas de dados. No entanto, ao reproduzir testes iguais em v´arias m´aquinas, s˜ao obtidos resultados diferentes.
Todas as configura¸c˜oes utilizaram a mesma semente para o gerador de n´umeros pseudo- aleat´orios. Verifica-se que ele sempre gera a mesma seq¨uˆencia de n´umeros para governar as decis˜oes. Portanto, para uma certa instˆancia e certa configura¸c˜ao, esperava-se que o algoritmo obtivesse solu¸c˜oes iguais, o que, de fato, n˜ao ocorreu.
Como o sistema operacional de cada m´aquina carrega a heur´ıstica em regi˜oes de mem´oria diferentes, os ´ındices e os identificadores dos elementos das estruturas de da- dos n˜ao s˜ao iguais entre as m´aquinas. Os elementos das tabelas s˜ao consultados em uma ordem diferente em cada m´aquina. O mesmo acontece para a enumera¸c˜ao dos conjuntos. Apesar da seq¨uˆencia de n´umeros sorteados ser a mesma nas duas m´aquinas, as decis˜oes s˜ao aplicadas sobre dados obtidos com uma ordena¸c˜ao diferente.
76 Cap´ıtulo 6. Resultados experimentais
6.3
Tempo de execu¸c˜ao
O tempo de execu¸c˜ao da heur´ıstica foi medido, somente na m´aquina B, para cada uma das trˆes configura¸c˜oes da heur´ıstica. Cada medi¸c˜ao corresponde a 300 itera¸c˜oes da heur´ıstica, sendo que cada qual inclui a fase de constru¸c˜ao, otimiza¸c˜ao de busca local, produ¸c˜ao de relat´orios e representa¸c˜ao gr´afica.
A tabela 6.3 mostra os resultados obtidos para cada configura¸c˜ao do algoritmo. Na segunda coluna encontram-se os intervalos utilizados para cada tabela de estimativa de varia¸c˜ao de penaliza¸c˜ao. A terceira e quarta colunas contˆem, respectivamente, o tempo total e m´edio (em segundos) para cada solu¸c˜ao. A tabela est´a ilustrada na figura 6.5.
Configura¸c˜ao Intervalos Tempo Tempo m´edio
total [s] por solu¸c˜ao [s]
1 1–10; 11–20 288,39 0,96
2 0–5; 6–10; 11–20 375,30 1,25
3 0-5; 6–10; 11–14; 15–20 561,33 1,87
Tabela 6.3: Tempo de execu¸c˜ao da heur´ıstica
Figura 6.5: Distribui¸c˜ao da quantidade de ´arvores
Observa-se que o tempo m´edio cresce de acordo com o n´umero de intervalos. Poderia- se esperar um crescimento proporcional pois, pela implementa¸c˜ao da heur´ıstica, cada itera¸c˜ao da fase de constru¸c˜ao atualiza as tabelas de estimativa de varia¸c˜ao de penaliza¸c˜ao para cada um dos intervalos. Seja n o n´umero de v´ertices e m o n´umero de arestas da instˆancia. A atualiza¸c˜ao da tabela apresenta complexidade O(m + n ln n) e o n´umero de itera¸c˜oes ´e igual ao n´umero de caixas, ou seja, O(n). Cada execu¸c˜ao de uma configura¸c˜ao