• Nenhum resultado encontrado

Um estudo computacional do problema do brigadista seletivo em grafos

N/A
N/A
Protected

Academic year: 2021

Share "Um estudo computacional do problema do brigadista seletivo em grafos"

Copied!
68
0
0

Texto

(1)

Alan Martins Silva

Um estudo computacional do problema do brigadista

seletivo em grafos

CAMPINAS

2019

(2)

Um estudo computacional do problema do brigadista seletivo em

grafos

Dissertação apresentada ao Instituto de Computação da Universidade Estadual de Campinas como parte dos requisitos para a obtenção do título de Mestre em Ciência da Computação.

Orientador: Prof. Dr. Cid Carvalho de Souza Coorientador: Prof. Dr. Pedro Jussieu de Rezende

Este exemplar corresponde à versão final da Dissertação defendida por Alan Martins Silva e orientada pelo Prof. Dr. Cid Carvalho de Souza.

CAMPINAS

2019

(3)

Ana Regina Machado - CRB 8/5467

Silva, Alan Martins,

Si38e SilUm estudo computacional do problema do brigadista seletivo em grafos / Alan Martins Silva. – Campinas, SP : [s.n.], 2019.

SilOrientador: Cid Carvalho de Souza.

SilCoorientador: Pedro Jussieu de Rezende.

SilDissertação (mestrado) – Universidade Estadual de Campinas, Instituto de Computação.

Sil1. Teoria dos grafos. 2. Heurística (Computação). 3. Meta-heurística. 4. GRASP (Meta-heurística). 5. Programação linear inteira. 6. Algoritmos. I. Souza, Cid Carvalho de, 1963-. II. Rezende, Pedro Jussieu de, 1955-. III. Universidade Estadual de Campinas. Instituto de Computação. IV. Título.

Informações para Biblioteca Digital

Título em outro idioma: A computational study of the selective firefighter problem Palavras-chave em inglês:

Graph theory

Heuristic (Computer science) Metaheuristic

GRASP (Metaheuristic) Integer linear programming Algorithms

Área de concentração: Ciência da Computação Titulação: Mestre em Ciência da Computação Banca examinadora:

Cid Carvalho de Souza [Orientador] Edna Ayako Hoshino

Fábio Luiz Usberti

Data de defesa: 23-08-2019

Programa de Pós-Graduação: Ciência da Computação

Identificação e informações acadêmicas do(a) aluno(a)

- ORCID do autor: https://orcid.org/0000-0002-4146-064X - Currículo Lattes do autor: http://lattes.cnpq.br/6433077513580349

(4)

INSTITUTO DE COMPUTAÇÃO

Alan Martins Silva

Um estudo computacional do problema do brigadista seletivo em

grafos

Banca Examinadora:

• Prof. Dr. Cid Carvalho de Souza

Instituto de Computação - UNICAMP (orientador) • Profa. Dra. Edna Ayako Hoshino

Faculdade de Computação - UFMS • Prof. Dr. Fábio Luiz Usberti

Instituto de Computação - UNICAMP

A ata da defesa, assinada pelos membros da Comissão Examinadora, consta no SIGA/Sistema de Fluxo de Dissertação/Tese e na Secretaria do Programa da Unidade.

(5)

Inicialmente, gostaria de agradecer aos meus orientadores, Prof. Cid e Prof. Pedro por toda a ajuda, confiança, respeito e ensinamentos que me foram passados. A admiração e respeito por ambos sempre existiu e só aumentou durante esse período. Novamente, deixo aqui meu muito obrigado por tudo. Eu não seria quem sou hoje sem sua ajuda.

Agradeço também minha família por todo o suporte que me foi dado em continuar estudando e buscando o que sempre almejei. O seu apoio foi fundamental.

A importância de todos os grandes amigos que fiz no LOCo é imensurável e é algo que sempre irá me motivar a continuar indo atrás dos meus sonhos. Deixo aqui toda a gratidão do mundo para vocês e obrigado por me ajudarem tanto durante esses anos.

Não poderia deixar de agradecer aos demais professores e servidores do Instituto de Computação da Unicamp. Dou meus parabéns pelo incrível serviço prestado.

O presente trabalho foi realizado com apoio da Coordenação de Aperfeiçoamento de Pessoal de Nível Superior - Brasil (CAPES) - Código de Financiamento 001

(6)

O Problema do Brigadista Seletivo (PBS) é um modelo determinístico e em tempo discreto para simulação da propagação e contenção de incêndios em um grafo. Uma instância do problema contém um inteiro D, um grafo G(V, E) e dois subconjuntos de vértices B, contendo os vértices que são focos de incêndio e T , conjunto com os vértices de elite.

Em um momento inicial, apenas os vértices v ∈ B estão queimados. Então, um processo iterativo tem início e ocorre em rodadas. Em cada rodada, no máximo D vértices de V \ T podem ser defendidos e, após as defesas, o fogo se alastra, queimando todos os vértices não defendidos que são adjacentes a um vértice queimado. O processo termina quando não existem vértices que ainda podem ser queimados. O objetivo é maximizar o número de vértices em T que não estão queimados no fim do processo. O PBS é um problema NP-difícil e uma solução para ele é dada como uma sequência de defesas de vértices.

Nesta dissertação, nós apresentamos uma formulação de Programação Linear Inteira (PLI) para o PBS baseada em uma formulação previamente introduzida na literatura para um problema similar. São apresentadas também heurísticas construtivas gulosas, procedimentos de busca local e algoritmos para o refinamento de soluções baseados no modelo de PLI. Esses métodos são combinados em uma meta-heurística GRASP para o PBS.

Diversos experimentos computacionais foram conduzidos com diferentes versões da meta-heurística para avaliar a qualidade das suas soluções, incluindo comparações com as soluções ótimas obtidas pelo modelo de PLI quando disponíveis.

Os resultados revelaram que diversas melhorias propostas neste trabalho são relevan-tes. A maioria das soluções obtidas pela meta-heurística GRASP atingiram o valor ótimo ou perderam apenas por algumas unidades.

(7)

The Selective Firefighter Problem (SFFP) is a deterministic and discrete-time model to simulate the spreading and containment of a fire on a graph. An instance of the problem contains an integer D, a graph G(V, E) and two subsets B and T of V .

Initially, only the vertices v ∈ B are burned. Then, an iterative process starts that happens in rounds. In each round, no more than D non-burned vertices of V \ T are defended and, after that, the fire spreads, burning all the non-defended vertices that are adjacent to a burned one. The process ends when there is no vertex to be burned. The goal is to maximize the number of non-burned vertices in T when the fire spreading halts. The SFFP is an NP-hard problem and a solution to it is given by a sequence of vertex defenses.

In this dissertation, we present an Integer Linear Programming (ILP) formulation for the SFFP based on a model discussed earlier in the literature for a similar problem. Moreover, we propose greedy heuristics, local search procedures and refinement algorithms based on the ILP model. These methods are combined into a GRASP metaheuristic for the SFFP.

Several computational experiments were conducted with different versions of the meta-heuristic to assess the quality of their solutions, including comparisons with optimal so-lutions produced by the ILP model when available.

The results revealed that the various improvements proposed in this work paid off. Most solutions of the GRASP metaheuristic reached the optimum or missed it by just a few units.

(8)

1.1 Exemplo do processo de defesa e propagação no PBS. . . 14

2.1 Exemplo do processo de conversão de instâncias . . . 19

2.2 Ilustração do procedimento de cálculo da descendência de vértices . . . 22

2.3 Cálculo da Distância Média do Fogo. . . 23

3.1 Ilustração do cálculo de descendentes em uma instância . . . 30

3.2 Ilustração do cálculo de DMFr em uma instância. . . 31

4.1 Exemplo da triangulação de Delaunay para um conjunto de pontos. . . 39

4.2 Escolha dos vértices de T e foco de incêndio. . . 40

4.3 Porcentagem de vértices de T salvos ao variar a densidade do grafo. . . 41

4.4 Exemplo do gráfico utilizado na apresentação de resultados. . . 43

4.5 Comparação de qualidade e tempo de execução entre Desc e DescD . . . . 45

4.6 Comparação de qualidade e tempo de execução entre Path e PathP . . . . 47

4.7 Comparação de qualidade e tempo de execução entre Desc e DescD . . . . 49

4.8 Comparação de qualidade e tempo de execução entre Path e PathD . . . . 51

4.9 Comparação de qualidade e tempo de execução entre DescDRR e DescDRV 53 4.10 Comparação de qualidade e tempo de execução entre PathDRR e PathDRV 55 4.11 Comparação de qualidade e tempo de execução entre DescDRR e PathDRR 57 4.12 Comparação de qualidade e tempo de execução entre DescDRR e DescDRV 59 4.13 Qualidade da solução para PathDRR e PLI em instâncias de 200 vértices com 0% de arestas removidas (instâncias de 1 a 50) . . . 60

4.14 Qualidade da solução para PathDRR e PLI em instâncias de 200 vértices com 0% de arestas removidas (instâncias de 51 a 100) . . . 60

4.15 Qualidade da solução para PathDRR e PLI em instâncias de 200 vértices com 75% de arestas removidas (instâncias de 1 a 50) . . . 61

4.16 Qualidade da solução para PathDRR e PLI em instâncias de 200 vértices com 75% de arestas removidas (instâncias de 51 a 100) . . . 61

4.17 Qualidade da solução para PathDRR x Ótimo em instâncias com 100 vér-tices onde foram removidas 0% das arestas . . . 62

4.18 Qualidade da solução para PathDRR x Ótimo em instâncias com 100 vér-tices onde foram removidas 25% das arestas . . . 62

4.19 Qualidade da solução para PathDRR x Ótimo em instâncias com 100 vér-tices onde foram removidas 50% das arestas . . . 63

4.20 Qualidade da solução para PathDRR x Ótimo em instâncias com 100 vér-tices onde foram removidas 75% das arestas . . . 63

(9)

3.1 Níveis de significância de z . . . 37 4.1 Configuração de parâmetros com irace . . . 42 4.2 Desvio absoluto da solução da heurística em relação a solução ótima obtida

através da resolução do modelo de PLI em instâncias com 100 vértices. . . 64 4.3 Tempo utilizado pelo gurobi para resolver o modelo de PLI para instâncias

(10)
(11)

1 Introdução 13

1.1 Problema do Brigadista . . . 15

1.2 Problema do Brigadista Seletivo . . . 16

2 Preliminares 18 2.1 Complexidade do PBS . . . 18

2.2 Modelo de Programação Linear Inteira . . . 20

2.3 Descendência entre vértices . . . 21

2.4 Distância Média do Fogo (DMF) . . . 23

2.5 Meta-heurísticas . . . 23

2.6 Meta-heurística GRASP . . . 24

2.6.1 Algoritmos gulosos e semi-gulosos . . . 24

2.6.2 Busca Local . . . 26 2.6.3 GRASP . . . 28 3 Metodologia 29 3.1 Heurísticas Construtivas . . . 29 3.1.1 ThDesc . . . 29 3.1.2 ThPath . . . 30 3.1.3 Construção semi-gulosa . . . 31 3.2 Busca Local . . . 32 3.3 Refinamento . . . 32 3.3.1 Modelo PLI RR . . . 33 3.3.2 Modelo PLI RV . . . 33 3.4 GRASP para o PBS . . . 33

3.5 Análise dos resultados . . . 34

4 Experimentos Computacionais 38 4.1 Ambiente . . . 38

4.2 Geração de Instâncias . . . 38

4.2.1 Geração de grafos planares . . . 39

4.2.2 Escolha dos vértices de T . . . 39

4.2.3 Escolha do foco de incêndio . . . 40

4.2.4 Densidade da instância . . . 40

4.2.5 Vértices salvos durante o processo . . . 42

4.3 Ajuste de Parâmetros . . . 42

4.3.1 Comparações entre heurísticas . . . 42

4.3.2 Heurística com Busca Local . . . 43

(12)

4.3.6 Comparação da melhor heurística com os resultados do PLI . . . . 58

5 Considerações Finais 65

(13)

Capítulo 1

Introdução

Todos os anos, diferentes desastres naturais ocorrem ao redor do mundo causando danos irreparáveis aos locais e pessoas atingidas. Um exemplo de fenômeno natural são os incên-dios, caracterizados por grandes ocorrências de fogo não controladas. Entre os principais danos causados por incêndios, estão a devastação da fauna e flora. Somente no Brasil, no ano de 2018, existiram 68.395 focos de incêndio no país [1].

Considerando os danos que podem ser causados, voluntários e funcionários do corpo de bombeiros são treinados e equipados para realizar a prevenção e controle de incêndios. Tais profissionais são denominados brigadistas.

Em determinadas situações, brigadistas não conseguem se aproximar de áreas atingi-das. Assim, técnicas utilizando água, terra ou mesmo abafadores não podem ser utilizaatingi-das. Para tais ocorrências, procedimentos indiretos de combate ao fogo como construção de barreiras são as únicas alternativas viáveis.

Para os brigadistas, é interessante identificar quais os melhores locais onde devem ser construídas as barreiras de modo a minimizar os danos causados pelo incêndio.

O Problema do Brigadista (PB) pode ser descrito, com o auxílio de Teoria dos Grafos, através de um modelo determinístico, iterativo e discreto utilizado para simular o processo de propagação e controle de incêndios.

Neste contexto, os vértices do grafo representam porções de uma região geográfica, enquanto as arestas estão associadas às fronteiras entre estas últimas. Agora, imagine que em um instante de tempo, um incêndio tem início em um vértice do grafo. Um brigadista então defende um vértice e, em seguida, o fogo se espalha de cada vértice que está queimando para seus vizinhos não defendidos e o processo se repete. Uma vez que um vértice é queimado ou defendido, ele permanece assim durante todo o processo, o qual só termina quando o fogo não é capaz de se propagar. A realização de defesas seguida da propagação do fogo é denotada por rodada, porém, na rodada inicial do processo, nenhum vértice é defendido.

Na forma geral do problema, podemos ter diferentes focos de incêndio. Denotamos esse conjunto de vértices por B. O número de brigadistas disponíveis em cada rodada é denotado por D.

Uma solução ótima para o PB é um conjunto de vértices que, se defendidos, irão maximizar o número de vértices não queimados no final do processo.

(14)

similar ao PB, porém, a diferença se dá pela inclusão de um subconjunto de vértices T que não podem ser defendidos e, na função objetivo, apenas os vértices de T são contabilizados. Um vértice é dito salvo se, ao fim do processo de propagação do fogo, ele não está queimado.

A Figura 1.1 ilustra o processo de defesa e propagação do fogo descrito acima para uma instância do PBS. Para este exemplo, temos B = {s}, D = 1 e T = {d, f, h}. Na rodada 0, temos a configuração inicial do processo. Na rodada 1, escolhemos defender e, assim, os vértices b e g são queimados. Na rodada 2, realiza-se a defesa de c e a é queimado. Na rodada 3, não existem vértices para os quais o fogo pode se propagar, desse modo, dá-se fim ao processo e, com esta solução, conseguimos salvar 3 vértices de T: d, f e h. s a e b g c h d f j (a) Rodada 0 s a e b g c h d f j (b) Rodada 1 s a e b g c h d f j (c) Rodada 2

Figura 1.1: Exemplo do processo de defesa e propagação no PBS.

Como veremos mais adiante, o PBS pertence à classe NP-difícil. De posse desta informação, neste trabalho, investigamos diferentes maneiras de resolver o PBS. Primei-ramente, é apresentado um modelo de Programação Linear Inteira (PLI) para o problema com o intuito de resolvê-lo de forma exata. Em seguida, são propostas heurísticas capa-zes de encontrar soluções viáveis para o problema, sem garantia de otimalidade, porém, com um custo computacional reduzido. Finalmente, executamos uma série de experimen-tos para avaliar a qualidade das soluções obtidas pelas heurísticas aqui desenvolvidas, inclusive comparando-as com soluções ótimas obtidas através do modelo PLI, quando disponíveis.

Nossos principais resultados incluem o projeto de heurísticas gulosas e de procedimen-tos de busca local, os quais são combinados para a implementação de uma meta-heurística GRASP para o PBS (ver Seção 3.4). Em adição às fases já mencionadas, incluímos uma etapa heurística de refinamento de soluções através de modificações no modelo de PLI.

Em relação às heurísticas, podemos ressaltar:

1. Adaptamos a técnica gulosa baseada no número de descendentes de um vértice proposta por García-Martinéz et al. em [15] para a resolução do PB para o PBS. 2. Desenvolvemos uma heurística gulosa que utiliza a distância média esperada entre

o fogo e os vértices de T como critério para a escolha do próximo vértice a ser defendido.

Sobre o procedimento de busca local e o processo de refinamento das soluções obtidas pelas heurísticas, nossas principais contribuições são:

(15)

1. Implementamos um backtracking limitado com o intuito de rever e possivelmente refazer decisões tomadas sobre quais vértices devem ser defendidos em cada rodada do processo de propagação do fogo.

2. Modificamos o modelo de PLI de modo a restringir o conjunto de vértices que podem ser defendidos para a união dos conjuntos de vértices presentes nas melhores soluções obtidas após diversas execuções das heurísticas.

3. A partir de informações obtidas com soluções heurísticas, adaptamos o modelo de PLI e restringimos o número de rodadas nas quais defesas podem ser realizadas. Este texto está organizado em cinco capítulos. Introduzimos o problema no Capítulo 1, onde também fazemos uma revisão bibliográfica sobre o mesmo. No Capítulo 2, são abordados conceitos e definições necessárias para o entendimento deste trabalho. Du-rante o Capítulo 3, detalhamos a metodologia que foi adotada no desenvolvimento da pesquisa. Já nos Capítulos 4 e 5, são apresentados os experimentos computacionais e as considerações finais, respectivamente.

Nas próximas seções, descrevemos resultados obtidos a partir de trabalhos publicados anteriormente na literatura. Nosso foco é naqueles que realizaram estudos computacionais para o PB ou PBS e discutem técnicas ou definições relevantes para esta dissertação. Ainda que em menor escala, também são apresentados alguns trabalhos com resultados teóricos.

1.1

Problema do Brigadista

O PB foi introduzido na literatura por Bert Hartnell em [18] como um modelo deter-minístico para a simulação do processo de propagação e controle de incêndios, doenças, informações, entre outros. Desde então, o problema é pesquisado em trabalhos de natu-reza teórica e prática devido à sua dificuldade em ser resolvido e à grande variedade de aplicações a problemas reais.

Um modelo de programação linear inteira para o PB é proposto em [15] juntamente com heurísticas gulosas que se destacam pelos seus resultados experimentais. Várias ideias discutidas pelos autores foram relevantes para a nossa investigação. Dentre elas, ressaltamos:

1. Apresentação do modelo de programação linear inteira que foi modificado por nós para o PBS.

2. Definição do termo descendente de um vértice, adaptado e utilizado em heurísticas propostas por nós para o PBS.

3. Defesa de vértices imediatamente ameaçados pelo fogo, como um critério guloso para a construção de uma solução viável, também explorado por nós na resolução do PBS.

(16)

4. Utilização do número de descendentes dos vértices como critério guloso para escolha do próximo vértice a ser defendido, que foi igualmente considerado por nós no projeto de heurísticas gulosas para o PBS.

Outras formas de tratamento do PB foram propostas e utilizadas em [15], que, quando adaptadas para o PBS durante este trabalho, não apresentaram bons resultados. Dentre elas, podemos citar o uso do grau do vértice para definir a prioridade segundo a qual devemos defendê-lo e a possibilidade de postergar a sua defesa.

Vários outros trabalhos relacionados ao PB apresentam resultados teóricos sobre o problema. Em [14], Finbow et al. demonstram que o PB é NP-difícil mesmo quando limitado a árvores com grau máximo 3, porém, é resolvido em tempo polinomial em grafos de grau no máximo 3 se o foco de incêndio é em um vértice de grau até 2.

O Problema do Brigadista também foi considerado na sua versão geométrica. Intro-duzido no ano de 2014 por Rolf Klein [19], o Problema do Brigadista Geométrico (do inglês Geometric Firefighter) já possui diversos trabalhos na literatura. Dentre eles, po-demos citar Maurício Zambon et al. em [25] que além de apresentar uma formulação de programação linear inteira para o problema e descrever algoritmos de pré-processamento, também discute estruturas geométricas utilizadas para implementar e resolver o modelo. Outra variação do PB é apresentada por Barnetson et al. em [8] como um problema de decisão, enunciado como: Dado um grafo G, um inteiro t, um inteiro k e um vértice uf, existe um subconjunto S ⊂ V (G) de tamanho k de tal modo que uf ∈ S/ e o número

de vértices em G − S que são separados de uf é pelo menos t? Este trabalho também

apresenta provas de que tal problema é NP-Completo mesmo quando restrito a grafos bipartidos.

Em [22], Natanael Ramos realiza algumas modificações no modelo de programação linear apresentado em [15]. As mudanças são relacionadas à fixação de algumas variáveis a constantes e à alteração de uma família de restrições para sua forma agregada. Tais alterações conduziram a reduções no tempo de resolução do modelo em testes experimen-tais em [22] e foram implementadas também para o PBS no decorrer do presente trabalho, uma vez que elas também se aplicam ao problema alvo desta dissertação.

1.2

Problema do Brigadista Seletivo

Em [6], Anshelevich apresenta o PB com uma restrição extra de que apenas vértices per-tencentes a um subconjunto T precisam ser salvos mas não podem ser defendidos. Tam-bém são especificados diferentes objetivos para variações desse problema. Inicialmente, definem-se os termos spreading, significando que uma defesa realizada em um vértice, assim como o fogo, também se propaga para outros vértices e non-spreading, quando a defesa não se propaga.

Como citado anteriormente, dois diferentes objetivos são considerados pelo autor para o problema:

1. MaxSave. Deseja-se salvar a maior quantidade de vértices de T sob a restrição de que no máximo D defesas podem ser realizadas em cada rodada.

(17)

2. MinBudget. Procura-se o número mínimo de brigadistas (disponíveis em cada ro-dada) para que todos os vértices de T sejam salvos.

Observe que o PBS pode ser descrito como o problema que utiliza o MaxSave como função objetivo e a defesa ocorre de maneira non-spreading. Na seção 2.1 discute-se a complexidade do PBS.

Diferentes algoritmos de aproximação são apresentados em [6] para o PBS. Para a versão do modelo com a defesa spreading, uma aproximação cujo fator é (1 − 1/e) foi encontrada para o MaxSave e de (ln n) para o MinBudget. Considerando a defesa non-spreading, uma (2√n)-aproximação foi encontrada para o MinBudget e o MaxSave foi provado ser n(1−)-Difícil para um  > 0.

No decorrer deste trabalho e também durante os relatos sobre os experimentos com-putacionais, nos concentramos em instâncias nas quais existe apenas um foco de incêndio e um brigadista disponível em cada rodada.

(18)

Capítulo 2

Preliminares

Neste capítulo, apresentamos uma demonstração da complexidade do PBS e discutimos conceitos e definições necessárias para o entendimento deste trabalho. Damos início com a demonstração da dificuldade do PBS. Posteriormente, apresentamos um modelo de progra-mação linear inteira para o problema e, finalmente, definimos os termos e o funcionamento das ferramentas utilizadas no desenvolvimento da dissertação.

2.1

Complexidade do PBS

Vamos agora discutir a dificuldade teórica do PBS. Em [6], afirma-se que este problema é NP-difícil pois o PB é reduzido ao PBS em tempo polinomial fazendo-se T = V . Devido a restrição no PBS que proíbe que um vértice de T seja defendido, a afirmação acima não está correta. Abaixo, apresentamos uma redução do PB para o PBS demonstrando que o PBS é, de fato, NP-difícil.

Primeiramente, no Algoritmo 1 é apresentado um pseudo-código para conversão de instâncias do PB em instâncias do PBS.

(19)

Algoritmo 1 Algoritmo de conversão de instâncias do PB em instâncias do PBS

Entrada: Instância I do PB composta pelo grafo G(V, E), focos de incêndio B e número de brigadistas disponíveis por rodada D.

Saída: Instância I0 do PBS composta pelo grafo G0(V0, E0), focos de incêndio B, número de brigadistas disponíveis por rodada D e conjunto de vértices de elite T .

1 função ConverterInstância 2 V0 ← V 3 E0 ← E 4 T ← ∅ 5 para u ∈ V faça 6 se u /∈ B então

7 V0 ← V0∪ {u0} . Cria-se um novo vértice u0

8 T ← T ∪ {u0} . Adiciona-se u0 ao conjunto T

9 E0 ← E0 ∪ {{u, u0}} . Cria-se uma nova aresta (u, u0)

10 fim se

11 fim para

12 return I0 = < G0(V0, E0), B, D, T >

13 fim função

A parte essencial da conversão encontra-se no laço das linhas 5 a 11 do Algoritmo 1, onde, para cada vértice u do grafo que não seja um foco de incêndio, cria-se uma cópia u0

que é ligada a u por uma aresta e adicionado a T .

Na Figura 2.1, representamos visualmente o processo de conversão de instâncias.

s a e i b g c h d f j (a) Instância I do PB s a a0 e e0 i i0 b b0 g g0 c c0 h h0 d d 0 f f0 j j0 (b) Instância I0 do PBS

Figura 2.1: Exemplo do processo de conversão de instâncias

Seja I uma instância do PB e I0 uma instância do PBS gerada a partir de I por meio

do Algoritmo 1.

Proposição 1. Toda solução ótima para a instância I0 do PBS é ótima para a instância I do PB.

Demonstração. Por contradição, suponha que existe uma solução S0 do PBS ótima para I0 que não é ótima para a instância I do PB. Note que S0 é uma solução viável para I, assim como qualquer solução viável para I é também uma solução viável para I0.

(20)

Seja u0 ∈ T um vértice criado durante a conversão de I para I0. Se u0 está salvo por S0,

o vértice u ∈ V também está salvo, caso contrário, u0 seria atingido pelo incêndio através

da aresta {u, u0}.

Pela construção de I0, podemos afirmar que o número de vértices v ∈ V salvos por S0

em I0 é igual ao número de vértices w ∈ T salvos por S0 em I0.

Seja S uma solução ótima do PB para a instância I. Sabendo que S0 não é ótima

para a instância I do PB, podemos afirmar que o número de vértices salvos por S para a instância I é maior que o número de vértices salvos por S0 na instância I0. Aplicando-se

S à instância I0 do PBS obtemos uma solução melhor que S0 que, por hipótese, é ótima. Contradição.

O Algoritmo 1 é executado em tempo linear no número de vértices e arestas da ins-tância de entrada. Como toda solução S0 para uma instância I0 do PBS é viável para a

instância original I do PB, é possível converter uma solução S0 para a instância I do PB

em tempo linear. Logo, já que o PB é NP-difícil, temos que o PBS também é.

2.2

Modelo de Programação Linear Inteira

Nesta seção, apresentamos o modelo de programação linear inteira inicialmente proposto em [22] e adaptado para o PBS neste trabalho. O modelo a seguir contém dois conjuntos de variáveis binárias, b e d. Um vértice v está queimado em uma rodada t se bv,t = 1. De

maneira similar, um vértice u está defendido na rodada r se du,r = 1.

minimize X v∈T bv,L s.a. bv,t+ dv,t≥ bv0,t−1 ∀v ∈ V, ∀v0 ∈ N (v), ∀t | 1 ≤ t ≤ L (1) bv,t+ dv,t≤ 1 ∀v ∈ V, ∀t | 1 ≤ t ≤ L (2) bv,t− bv,t−1≥ 0 ∀v ∈ V, ∀t | 1 ≤ t ≤ L (3) dv,t− dv,t−1≥ 0 ∀v ∈ V, ∀t | 1 ≤ t ≤ L (4) X v∈V dv,t− dv,t−1≤ D ∀t | 1 ≤ t ≤ L (5) bv,0 = 1 ∀v ∈ B (6) bv,0 = 0 ∀v ∈ V \ B (7) dv,0 = 0 ∀v ∈ V (8) dv,t= 0 ∀v ∈ T, ∀t | 1 ≤ t ≤ L (9)

A restrição (1) define o comportamento do processo de propagação do incêndio. Um vértice v estará queimado na rodada t se qualquer vértice v0 adjacente a v está queimado

(21)

uma mesma rodada não pode estar queimado e defendido ao mesmo tempo. As restrições (3) e (4) mantêm o estado de queimado ou defendido de um vértice até a última rodada. Finalmente, restrição (5) limita o número de defesas realizadas em uma rodada.

Em [22], foi introduzida uma versão do modelo na qual a restrição 5 é substituída pela restrição (50). Essa versão apresentou grandes melhorias no tempo de resolução do

modelo. Neste trabalho, vamos também empregar essa substituição de restrições.

X

v∈V

dv,t ≤ t · D ∀t | 1 ≤ t ≤ L (50)

Como demonstrado em [22], a restrição (50) torna possível que soluções infactíveis

se-jam encontradas, pois podem ser feitas defesas que ultrapassam a quantidade limite em uma mesma rodada. Entretanto, é possível reparar em tempo polinomial uma solução infactível obtida a partir da resolução deste modelo. Considere que em uma determinada rodada, uma quantidade maior que D defesas é realizada. Um algoritmo de reparação, re-distribui as defesas excedentes para rodadas anteriores nas quais defesas adicionais podem ser incluídas.

As restrições (6), (7) e (8) definem o estado inicial da instância onde apenas os vértices de B estão queimados e nenhum vértice está defendido.

Este modelo tem como base o modelo apresentado em [22] com duas modificações. A função objetivo contabiliza apenas vértices de T que foram queimados, minimizando-os, e a restrição (9) impede que um vértice de T seja defendido em qualquer rodada.

Na descrição desse modelo, empregamos o valor L como um limitante superior para o número de rodadas nas quais o processo de propagação e controle do incêndio podem ocorrer. O valor atribuído a L é crucial para o desempenho durante a resolução do modelo. A princípio, L possui valor igual ao número de vértices da instância de entrada. Na Seçao 3.3.1, discutimos sobre a redução do valor de L e utilização do modelo como heurística.

2.3

Descendência entre vértices

O conceito de descendência entre vértices é utilizado durante este trabalho como critério para priorização da defesa de vértices. Considere os vértices u /∈ T e v ∈ T . Dizemos que v é descendente de u se existe um caminho mínimo do fogo até v passando por u. Calculamos vértices descendentes por meio de uma árvore de busca em largura, ou BFS (do inglês Breadth-first search). O Algoritmo 2 apresenta o procedimento que calcula o conjunto de descendentes dos vértices do grafo.

Na linha 1 do Algoritmo 2, faz-se uma busca em largura e encontra-se uma árvore BFS no grafo de entrada. Nas linhas 2 e 3, para cada vértice u do grafo, cria-se um conjunto de descendentes Du = ∅ se u /∈ T , ou Du = {u} caso u ∈ T . Nas linhas 5 e 6, para

cada vértice u, adicionamos em Du todos os descendentes dos vértices adjacentes a u que

(22)

Algoritmo 2 Algoritmo para cálculo de descendentes.

Entrada: Uma instância I do PBS em uma rodada r do processo de propagação de defesa.

Saída: Conjunto Du de vértices descendentes de cada vértice u.

1 Faça uma busca em largura a partir do foco de incêndio gerando uma árvore BFS 2 Du ← ∅ ∀ u ∈ V . Du representa o conjunto de descendentes do vértice u

3 Du ← {u} ∀ u ∈ T . Se u está em T , ele é descendente dele mesmo

4 para vértice u na ordem inversa de visitação da BFS faça 5 Seja lu o nível da árvore BFS em que u se encontra 6 Du ← {Du ∪ Dv ∀v | {u, v} ∈ E e lv = lu+ 1} 7 fim para procedimento. s a e b g c h d f j

(a) Instância I do PBS com D = 1

l0 l1 l2 l3 l4 s a e b g c h d f j

(b) Árvore de busca em largura no grafo da instância I enraizada em s. O i-ésimo nível de profundidade da árvore está rotulado como li

l0 l1 l2 l3 l4 s a e b g c h d f j

(c) Adição das arestas que estão no grafo da instância I. s {d, f, h} a {d, f } e {d, f, h} b {d, f, h} g {d, f, h} c {d, f } h {h, f } d {d} f {f } j ∅

(d) Respectivas descendências de cada vértice.

(23)

2.4

Distância Média do Fogo (DMF)

Vamos definir nesta seção o termo Distância Média do Fogo (DMF) para uma determinada rodada.

Considere o estado em que o grafo se encontra em uma rodada r do processo de propagação e defesa do incêndio. Para cada vértice u ∈ T , calcula-se a distância mínima do fogo até u. Calcula-se então a média de todas essas distâncias e isto é o que denotamos aqui por DMFr.

Quando um vértice u ∈ T está salvo, ou seja, não existe um caminho do fogo até u sem passar por um vértice defendido, a distância do fogo até u é infinita. Na prática, não podemos utilizar um valor infinito nos cálculos da distância média e, portanto, precisamos estabelecer um valor para substituí-lo. Discutimos sobre como fazer isso na seção 4.2.5.

O algoritmo que efetua o cálculo da DMFré uma busca em largura a partir dos vértices

queimados na rodada r. A Figura 2.3 ilustra o funcionamento deste procedimento de cálculo dessas distâncias.

s a e b g c h d f j

(a) Instância I do PBS em uma rodada r. s a e b c h d f

(b) Caminhos do fogo até os vérti-ces de T . s b h d f 1 2 3 3

(c) Tamanhos dos caminhos do fogo até os vértices de T

Figura 2.3: Cálculo da Distância Média do Fogo.

2.5

Meta-heurísticas

Uma meta-heurística é um framework que, por meio de diretrizes e estratégias indepen-dentes de problema, permite o desenvolvimento de algoritmos heurísticos de otimização. Alguns exemplos de meta-heurísticas são os algoritmos evolucionários [17], busca tabu[16] e GRASP [23].

Métodos exatos para resolução de problemas garantem que uma solução ótima será computada, porém, dependendo do tamanho da instância, o tempo necessário para encon-trar tal solução torna o uso de tal método proibitivo. Uma meta-heurística é desenvolvida com o objetivo de achar uma solução “suficientemente boa” em tempo “suficientemente curto”.

Devido à flexibilidade com a qual meta-heurísticas são projetadas, implementações adaptadas para problemas do mundo real normalmente são desenvolvidas com mais

(24)

facili-dade que métodos exatos. Entretanto, essa flexibilifacili-dade requer muitos ajustes específicos para cada problema estudado.

Nas próximas seções, descrevemos em detalhes o funcionamento da cada fase da meta-heurística GRASP e ressaltamos pontos importantes relacionados a cada aspecto do pro-cesso.

2.6

Meta-heurística GRASP

Nesta seção, discutimos a estrutura e o funcionamento da meta-heurística GRASP. Damos início com a definição do que são algoritmos gulosos e semi-gulosos. Na sequência, descre-vemos o que é e qual o objetivo de um procedimento de busca local. Por fim, apresentamos a estrutura de uma meta-heurística GRASP. Essa seção foi baseada em [10, 24, 12, 13] e recomendamos esses materiais para o leitor que desejar se aprofundar mais no assunto.

2.6.1

Algoritmos gulosos e semi-gulosos

Algoritmos gulosos são caracterizados pela realização de escolhas ótimas em um cenário local com a intenção de que tais escolhas levem a uma solução ótima global mantendo uma boa eficiência [10]. Mesmo não produzindo soluções ótimas em todos os casos, algorit-mos gulosos são úteis para diversos problemas. Nesta seção, apresentaalgorit-mos um problema para o qual um algoritmo guloso encontra a solução ótima e outro problema para o qual utilizamos esse tipo de algoritmo como heurística.

Algoritmos gulosos são bastante úteis, por exemplo, quando sua escolha passa a ser semi-gulosa. Ao fim desta seção, discutimos como uma escolha semi-gulosa pode ser aplicada e quais são suas vantagens.

Considere o problema de encontrar uma árvore geradora mínima em um grafo G com conjunto de vértices V = {1, 2, ..., n} e arestas E ⊆ {(i, j) | i, j ∈ V, i 6= j}. Para cada aresta e ∈ E está atribuído um custo ce.

Algoritmo 3 Algoritmo guloso para a construção de uma árvore geradora mínima em um grafo.

Entrada: Grafo G.

Saída: Uma árvore geradora mínima A do grafo G.

1 A ← ∅ 2 C ← E 3 enquanto C 6= ∅ faça 4 e ← argmin{ce| e ∈ C} 5 A ← A ∪ {e} 6 C ← C\{f ∈ C | A ∪ {f }contém ciclo} 7 fim enquanto 8 return A

No Algoritmo 3, é apresentado o procedimento introduzido por Kruskal [5], um al-goritmo guloso ótimo para o problema de encontrar uma árvore geradora mínima em

(25)

um grafo. Em geral, esse tipo de procedimento guloso constrói uma solução de maneira incremental.

Na linha 1, construímos uma solução inicial A como uma árvore vazia. Na linha 2 separamos em um conjunto C, as arestas que podem ser adicionadas em A. Na repetição das linhas 3 a 6, escolhemos uma aresta e ∈ C com menor custo e a incluimos em A. Por fim, atualizamos C com as arestas que ainda podem ser incluídas em A.

Enquanto vários problemas clássicos como o problema da mochila fracionária, árvore geradora mínima e escalonamento de intervalos podem ser resolvidos por um algoritmo guloso, outros problemas, como o problema de empacotamento e o problema da mochila binária não possuem um algoritmo guloso capaz de resolvê-los de maneira ótima.

Considere agora o problema da mochila binária. Seja J = {1, 2, ..., n} um conjunto de itens. Sejam C = {c1, c2, ..., cn} e W = {w1, w2, ..., wn} custos e pesos associados a

cada item i ∈ J e Q a capacidade da mochila. Encontre um subconjunto S ⊆ J tal que P

i∈Swi ≤ Q e Pi∈Sci é máxima.

No Algoritmo 4 é apresentado um algoritmo guloso bastante conhecido para o problema da mochila binária. A ideia consiste em ordenar os itens de J por seu custo benefício, calculado por fi = wcii para um item i ∈ J e adicionar itens na mochila até que nenhum

outro item possa ser incluído. Considere F = {f1, f2, ..., fn}.

Algoritmo 4 Algoritmo guloso para o problema da mochila binária. Entrada: Conjunto de itens J e capacidade da mochila Q.

Saída: Conjunto de itens S que devem ser empacotados gerado de maneira gulosa.

1 S ← ∅ 2 C ← {j ∈ J | wj ≤ Q } 3 enquanto C 6= ∅ faça 4 i ←argmax{ci wi | i ∈ C} 5 S ← S ∪ {i} 6 C ← {j ∈ C \ S | (P i∈Swi) + wj ≤ Q} 7 fim enquanto 8 return S

Apesar de achar sempre uma solução viável, existem instâncias para as quais o Al-goritmo 4 não encontra uma solução ótima. Por exemplo, considere a instância em que J = {1, 2, 3}, Q = 10, C = {10, 18, 19}, W = {2, 9, 10}. Calculamos F = {5, 2, 1.9}. Utilizando o Algoritmo 4, obtemos a solução S = {1} com valor objetivo igual a 10. Po-demos concluir que S não é ótima pois uma solução viável S0 = {2} possui valor objetivo

18.

Considere agora o Algoritmo 5 que é similar ao Algoritmo 4 modificando-se apenas a escolha de um item de C na linha 4. No lugar de escolher o item com maior custo benefício, escolhemos aleatoriamente um item com um dos k maiores custo benefícios. Considerando que k = 2, em uma única execução do Algoritmo 5, existe 50% de chance de alcançarmos a solução S0 mencionada acima. Para o exemplo apresentado anteriormente, no pior caso

do Algoritmo 5 vamos conseguir pelo menos uma solução tão boa quanto a encontrada pelo Algoritmo 4. Se considerarmos k = 3 e executarmos o Algoritmo 5 por 5 vezes, nossa chance de obter uma solução ótima S∗ = {3} é de aproximadamente 86%. Ao executá-lo

(26)

10vezes, nossas chances sobem para aproximadamente 99%.

Algoritmo 5 Algoritmo semiguloso para o problema da mochila binária. Entrada: Conjunto de itens J e capacidade da mochila Q.

Saída: Conjunto de itens S que devem ser empacotados gerado de maneira semi-gulosa.

1 S ← ∅ 2 C ← j ∈ J | wj ≤ Q 3 enquanto C 6= ∅ faça 4 i ←aleatorio{ci wi | i ∈ C e fi é um dos k maiores fi ∈ C} 5 S ← S ∪ {i} 6 C ← {j ∈ C \ S} | (Pi∈Swi) + wj ≤ Q 7 fim enquanto 8 return S

Algoritmos semi-gulosos são uma das bases mais importantes para o funcionamento do GRASP. Com k = 1, conseguimos um algoritmo guloso e com k = |C| obtemos um algoritmo totalmente aleatório.

Outra maneira de definir um critério semi-guloso, ao invés de fixar uma quantidade k, é escolher aleatoriamente um elemento dentre aqueles com custo maior ou igual a cmax− α · (cmax− cmin), onde cmin e cmax são o menor e maior custos dos elementos em

C originalmente. Dessa forma, para obter um algoritmo guloso, definimos α = 0 e para conseguir um algoritmo totalmente aleatório, definimos α = 1.

Nesta seção, foram discutidos algoritmos gulosos, semi-gulosos e sua importância para a qualidade das soluções encontradas. Na próxima seção, vamos discutir o funcionamento e utilização de técnicas de busca local.

2.6.2

Busca Local

Métodos de busca local têm início a partir de uma solução viável, visitam soluções na sua vizinhança e terminam quando não é possível encontrar uma solução melhor. Nesta subseção, vamos discutir como representar uma solução, navegar em uma vizinhança e técnicas comumente utilizadas em processos de busca local.

Considere o problema da mochila binária e a instância apresentados na seção anterior. Para este problema, representaremos uma solução como um conjunto contendo os itens que devem ser adicionados à mochila.

Uma solução do problema da mochila possui diferentes vizinhanças. De modo geral, duas soluções S e S0 são vizinhas se é possível transformar S em S0 (ou o oposto) por

meio de operações simples.

Considere a operação de troca do item s1 pelo item s2 em uma solução S. Vamos nos

referir a tal troca pela nomenclatura Rs1,s2(S). Assim, definimos por vizinhança N1 da

solução S, todas as soluções obtidas por uma operação do tipo Rs1,s2(S) de tal modo que

s1 ∈ S e s2 ∈ S/ .

Considere as soluções S = {1} e S0 = {2} para o exemplo apresentado na seção

anterior. É possível, a partir de S, obter S0 por meio de uma operação R

1,2(S), logo,

pode-se dizer que S e S0 são soluções vizinhas em N 1.

(27)

Mesmo existindo diversas maneiras de se implementar uma busca local, as abordagens de first improving e best improving são bastante comuns na literatura. A ideia de first improving é, a partir de uma solução S, assim que for encontrada uma solução vizinha S0 melhor que S, reiniciar o processo de busca local a partir de S0. Dada uma vizinhança N,

denotamos por N(S) o conjunto de soluções vizinhas de S. No Algoritmo 6 é apresentado um pseudocódigo para essa técnica.

Algoritmo 6 Algoritmo de busca local com a técnica de first improving. Entrada: Solução S.

Saída: Solução S0 encontrada na vizinhança ou S caso nenhuma solução vizinha melhor seja encontrada.

1 S0 ← S

2 para S00 ∈ N (S0) faça . N (S0) representa a vizinhança da solução S0

3 se S00 é melhor que S0 então

4 S0 ← S00

5 fim se

6 fim para

7 devolve S0

A técnica de best improving, a partir de uma solução S, busca a melhor solução S0 na

vizinhança de S e, então, reinicia o processo de busca local a partir de S0. No Algoritmo 7

é apresentado um pseudocódigo para essa técnica.

Algoritmo 7 Algoritmo de busca local com a técnica de best improving. Entrada: Solução S.

Saída: Solução S0 ótima local.

1 melhorou ← TRUE

2 S0 ← S

3 S∗ ← S

4 enquanto melhorou faça

5 melhorou ← FALSE 6 para S00 ∈ N (S0) faça

7 se S00 é melhor que S∗ então

8 S∗ ← S00

9 fim se

10 fim para

11 se S∗ é melhor que S0 então

12 S0 ← S∗

13 melhorou ← TRUE

14 fim se

15 fim enquanto

16 devolve S0

Ambas abordagens são amplamente utilizadas na literatura. Ao empregar o first im-proving, o custo computacional necessário para realizar a busca local é menor do que best

(28)

improving, porém, resultados de melhor qualidade são normalmente encontrados quando se utiliza o best improving.

2.6.3

GRASP

A meta-heurística GRASP pode ser divididas em fases. O número de fases depende de como a meta-heurística foi projetada [24]. De modo geral, pelo menos duas fases são comuns. Inicialmente, uma fase de construção utiliza um algoritmo semi-guloso para obter uma solução viável para o problema. Em seguida, uma fase de busca local explora uma vizinhança da solução obtida na fase de construção de modo a obter um ótimo local utilizando um dos métodos descritos na seção anterior. Ao final de todas as iterações, a melhor solução encontrada é reportada.

Algoritmo 8 Implementação básica de um GRASP Entrada: Instância I do PBS.

Saída: Solução S da instância I do PBS.

1 S ← ∅

2 enquanto condição de parada não é satisfeita faça

3 S0 ←Construção-Gulosa() 4 S00 ← Busca-Local(S0)

5 se S00 é melhor que S então

6 S ← S00

7 fim se

8 fim enquanto

9 devolve S

No Algoritmo 8, apresentamos o pseudocódigo da meta-heurística GRASP padrão. Na literatura, o GRASP é utilizado em uma grande diversidade de problemas de otimização. Entre eles, podemos citar problemas de roteamento, agendamento, lógicos, particiona-mento, telecomunicações e diversos outros tipos de problemas [13].

Diferentes versões dessa meta-heurística são propostas, muitas delas incluem procedi-mentos de reinicialização, diversificação e intensificação durante as fases do GRASP [12]. Note que, em nenhum momento, no Algoritmo 8, informações sobre outras iterações são utilizadas para melhorar os resultados da iteração atual. Em outras palavras, cada iteração é independente das demais. Com a finalidade de mudar essa característica, um processo chamado de Path-Relinking vem sendo utilizado em trabalhos atuais da lite-ratura. Esse processo consiste em, inicialmente, selecionar soluções de alta qualidade (soluções de elite) durante as iterações do GRASP e posteriormente analisar o caminhos entre duas ou mais com o intuito de encontrar uma melhor [11].

Em [12, 13], é possível encontrar uma revisão bibliográfica que apresenta em detalhes, diversas variações e problemas para os quais a meta-heurística GRASP já foi aplicada. Neste trabalho, propomos a adição de uma fase na meta-heurística que utiliza PLI (veja seção 3.3).

(29)

Capítulo 3

Metodologia

Neste capítulo, descrevemos em detalhes quais técnicas e critérios foram aplicados durante a realização dos experimentos computacionais. Apresentamos implementações de algorit-mos semi-gulosos para construção de soluções factíveis, procedimento de busca local por meio de um backtracking limitado e um processo de refinamento de soluções utilizando programação linear inteira.

3.1

Heurísticas Construtivas

Durante este trabalho, implementamos heurísticas construtivas para o PBS e as utilizamos em uma implementação da meta-heurística GRASP (seção 3.4). O processo construtivo depende de uma escolha gulosa sobre qual vértice deve ser defendido em uma determinada rodada do processo de defesa.

Após experimentar com diferentes critérios, seguindo uma ideia já proposta e anali-sada em trabalhos anteriores sobre o PB, escolhemos defender os vértices imediatamente ameaçados pelo fogo. Essa técnica foi inicialmente proposta em [15] e adaptada para o PBS durante o presente trabalho.

Com o alastramento do incêndio, o número de vértices imediatamente ameaçados tende a aumentar a cada rodada. Dessa forma, utilizar apenas o critério de proximidade ao fogo não é suficiente para decidir quais vértices devem ser defendidos. Logo, precisamos de outro critério para escolher dentre os vértices imediatamente ameaçados, quais serão defendidos.

Descrevemos agora os principais critérios utilizados durante este trabalho.

3.1.1

ThDesc

Na estratégia ThDesc, em uma rodada do processo de defesa, para cada vértice ime-diatamente ameaçado pelo fogo, definimos a prioridade com a qual um brigadista deve defendê-lo de acordo com o número de descendentes de elite desse vértice que ainda podem ser queimados.

A Figura 3.1 ilustra essa escolha de acordo com o procedimento para cálculo de des-cendentes, dado na seção 2.3. Nela, os vértices imediatamente ameaçados pelo fogo são b

(30)

e g. Entre os dois, o vértice g possui o maior número de descendentes na elite e, assim, possui uma maior prioridade para ser defendido.

s a e b g c h d f j

(a) Instância I do PBS com D = 1

s {d, f, h} a {d, f } e {d, f, h} b {d, f } g {d, f, h} c {d, f } h {h, f } d {d} f {f } j ∅

(b) Respectivas descendências de cada vértice.

Figura 3.1: Ilustração do cálculo de descendentes em uma instância

3.1.2

ThPath

Na estratégia ThPath, em uma rodada r, para cada vértice u imediatamente ameaçado pelo fogo, calcula-se DMFr+1 caso u seja defendido na rodada r. Definem-se então as

prioridades de defesa para cada um desses vértices de acordo com o valor de DMFr+1 caso

(31)

s a e b g c h d f j

(a) Instância I após a rodada inicial s a e b g c h d f j (b) Realização da defesa do vértice a s a e b g c h d f j

(c) Caminhos mínimos até T s b h d f 1 2 3 3

(d) Distâncias mínimas até T

s a e b g c h d f j

(e) Instância I após a rodada inicial s a e b g c h d f j (f) Realização da defesa do vértice e s a e b g c h d f j

(g) Caminhos mínimos até T s b h d f 1 5 3 3

(h) Distâncias mínimas até T

Figura 3.2: Ilustração do cálculo de DMFr em uma instância.

Na Figura 3.2, ao defender o vértice a, a distância média do fogo na rodada posterior é 8

3. Se a defesa for realizada no vértice e, a distância média do fogo na rodada posterior

é 11

3. De maneira a maximizar a DMF da rodada posterior, escolhemos defender o vértice

e.

3.1.3

Construção semi-gulosa

Apresentamos, nessa seção, o pseudocódigo do algoritmo utilizado durante a fase de cons-trução de uma solução factível da meta-heurística GRASP.

Algoritmo 9 Processo de Construção Iterativa de uma solução Entrada: Instância I do PBS.

Saída: Solução S para a instância I do PBS.

1 S ← ∅

2 enquanto propagação do fogo continua faça

3 R ← {Vértices-Imediatamente-Ameaçados()};

4 Ordena-Vértices-Por-Critério(R); . O critério pode ser ThDesc ou ThPath 5 u ←Escolha-Vértice(R); . A escolha depende do α, ver seção 4.3

6 S ← S ∪ {u};

7 Propaga-se o incêndio; 8 fim enquanto

(32)

No Algoritmo 9, construímos uma solução selecionando um vértice para ser defendido a cada rodada. As linhas 4 e 5 variam de acordo com qual critério será utilizado na escolha deste vértice e do valor atribuído ao parâmetro α.

3.2

Busca Local

Como discutido anteriormente, em um processo de busca local, deseja-se, a partir de uma solução inicial, encontrar uma solução em sua vizinhança com melhor valor de função objetivo.

Para este problema, desenvolvemos um procedimento de busca local que funciona como um backtracking limitado. Inicialmente, definimos a vizinhança de uma solução S como sendo todas as soluções S0 em que as k primeiras defesas são idênticas às defesas

realizadas em S. Por exemplo, seja S1 = (u, v, w) uma solução que defende os vértices u,

v e w nessa ordem. Analogamente, seja S2 = (u, v, t)uma solução que defende os vértices

u, v e t nessa ordem. A solução S2 é vizinha da solução S1 quando k = 2. Durante

o processo de busca local implementado neste trabalho, para diferentes tamanhos de k, buscamos uma solução numa vizinhança de uma solução inicial S. A ideia principal do procedimento é revisar defesas realizadas em uma solução S e gerar uma nova solução S0

mantendo parcialmente as defesas realizadas em S.

No Algoritmo 10 apresentamos um pseudocódigo para o algoritmo de busca local descrito.

Algoritmo 10 Algoritmo de busca local utilizando um backtracking limitado Entrada: Solução S.

Saída: Solução S0 encontrada na vizinhança ou S caso nenhuma solução melhor seja encontrada.

1 r ← 0

2 enquanto r < |S| faça

3 r ← r + 1

4 S0 ← S[1 : r − 1] . Mantém-se em S0 as defesas realizadas em S até a rodada r − 1

5 proíbe-sea defesa do vértice S[r] . S[r] é o vértice defendido em S na rodada r

6 S0 ←Constrói-Solução(S0) . Finaliza-se o processo de construção de S0

7 se S0 é melhor que S então

8 S ← S0

9 fim se

10 fim enquanto

11 devolve S

3.3

Refinamento

Na versão do GRASP proposta neste trabalho, adicionamos uma nova etapa à meta-heurística. A etapa de refinamento implementada neste trabalho faz uso da programação linear inteira para encontrar uma solução ótima de um modelo reduzido. Utilizando

(33)

dados obtidos durante a execução da meta-heurística, foram desenvolvidas duas variações do modelo de PLI apresentado na Seção 2.2. As próximas duas seções apresentam em detalhes tais modificações.

3.3.1

Modelo PLI RR

Seja R o número de rodadas necessárias até que a propagação do fogo seja interrompida na melhor solução heurística computada pelas iterações do GRASP. Modificamos o modelo de PLI (veja Seção 2.2) de modo a permitir que defesas sejam realizadas apenas nas primeiras R rodadas.

Tal restrição permite que o espaço de soluções seja restringido de tal maneira que resultados são obtidos em menor tempo em relação a uma execução completa do modelo original (Seção 4.3.6).

Para esta variação, mantém-se o modelo original e acrescentam-se as restrições

dv,t− dv,t−1 = 0 ∀v ∈ V, ∀t | R < t ≤ L,

as quais impedem que novas defesas sejam realizadas a partir da rodada R.

3.3.2

Modelo PLI RV

Essa variação tem como objetivo reduzir o tamanho do modelo de PLI através da limitação do conjunto de vértices defensáveis. Considere o conjunto F com todas as soluções obtidas durante as fases de construção e busca local do GRASP. Para uma instância com n vértices, escolhemos as n melhores soluções em F . Seja F0 esse conjunto. Finalmente, criamos um

conjunto W com os vértices presentes nas soluções de F0.

Nesta variação, mantemos o modelo original e acrescentamos as seguintes restrições:

dv,t = 0 ∀v ∈ V \ W, ∀t | 1 < t ≤ L

3.4

GRASP para o PBS

Apresentamos, no Algoritmo 11, um pseudocódigo que descreve como a meta-heurística GRASP foi implementada neste trabalho. Esta implementação contém 3 fases. A primeira fase é a construção semi-gulosa de uma solução viável, a qual é seguida da fase de busca local. Após o fim das iterações, na terceira fase, uma das versões de refinamento das seções anteriores é executada.

A melhor solução encontrada durante todo o processo é retornada pelo algoritmo. No Algoritmo 11, os procedimentos realizados nas linhas 3, 4 e 9 dependem da con-figuração de parâmetros escolhida para a meta-heurística. No capítulo seguinte, vamos

(34)

Algoritmo 11 Estrutura do GRASP implementado neste trabalho.

1 S ← ∅

2 enquanto critério de parada não é atingido faça

3 S0 ←Constrói-Solução();

4 S0 ←Busca-Local(S0);

5 se S0 é melhor que S então

6 S ← S0

7 fim se

8 fim enquanto

9 S ← Refina-Solução(S) . Tal processo pode utilizar o Modelo RR ou o Modelo RV

10 devolve S

discutir quais são esses parâmetros e comparar os resultados obtidos ao modificá-los.

3.5

Análise dos resultados

Nas próximas seções, realizamos comparações entre variações da meta-heurística. Para cada comparação, aplicamos o teste de Wilcoxon como um teste estatístico para decidir qual das versões que estão sendo comparadas apresenta melhores resultados.

O teste de Wilcoxon é um teste não paramétrico que pode ser utilizado para determinar se duas amostragens de dados foram selecionadas de uma mesma distribuição. Em outras palavras, empregamos o teste de Wilcoxon para determinar se duas amostragens são diferentes de forma significativa.

Para ilustrar o emprego do teste, considere o seguinte exemplo. Dois alunos prestaram o mesmo exame. Para cada questão do exame foi atribuída um valor de 0 a 100 dependendo de quão precisa foi a resposta do aluno. O professor de ambos os alunos deseja, por meio da análise das respostas para cada questão, verificar a hipótese que os dois alunos são igualmente bons.

(35)

1 2 3 4 5 6 7

original absoluto ranks ranks com sinal Aluno X Aluno Y Xi− Yi Xi − Yi Xi− Yi Questão 1 78 78 0 0 – – Questão 2 24 24 0 0 – – Questão 3 64 62 +2 2 1 +1 Questão 4 45 48 -3 3 2 -2 Questão 5 64 68 -4 4 3.5 -3.5 Questão 6 52 56 -4 4 3.5 -3.5 Questão 7 30 25 +5 5 5 +5 Questão 8 50 44 +6 6 6 +6 Questão 9 64 56 +8 8 7 +7 Questão 10 50 40 +10 10 8 +8 W = 18 n = 8 As colunas 2 e 3 apresentam a pontuação obtida pelos alunos X e Y, respectivamente. A coluna 4 possui a diferença entre as notas Xi e Yi apresentadas nas colunas anteriores.

A coluna 5 é composta pelos valores absolutos coluna 4. A coluna 6 possui os ranks dos valores não nulos da coluna 5. Na última coluna, são adicionados novamente os sinais de acordo com seu valor original.

Finalmente, somam-se todos os valores de rank com sinal em W e n é o número de elementos não nulos.

Se todos os ranks são valores positivos, sabemos que o valor máximo de W é n(n+1) 2 .

Para este caso, o valor máximo para W seria 36. De forma análoga, o valor mínimo para W seria −36. Para este exemplo, uma preponderância de elementos positivos sugere que o aluno X obteve pontuações mais altas que o aluno Y , assim como a preponderância de valores negativos sugere o contrário.

Pela hipótese nula em que não há diferença significativa entre os dois alunos, podemos esperar que o valor de W tenda a 0 se a hipótese for verdadeira.

A medida em que o valor de n aumenta, a distribuição desses valores se aproxima de uma distribuição normal. Para um n ≥ 10, já possuímos uma distribuição próxima suficiente da normal para podermos calcular o z-ratio, originalmente, dado por:

z = W − µW σW

onde µW é a média e σW é o desvio padrão. Algumas simplificações podem ser

rea-lizadas. Primeiramente, sabemos que, pela hipótese nula, não há diferença significativa entre os alunos, dessa maneira, espera-se que o valor da média seja 0, assim:

(36)

µW = 0

É possível mostrar que o desvio padrão de uma distribuição normal pode ser calculado por [2]:

σW =

r

n(n + 1)(2n + 1) 6

Para o exemplo acima,

σW =

r

8(9)(17)

6 = 14.28

O z-ratio calculado deve incluir uma correção de ±0.5 para continuidade. Já que W pode assumir valores reais devido à maneira com a qual atribuímos os ranks, adicionamos 0.5 se W > µW e subtraímos 0.5 caso contrário. Como µW = 0, reescrevemos a equação

da seguinte forma:

z = W − 0.5 σW

Ou, para o nosso exemplo:

z = 18 − 0.5

(37)

Níveis de significância Teste direcional 0.05 0.25 0.01 0.005 0.0005 Teste não-direcional – 0.05 0.02 0.01 0.001 z_critical 1.645 1.960 2.326 2.576 3.291

Tabela 3.1: Níveis de significância de z

Um teste como o de Wilcoxon pode ser direcional ou não-direcional. Em um teste direcional, a hipótese que estamos avaliando indica um sentido, por exemplo, o Aluno X é melhor que o aluno Y . Em um teste não-direcional, a princípio, não sabemos se o efeito esperado é para uma direção ou outra. O teste utilizado nesse exemplo é não-direcional, pois nossa hipótese é de que os alunos são igualmente bons.

Assim, continuando com o exemplo anterior, como o valor do z-ratio que calculamos está abaixo de 1.960, ao empregarmos um teste de Wilcoxon não-direcional, podemos afirmar com 95% de confiabilidade (ver célula correspondente ao nível de significância 0.05 na Tabela 3.1) que existe uma diferença significativa entre os dois alunos.

Durante este trabalho, cada variação da meta-heurística é executada em 40 instâncias selecionadas. Para cada número de vértices (50, 100, 200, 300 e 400) e quantidade de ares-tas removidas (0%, 25%, 50% e 75%) foram selecionadas duas instâncias aleatoriamente.

(38)

Capítulo 4

Experimentos Computacionais

Neste capítulo, vamos descrever e discutir os experimentos computacionais realizados no decorrer deste trabalho. Inicialmente, apresentamos o ambiente computacional e o processo de geração de instâncias desenvolvido. Em seguida, detalhamos o processo de escolha dos parâmetros dos algoritmos propostos e realizamos diversas comparações entre variações da meta-heurística desenvolvida.

4.1

Ambiente

Os experimentos realizados durante as investigações reportadas nesta dissertação foram executados em uma máquina portando um processador Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz com 64GB de memória RAM, rodando o sistema operacional Ubuntu 18.04.2 LTS. Todos os modelos de PLI foram resolvidos utilizando o gurobi em sua versão 8.1.1. Em sua totalidade os experimentos foram efetuados com o gurobi em sua configuração padrão. Assim, todas as threads disponíveis na máquina foram utilizadas e nenhuma limitação de memória foi definida na entrada. Além disso, os algoritmos para resolução da relaxação na raiz da árvore de enumeração, o tempo gasto com heurísticas primais e estratégias de uso dos planos de corte não foram modificados, permanecendo em modo automático (como é o padrão do gurobi). Mais informações sobre a configuração padrão podem ser encontradas em [4].

4.2

Geração de Instâncias

Devido à falta de trabalhos experimentais para o PBS, tornou-se necessária a criação de um conjunto de instâncias de teste para serem utilizadas durante este trabalho. Nas seções seguintes, vamos descrever o processo de geração dessas instâncias desde a construção do grafo até a escolha de vértices de elite (conjunto T ) e do foco de incêndio. Nessa dissertação, trabalhamos com instâncias nas quais apenas um brigadista está disponível em cada rodada, assim como todas as instâncias de teste contêm apenas um foco de incêndio. Esta decisão foi tomada com o propósito de realizar uma análise mais profunda sobre esse tipo de instância.

(39)

4.2.1

Geração de grafos planares

Com o intuito de gerar instâncias similares àquelas que modelam casos do mundo real, de-cidimos realizar nossos experimentos com grafos planares, já que eles se adequam bastante bem para a representação de regiões geográficas (vértices) e suas relações de vizinhança (arestas), através das quais um incêndio pode se alastrar.

Os grafos usados neste trabalho foram gerados a partir de uma triangulação de De-launay [3] de um conjunto de pontos no plano, cuja implementação está disponível na biblioteca Stanford Graph Base (SGB) [20]. A escolha por uma triangulação foi feita devido a que esta constitui um grafo planar maximal no número de arestas.

Uma triangulação de Delaunay para um conjunto de pontos P , é uma triangulação onde nenhum ponto P está dentro da circunferência circunscrita a qualquer triângulo da triangulação [3]. Na Figura 4.1 está ilustrada a triangulação de Delaunay para um conjunto de pontos.

Figura 4.1: Exemplo da triangulação de Delaunay para um conjunto de pontos.

Foram gerados grafos planares a partir da triangulação de Delaunay de um conjunto de pontos no plano escolhidos de maneira aleatória, e através da remoção de algumas arestas, foram produzidas instâncias com 50, 100, 200, 300, 400 e 500 vértices.

4.2.2

Escolha dos vértices de T

Para entender melhor o procedimento empregado na construção do conjunto T , considere a seguinte situação. Suponha que dois vértices de elite u e v são adjacentes entre si e não estão queimados. Se o vértice u é atingido pelo incêndio em uma rodada r, o vértice v será garantidamente queimado na mesma rodada ou na rodada posterior. Isso é verdade, pois a defesa de um vértice de T é proibida. Assim, uma vez que o incêndio atinge um vértice vizinho a um vértice de T , é impossível salvar tal vértice.

(40)

Considere agora um subgrafo S induzido pelos vértices de T . Suponha que S é conexo, ou seja, existe um caminho entre quaisquer dois vértices de S passando apenas por vértices do próprio conjunto. A partir do argumento anterior, sabemos que uma vez que o incêndio atinge qualquer vértice de S, todos os outros vértices deste subgrafo serão queimados em rodadas posteriores, independentemente das defesas que forem feitas.

Assim, durante este trabalho, desenvolvemos instâncias onde esse caso não ocorre. Ou seja, as instâncias de teste não possuem arestas ligando dois vértices de T .

Dito isto, seja G um grafo gerado pelo processo descrito nas seções anteriores. Pre-cisamos agora decidir quais vértices fazem parte de T de forma que não existam vértices adjacentes entre si. Para isso, encontramos um conjunto independente maximal H em G e, após escolher um vértice u ∈ H como foco de incêndio (ver seção a seguir), colocamos em T os vértices de H\{u}.

4.2.3

Escolha do foco de incêndio

Considere novamente o conjunto de vértices H obtido pelo processo descrito anterior-mente. Seja a distância máxima de um vértice v ∈ H a maior distância mínima entre v e qualquer outro vértice de H no grafo. Definimos como vértice central de H, um vértice deste conjunto cuja distância máxima é mínima. Deste modo, para criar as instâncias do nosso benchmark, um vértice u respeitando esta propriedade é escolhido como sendo o foco do incêndio. a b c d e f g h i j (a) Grafo G. a b c d e f g h i j

(b) Conjunto independente maximal T .

a b c d e f g h i j

(c) Vértice central d como foco do incêndio.

Figura 4.2: Escolha dos vértices de T e foco de incêndio.

4.2.4

Densidade da instância

Nesta seção, vamos discutir a densidade de uma instância gerada pelos procedimentos descritos previamente, sua relação com a quantidade de vértices salvos em uma solução ótima e um procedimento para remoção de arestas e ajuste de instâncias.

Um grafo gerado a partir de uma triangulação é o mais denso grafo planar de arestas retas para um dado conjunto de pontos. Tal densidade fez com que, para as instâncias geradas neste trabalho, o número de vértices de elite que possam salvos em uma solução ótima seja baixo em relação ao total de vértices em T .

Com o intuito de criar instâncias nas quais uma fração maior de vértices de elite é salva, desenvolvemos um procedimento para reduzir a densidade do grafo gerado a partir da triangulação por meio da remoção de uma porcentagem de suas arestas.

Na Figura 4.3, apresentamos resultados que suportam a decisão de remover arestas com a intenção de tornar possível o salvamento de uma quantidade maior de vértices.

(41)

Para um valor p no eixo horizontal, calculamos o número de instâncias nas quais uma solução ótima salva pelo menos p% dos vértices de elite. Os resultados apresentados na Figura 4.3 são para instâncias com 0%, 25%, 50% e 75% de arestas removidas a partir da triangulação. Cada um desses grupos contém 100 instâncias.

10 20 30 40 50 60 70 80 90 100 20 40 60 80 100

Porcentagem de vértices de elite salvos em instâncias com 100 vértices

Número de instâncias 0% 25% 50% 75%

Figura 4.3: Porcentagem de vértices de T salvos ao variar a densidade do grafo.

A partir de uma instância I composta por grafo G correspondente a uma triangulação de pontos no plano, conjunto de vértices de elite T e por um foco de incêndio u, geramos uma nova instância com menor densidade através do seguinte procedimento:

1. Encontre uma árvore geradora A de maneira aleatória em G. 2. Tome G0 = G\A.

3. Remova k% das arestas de G0.

4. Seja M = T ∪ {u}.

5. Expanda M para um conjunto independente maximal no grafo G0∪ A.

6. Se não houver em M um vértice com grau maior que 1, rejeite a instância. Caso contrário, encontre o vértice u0 com grau maior do que 1 de M mais central em

G0∪ A, em relação aos vértices de M. 7. Crie o conjunto de elite T0 = M \{u0}.

8. Crie uma nova instância I0 composta pelo grafo G0∪ A, conjunto de elite T0 e foco

de incêndio u0.

Para todas as combinações entre números de vértices (50, 100, 200, 300 e 400) e arestas removidas (0%, 25%, 50% e 75%), 100 instâncias foram geradas, totalizando 2000 instâncias criadas.

(42)

4.2.5

Vértices salvos durante o processo

Como discutido anteriormente (seção 2.4), ao utilizar a heurística de ThPath, no cálculo da DMFr, é possível que existam vértices inatingíveis pelo fogo.

Vamos relembrar o funcionamento do ThPath. Explicamos que, entre os vértices ame-açados em uma rodada r, defendemos aquele que, quando defendido, maximiza o DMF da rodada r + 1.

Ao simular a defesa de um vértice u, quanto mais vértices estiverem desconexos do fogo, maior deveria ser a “bonificação” dada à probabilidade de defender esse vértice. De agora em diante, vamos nos referir a essa bonificação como θ.

Inicialmente, pensamos em representar θ como o número de vértices da instância que está sendo resolvida (n), representando, dessa forma, o tamanho do maior caminho possível entre dois vértices no grafo.

Com o intuito de encontrar um limitante mais justo para θ, decidimos considerar o valor de √n. Essa decisão é baseada no fato de que a esperança para a maior distância mínima entre dois vértices em uma triangulação de Delaunay é, de fato,√n [9].

Na próxima seção, vamos discutir a escolha do parâmetro α, que representa o nível de aleatoriedade da meta-heurística, e do parâmetro θ, que determina o valor da bonificação na escolha de qual é o próximo a ser defendido.

4.3

Ajuste de Parâmetros

Para o ajuste de parâmetros das nossas heurísticas, recorremos à ferramenta irace [21]. Essa ferramenta busca encontrar a melhor configuração de parâmetros para um grupo de instâncias por meio de uma extensão do procedimento de Iterated F-race proposto em [7] por Balaprakash.

Para cada tamanho de grafo (50, 100, 200, 300, 400 e 500 vértices), e cada quantidade de arestas removidas da triangulação de Delaunay (0%, 25%, 50% e 75%), foram seleci-onadas duas instâncias de maneira aleatória para fazer parte do conjunto empregado no ajuste de parâmetros. Dessa forma, um total de 48 instâncias foram selecionadas.

Utilizando a ferramenta irace, realizamos a configuração dos parâmetros α e θ e obti-vemos os seguintes resultados:

Domínio ThDesc ThPath

α (0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9) 0.9 0.5

θ (n, √n) – √n

Tabela 4.1: Configuração de parâmetros com irace

4.3.1

Comparações entre heurísticas

Nas próximas seções, serão apresentadas comparações entre versões da meta-heurística GRASP desenvolvida neste trabalho. Nosso objetivo é encontrar a melhor versão que usa o ThPath na fase de construção e a melhor versão que usa o ThDesc. Finalmente,

Referências

Documentos relacionados

Geraldo Laércio, Bairro Tavares - Ouro Preto/MG Coordenadas: X= -43.519574 | Y= -20.409799 | Datum: WGS84. Classificação: AI - Área Contaminada

Classificação: ACI - Área Contaminada sob Intervenção Etapa de Gerenciamento: Intervenção/Remediação Fonte de contaminação: Vazamento ou Infiltração. Meios Impactados:

Classificação: AR - Área Reabilitada para o uso declarado Uso Declarado: Posto de Combustível Etapa de Gerenciamento: -. Fonte de contaminação: Vazamento

Classificação: AR - Área Reabilitada para o uso declarado Uso Declarado: Posto de Combustível Etapa de Gerenciamento: -. Fonte de contaminação: Vazamento

Classificação: AR - Área Reabilitada para o uso declarado Uso Declarado: Posto de Combustível Etapa de Gerenciamento: -.. Fonte de contaminação: Vazamento

 77 áreas são classificadas como AMR - Área em Processo de Monitoramento para Reabilitação e estão realizando monitoramento pós remediação ou para

Classificação: ACI - Área Contaminada sob Intervenção Etapa de Gerenciamento: Investigação Confirmatória Fonte de contaminação: Vazamento ou Infiltração. Meios Impactados:

Na Lista de 2012, a Gerência de Licenciamento de Empreendimento de Impacto da SMMA - Secretaria Municipal de Meio Ambiente apresentou à FEAM informações de 195