• Nenhum resultado encontrado

Algoritmos experimentais para o problema biobjetivo da árvore geradora quadrática em adjacência de arestas

N/A
N/A
Protected

Academic year: 2017

Share "Algoritmos experimentais para o problema biobjetivo da árvore geradora quadrática em adjacência de arestas"

Copied!
168
0
0

Texto

(1)

Departamento de Informática e Matemática Aplicada

Programa de Pós-Graduação em Sistemas e Computação

Mestrado Acadêmico em Sistemas e Computação

Algoritmos Experimentais para o Problema

Biobjetivo da Árvore Geradora Quadrática em

Adjacência de Arestas

Lucas Daniel Monteiro dos Santos Pinheiro

(2)

Algoritmos Experimentais para o Problema Biobjetivo

da Árvore Geradora Quadrática em Adjacência de

Arestas

Dissertação de Mestrado apresentada ao

Pro-grama de Pós-Graduação em Sistemas e

Computação do Departamento de

Informá-tica e MatemáInformá-tica Aplicada da Universidade

Federal do Rio Grande do Norte como

re-quisito parcial para a obtenção do grau de

Mestre em Sistemas e Computação.

Linha de pesquisa:

Algoritmos Experimentais

Orientadora

Prof

a

Dr

a

Elizabeth Ferreira Gouvêa Goldbarg

Co-Orientadora

Prof

a

Dr

a

Sílvia Maria Diniz Monteiro Maia

PPgSC – Programa de Pós-Graduação em Sistemas e Computação

DIMAp – Departamento de Informática e Matemática Aplicada

CCET – Centro de Ciências Exatas e da Terra

UFRN – Universidade Federal do Rio Grande do Norte

(3)

Pinheiro, Lucas Daniel Monteiro dos Santos.

Algoritmos Experimentais para o problema biobjetivo da árvore

geradora quadrática em adjacência de arestas / Lucas Daniel

Monteiro dos Santos Pinheiro. - Natal, 2016.

166f: il.

Orientadora: Profª· Drª· Elizabeth Ferreira Gouvêa Goldbarg.

Coorientadora: Profª· Drª· Sílvia Maria Diniz Monteiro Maia.

Dissertação (Mestrado) - Universidade Federal do Rio Grande

do Norte. Centro de Ciências Exatas e da Terra. Programa de

Pós-Graduação em Sistemas e Computação.

1. Algoritmos experimentais. 2. Algoritmos exatos. 3.

Metaheurísticas. 4. Otimização multiobjetivo. 5. Árvore

geradora quadrática em adjacência de arestas biobjetivo. I.

Goldbarg, Elizabeth Ferreira Gouvêa. II. Maia, Sílvia Maria

Diniz Monteiro. III. Título.

RN/UF/CCET CDU 004.021

(4)

Algoritmos Experimentais para o Problema Biobjetivo da Árvore

Geradora Quadrática em Adjacência de Arestas

Esta Dissertação foi julgada adequada para a obtenção do título de mestre em

Sistemas e Computação e aprovado em sua forma final pelo Programa de

Pós-Graduação em Sistemas e Computação do Departamento de Informática e Matemática

Aplicada da Universidade Federal do Rio Grande do Norte.

__________________________________________________________

Dr

a.

Elizabeth Ferreira Gouvea

UFRN

(Presidente)

__________________________________________________________

Dr.

Uirá Kulesza

UFRN

(Coordenador do Programa)

Banca Examinadora

____________________________________________________________

Dr

a.

Silvia Maria Diniz Monteiro Maia

UFRN

(Co-orientadora)

____________________________________________________________

Dr. Marco Cesar Goldbarg

UFRN

(Examinador)

____________________________________________________________

Dr. Richard Aderbal Gonçalves

UNICENTRO

(Examinador)

(5)
(6)

Quero agradecer primeiramente a Deus, por sempre me mostrar o caminho certo de

seguir, sempre com esforço e dedicação para alcançar meus objetivos.

Agradeço também à minha família, por sempre me apoiar e me proporcionar as

me-lhores condições de estudo. Em especial, agradeço à minha mãe Gilda, por sempre estar

comigo nos momentos difíceis e pela compreensão das horas e horas de estudo.

À minha orientadora Elizabeth Goldbarg, pela disposição de trabalhar juntamente

comigo, sugerindo ideias para serem incorporadas ao trabalho, e por todo conhecimento

por ela passado. Agradeço também à minha co-orientadora Sílvia Maia, por sua ajuda

durante todo o processo, auxiliando na realização dos experimentos e sempre cuidando

do laboratório. Também agradeço a ajuda da professora Iloneide, que ajudou bastante na

realização dos testes e no uso da ferramente R.

Aos meus colegas desde a graduação, pelos momentos de preocupação e descontração.

Em especial, à Helton Duarte e Zailton Sachas, eternos companheiros da maratona de

programação.

Aos meus amigos Alexandre Bruno, Felipe Melo, João Carlos, Leonardo Asfora e

Senival Junior, por todo o apoio e convivência durante essa jornada.

(7)
(8)

da Árvore Geradora Quadrática em Adjacência de

Arestas

Autor: Lucas Daniel Monteiro dos Santos Pinheiro

Orientador(a): Prof

a

Dr

a

Elizabeth Ferreira Gouvêa Goldbarg

Co-Orientador(a): Prof

a

Dr

a

Sílvia Maria Diniz Monteiro Maia

Resumo

O problema da Árvore Geradora Mínima Quadrática (AGMQ) é uma generalização do

problema da Árvore Geradora Mínima na qual, além dos custos lineares das arestas, custos

quadráticos associados a cada par de arestas são considerados. Os custos quadráticos são

devidos a custos de interação entre as arestas. No caso de as interações ocorrerem somente

entre arestas adjacentes, o problema é denominado Árvore Geradora Mínima Quadrática

em Adjacência de Arestas (AGMQA). Tanto a AGMQ quanto a AGMQA são NP-difíceis

e modelam diversos problemas reais envolvendo projeto de redes de infraestrutura. Os

custos lineares e quadráticos são somados nas versões mono-objetivo destes problemas.

Entretanto, aplicações reais lidam frequentemente com objetivos conflitantes. Nestes

ca-sos, a consideração dos custos lineares e quadráticos separadamente é mais adequada e a

otimização multiobjetivo provê modelos mais realistas. Algoritmos exatos e heurísticos são

investigados neste trabalho para a versão biobjetivo da AGMQA. As seguintes técnicas

são propostas:

backtracking,

branch-and-bound, busca local,

Greedy Randomized Adaptive

Search Procedure,

Simulated Annealing, NSGAII, Algoritmo Transgenético, Otimização

por Nuvem de Partículas e uma hibridização entre a técnica do MOEA-D e o Algoritmo

Transgenético. São utilizados indicadores de qualidade Pareto concordantes para

compa-rar os algoritmos em um conjunto de instâncias de bases de dado da literatura.

(9)

Tree Problem

Author: Lucas Daniel Monteiro dos Santos Pinheiro

Supervisor: Prof. D.Sc. Elizabeth Ferreira Gouvêa Goldbarg

Co-supervisor: Prof. D.Sc. Sílvia Maria Diniz Monteiro Maia

Abstract

The Quadratic Minimum Spanning Tree (QMST) problem is a generalization of the

Mi-nimum Spanning Tree problem in which, beyond linear costs associated to each edge,

quadratic costs associated to each pair of edges must be considered. The quadratic costs

are due to interaction costs between the edges. When interactions occur between

ad-jacent edges only, the problem is named Adad-jacent Only Quadratic Minimum Spanning

Tree (AQMST). Both QMST and AQMST are NP-hard and model a number of real

world applications involving infrastructure networks design. Linear and quadratic costs

are summed in the mono-objective versions of the problems. However, real world

applicati-ons often deal with conflicting objectives. In those cases, capplicati-onsidering linear and quadratic

costs separately is more appropriate and multi-objective optimization provides a more

realistic modelling. Exact and heuristic algorithms are investigated in this work for the

Bi-objective Adjacent Only Quadratic Spanning Tree Problem. The following techniques

are proposed: backtracking, branch-and-bound, Pareto Local Search, Greedy

Randomi-zed Adaptive Search Procedure, Simulated Annealing, NSGA-II, Transgenetic Algorithm,

Particle Swarm Optimization and a hybridization of the Transgenetic Algorithm with

the MOEA-D technique. Pareto compliant quality indicators are used to compare the

algorithms on a set of benchmark instances proposed in literature.

(10)

1

Paremecium Aurélia

e endossimbiontes

Kappa

. . . p. 161

2

Vetores transgenéticos e troca de informações . . . p. 161

3

Procedimentos de manipulação . . . p. 162

(11)

1

Backtracking na AGQA-bi . . . .

p. 41

2

Branch-and-Bound versão 1 e 2 na AGQA-bi . . . .

p. 42

3

Branch-and-Bound versão 2 e de Maia (2013) para AGQA-bi . . . .

p. 43

4

Backtracking nas instâncias OP1 . . . .

p. 43

5

Backtracking nas instâncias OP2 . . . .

p. 45

6

Backtracking nas instâncias OP3 . . . .

p. 46

7

Branch-and-Bound nas instâncias OP1 . . . .

p. 48

8

Branch-and-Bound nas instâncias OP2 . . . .

p. 49

9

Branch-and-Bound nas instâncias OP3 . . . .

p. 51

10

Resumo das principais características dos algoritmos desenvolvidos . . .

p. 67

11

Configurações dos parâmetros dos algoritmos . . . .

p. 68

12

Comparação entre conjunto exato e conjunto de referência heurístico nas

instâncias CP . . . .

p. 69

13

Comparação entre conjunto exato e conjunto de referência heurístico nas

instâncias OP1 . . . .

p. 70

14

Comparação entre conjunto exato e conjunto de referência heurístico nas

instâncias OP2 . . . .

p. 72

15

Comparação entre conjunto exato e conjunto de referência heurístico nas

instâncias OP3 . . . .

p. 74

16

Algoritmos de busca local nas instâncias CP até 40 vértices . . . .

p. 76

17

Algoritmos de busca local nas instâncias CP de 45 até 175 vértices . . .

p. 77

18

Algoritmos evolucionários nas instâncias CP até 40 vértices . . . .

p. 78

(12)

21

Algoritmos de Busca Local nas instâncias OP1 de 14 até 50 vértices . .

p. 81

22

Algoritmos de Busca Local nas instâncias OP2 de 6 até 13 vértices . . .

p. 82

23

Algoritmos de Busca Local nas instâncias OP2 de 14 até 50 vértices . .

p. 83

24

Algoritmos de Busca Local nas instâncias OP3 de 6 até 13 vértices . . .

p. 84

25

Algoritmos de Busca Local nas instâncias OP3 de 14 até 50 vértices . .

p. 85

26

Algoritmos evolucionários nas instâncias OP1 de 6 até 13 vértices . . .

p. 86

27

Algoritmos evolucionários nas instâncias OP1 de 14 até 50 vértices . . .

p. 87

28

Algoritmos evolucionários nas instâncias OP2 de 6 até 13 vértices . . .

p. 88

29

Algoritmos evolucionários nas instâncias OP2 de 14 até 50 vértices . . .

p. 89

30

Algoritmos evolucionários nas instâncias OP3 de 6 até 13 vértices . . .

p. 90

31

Algoritmos evolucionários nas instâncias OP3 de 14 até 50 vértices . . .

p. 91

32

Ranking geral nas instâncias CP de 10 até 40 vértices . . . .

p. 92

33

Ranking geral nas instâncias CP de 45 até 175 vértices . . . .

p. 93

34

Ranking geral nas instâncias OP1 de 6 até 13 vértices . . . .

p. 95

35

Ranking geral nas instâncias OP1 de 14 até 50 vértices . . . .

p. 96

36

Ranking geral nas instâncias OP2 de 6 até 13 vértices . . . .

p. 98

37

Ranking geral nas instâncias OP2 de 14 até 50 vértices . . . .

p. 99

38

Ranking geral nas instâncias OP3 de 6 até 13 vértices . . . p. 101

39

Ranking geral nas instâncias OP3 de 14 até 50 vértices . . . p. 103

40

Tempos médios do grupo I nas instâncias CP . . . p. 105

41

Tempos médios do grupo II nas instâncias CP . . . p. 108

42

Tempos médios dos algoritmos evolucionários do grupo I nas instâncias

CP . . . p. 111

43

Tempos médios dos algoritmos evolucionários do grupo II nas instâncias

CP . . . p. 113

(13)

46

Tempos médios do grupo I nas instâncias OP2 . . . p. 121

47

Tempos médios do grupo II nas instâncias OP2 . . . p. 124

48

Tempos médios do grupo I nas instâncias OP3 . . . p. 126

49

Tempos médios do grupo II nas instâncias OP3 . . . p. 129

50

Tempos médios dos algoritmos evolucionários do grupo I nas instâncias

OP1 . . . p. 131

51

Tempos médios dos algoritmos evolucionários do grupo II nas instâncias

OP1 . . . p. 134

52

Tempos médios dos algoritmos evolucionários do grupo I nas instâncias

OP2 . . . p. 136

53

Tempos médios dos algoritmos evolucionários do grupo II nas instâncias

OP2 . . . p. 139

54

Tempos médios dos algoritmos evolucionários do grupo I nas instâncias

OP3 . . . p. 142

55

Tempos médios dos algoritmos evolucionários do grupo II nas instâncias

(14)

AGM – Árvore Geradora Mínima

AGMQ – Árvore Geradora Mínima Quadrática

AGMQA – Árvore Geradora Mínima Quadrática em Adjacência de Arestas

NSTA –

Nondominated Sorting Transgenetic Algorithm

PLS –

Pareto Local Search

GRASP –

Greedy Randomized Adaptive Search Procedure

SA –

Simulated Annealing

NSGA-II –

Nondominated Sorting Genetic Algorithm

MOTA-D –

Multiobjective Transgenetic Algorithm

(15)

G

= (

V, E

)

– Grafo

G

, cujo conjunto de vértices é

V

e o conjunto de arestas é

E

V

– Conjunto de vértices de um grafo

G

v

i

– Um vértice pertencente ao conjunto

V

, com

0

< i

n

n

– Número de vértices em um grafo

G

(

n

=

|

V

|

)

E

– Conjunto de arestas de um grafo

G

e

i

– Uma aresta pertencente ao conjunto

E

, com

0

< i

m

m

– Número de arestas em um grafo

G

(

m

=

|

E

|

)

W

– Vetor (

w

1

, ..., w

m) que contém, para cada aresta de

E

, o seu respectivo custo linear

w

i

– Custo linear da aresta

e

i

,

0

< i

m

x

– Vetor de variáveis booleanas (

x

1

, ..., x

m), em que cada variável

x

i

,

0

< i

m

, vale 1

se a aresta

e

i

é faz parte da árvore e 0 caso contrário

x

i

– Variável booleana que indica se a aresta

e

i

faz parte da árvore (

x

i

= 1

) ou não

(

x

i

= 0

),

0

< i

m

T

– Conjunto de todas as árvores geradoras possíveis de um grafo

G

C

– Matriz

C

=

[

C

ij

] contendo, para cada par de arestas

(

e

i

, e

j

)

,

0

< i, j

m

, o seu

respectivo intercusto

A

i

– Conjunto dos índices (números de identificação) de todas as arestas adjacentes à

aresta

e

i

,

0

< i

m

N

k

(

t

)

– Vizinhança que seleciona randomicamente

k

arestas que estão na árvore geradora

(16)

1

Backtracking

para AGQA-bi . . . .

p. 36

2

Cálculo da estimativa linear . . . .

p. 37

3

Cálculo da estimativa quadrática . . . .

p. 38

4

Pareto Local Search para AGQA-bi . . . .

p. 56

5

GRASP para AGQA-bi . . . .

p. 59

6

Cálculo das estimativas quadráticas de cada aresta . . . .

p. 64

7

Arquitetura geral do GRASP . . . p. 153

8

Arquitetura Geral do Simulated Annealing . . . p. 154

9

Atribuição dos ranks . . . p. 157

10

Atribuição da crowding distance . . . p. 158

11

Arquitetura Geral do NSGA-II . . . p. 159

12

Arquitetura Geral do Algoritmo Transgenético . . . p. 163

(17)

1 Introdução

p. 19

1.1 Objetivos . . . .

p. 20

1.2 Metodologia . . . .

p. 21

1.3 Contribuições . . . .

p. 21

1.4 Organização do trabalho . . . .

p. 21

2 O Problema da Árvore Geradora Quadrática em Adjacência de

Ares-tas Biobjetivo

p. 23

2.1 Descrição do problema . . . .

p. 23

2.2 Revisão da Literatura . . . .

p. 24

2.2.1 AGMQ e suas variantes . . . .

p. 24

2.2.1.1

Algoritmos Exatos . . . .

p. 24

2.2.1.2

Algoritmos Heurísticos . . . .

p. 25

2.2.2 AGQA-bi . . . .

p. 29

2.2.2.1

Algoritmos Exatos . . . .

p. 29

2.2.2.2

Algoritmos Heurísticos . . . .

p. 30

3 Algoritmos exatos

p. 35

3.1

Backtracking

. . . .

p. 35

3.2

Branch-and-Bound

. . . .

p. 36

3.3 Experimentos Computacionais . . . .

p. 39

(18)

4.1.1 Algoritmo Proposto . . . .

p. 54

4.2 Greedy Randomized Adaptive Search Procedure . . . .

p. 57

4.2.1 Algoritmo Implementado . . . .

p. 57

4.3 Simulated Annealing . . . .

p. 60

4.3.1 Algoritmo Implementado . . . .

p. 60

4.4 Non-Dominating Sorting Genetic Algorithm II . . . .

p. 61

4.4.1 Algoritmo Implementado . . . .

p. 61

4.5 Algoritmo Transgenético . . . .

p. 62

4.5.1 Algoritmo Implementado . . . .

p. 62

4.6 MOEA-D + Transgenético = MOTA-D . . . .

p. 65

4.6.1 Algoritmo Implementado . . . .

p. 65

4.7 Otimização em Nuvem de Partículas . . . .

p. 65

4.7.1 Algoritmo Implementado . . . .

p. 65

4.8 Experimentos Computacionais . . . .

p. 66

4.8.1 Resultados . . . .

p. 68

5 Considerações Finais

p. 147

5.1 Trabalhos Futuros . . . p. 148

Referências

p. 149

Anexo A -- Meta-heurísticas

p. 152

A.1 Pareto Local Search . . . p. 152

A.2 Greedy Randomized Adaptive Search Procedure . . . p. 152

A.3 Simulated Annealing . . . p. 153

A.4 Non-Dominating Sorting Genetic Algorithm II . . . p. 155

(19)
(20)

1

Introdução

O problema da Árvore Geradora Mínima (AGM) é um problema clássico de otimização

combinatória vastamente explorado na literatura e cuja solução pode ser obtida em tempo

polinomial. O problema da AGM consiste em, dado um grafo ponderado em arestas,

encontrar um subgrafo gerador conexo e acíclico tal que a soma dos pesos das arestas seja

mínima. Os algoritmos mais famosos da literatura são os de Prim (1957) e Kruskal (1956),

que servem de base para combinação de métodos na solução de variantes do problema da

AGM.

O problema da Árvore Geradora Mínima Quadrática (AGMQ) (

ASSAD; XU

, 1992) é

uma versão do problema clássico da Árvore Geradora Mínima na qual se considera, além

dos custos lineares das arestas, custos quadráticos associados a cada par de arestas,

si-mulando a interação entre as mesmas. No caso de as interações ocorrerem somente entre

arestas adjacentes, o problema é denominado Árvore Geradora Mínima Quadrática em

Adjacência de Arestas (AGMQA) (

ASSAD; XU

, 1992). Tanto a AGMQ quanto a AGMQA

são problemas NP-difíceis (

ASSAD; XU

, 1992) que procuram modelar problemas reais

en-volvendo projeto de redes de transporte e distribuição.

Assad e Xu (1992), ao apresentarem os problemas, descreveram como aplicações reais

para os problemas da AGMQ e AGMQA (e portanto, também AGQ-bi e AGQA-bi) a

transmissão de material, como por exemplo, petróleo e derivados, por dutos, nos quais os

custos de transmissão dependem da natureza da interface de conexão entre os mesmos e

do tipo de material transportado. Nas redes de distribuição de gás, os custos de instalação

e manutenção de válvulas de controle e grupos de compressão podem ser modelados como

intercustos.

(21)

Uma última aplicação ainda se faz presente em estradas, onde penalidades de

conver-são entre trechos podem ser modeladas como intercustos entre as estradas, levando em

conta condições como tráfego estimado e situação física do solo.

Na versão mono-objetivo os custos lineares e quadráticos são somados, mas, em

apli-cações reais, tais custos podem ser conflitantes, o que torna mais interessante considerá-los

separadamente. Assim, a Otimização Multiobjetivo fornece uma modelagem mais realista

tanto para a AGMQ quanto para a AGMQA. Este trabalho tem como foco principal o

problema da AGMQA sob um enfoque biobjetivo. O tema foi pouco abordado na

litera-tura constando dos trabalhos de Maia (2013) e Maia, Goldbarg e Goldbarg (2013, 2014),

nos quais foram desenvolvidos algoritmos exatos e heurísticos. As abordagens exatas

back-tracking

e

branch-and-bound

são técnicas clássicas para explorar o grau de dificuldade de

um problema, pois se baseiam em gerar todas as soluções possíveis, e no caso do

branch-and-bound, utilizando-se de limites inferiores e superiores para evitar gerar soluções que

não serão aceitas. As abordagens heurísticas baseadas em busca local, como a

Pareto

Lo-cal Search, o

Greedy Randomized Adaptive Search Procedure, o

Simulated Annealing

e a

otimização em nuvem de partículas procuram explorar o espaço de soluções de maneira

inteligente, evitando seguir todos os caminhos possíveis. As abordagens heurísticas

evolu-cionárias, como o

Nondominated Sorting Genetic Algorithm II, o Algoritmo Transgenético

e a hibridização entre MOEA-D e Transgenético, chamada de MOTA-D, são técnicas que

também procuram explorar o espaço de soluções de maneira inteligente, mas usando

con-ceitos relacionados à teoria da evolução e teoria da endossimbiose como base, procurando

incorporar esses aspectos no algoritmo. Esta dissertação estende os trabalhos anteriores

apresentando novas maneiras de explorar a vizinhança nos algoritmos de busca local, além

de investigar o desempenho de novas meta-heurísticas para o problema estudado, a fim

de indicar quais técnicas são mais adequadas para serem mais aprofundadas.

1.1 Objetivos

(22)

1.2 Metodologia

Neste trabalho, vários algoritmos foram desenvolvidos a fim de solucionar o problema

da AGQA-bi. As técnicas exatas escolhidas foram

backtracking

e

branch-and-bound. As

seguintes abordagens meta-heurísticas são investigadas: busca local

Pareto Local Search,

Greedy Randomized Adaptive Search Procedure,

Simulated Annealing,

Nondominated

Sor-ting Genetic Algorithm II, nuvem de partículas, Algoritmo Transgenético, e uma

hibridi-zação entre MOEA-D e Transgenético, chamada de MOTA-D. Para avaliar o desempenho

desses algoritmos, foram feitos experimentos computacionais em até 29 instâncias com

tamanhos de 10, 15 e 20 vértices e em até 290 instâncias de 6 até 15 vértices para os

algoritmos exatos, e em 640 instâncias de 6 até 175 vértices para os heurísticos.

Nos exatos, foi estabelecido um limite de tempo de 3600 segundos na execução, para

ser compatível com o que foi feito no trabalho de Maia (2013). São exibidas informações

como número de nós visitados e de árvores geradoras produzidas, a fim de avaliar a

eficiência de cada técnica.

Nos heurísticos, cada algoritmo possui seus critérios de parada, mas um limite máximo

de 150 segundos também foi utilizado, pelo mesmo motivo já citado no caso dos exatos.

Devido ao fato de que os algoritmos possuem elementos não-determinísticos, são feitas

30 execuções independentes de cada um em cada instância, e usa-se o teste estatístico de

Kruskal-Wallis com auxílio da ferramenta R, a fim de compará-los uns com os outros. Para

tais testes, é utilizado o indicador hipervolume, comparando com o hipervolume de um

conjunto de referência utilizado como ótimo e obtendo, portanto, um desvio percentual,

que é usado para classificar os algoritmos.

1.3 Contribuições

Uma das contribuições deste trabalho é expandir o conhecimento sobre o problema da

AGQA-bi. Isto é feito apresentando novos algoritmos e resultados, analisando quais das

técnicas propostas são mais adequadas para resolução deste tipo de problema.

1.4 Organização do trabalho

(23)

AGQA-bi, além da revisão da literatura sobre tais problemas. No capítulo 3, são descritos

os algoritmos exatos desenvolvidos, além dos experimentos computacionais. São

reporta-dos resultareporta-dos da comparação com os algoritmos presentes em (

MAIA

, 2013). O capítulo

(24)

2

O Problema da Árvore Geradora

Quadrática em Adjacência de

Arestas Biobjetivo

O capítulo 2 trata da definição do problema em questão: o Problema da Árvore

Ge-radora Quadrática em Adjacência de Arestas Biobjetivo. Assim, a seção 2.1 descreve o

problema em específico e as seções seguintes apresentam a revisão da literatura, que inclui

trabalhos das versões com apenas um objetivo, assim como os trabalhos para a versão

biobjetivo.

2.1 Descrição do problema

O problema da árvore geradora mínima quadrática é uma extensão do problema

clás-sico da ávore geradora mínima. Considere um grafo simples, não-direcionado e conexo

G

= (

V, E

)

, onde

V

=

v

1

, v

2

, ..., v

n

é um conjunto de

n

vértices e

E

=

e

1

, e

2

, ..., e

m

um

conjunto de

m

arestas, um valor associado a cada aresta, que representa seu custo linear

W

=

w

1

, w

2

, ..., w

m, um vetor de booleanos

x

onde

x

i

, i

= 1

, ..., m

possui valor 1 quando a

i-ésima aresta faz parte da árvore e 0 caso contrário e

T

como sendo o conjunto de todas

as árvores geradoras desse grafo

G

. Assim, o problema da AGM consiste em encontrar um

subgrafo

T

= (

V

T

, E

T

)

, V

T

=

V, E

T

E

, tal que exista exatamente um único caminho

entre cada par de vértices em

T

e que minimize a seguinte função:

f

(

X

) =

m

X

i

=1

w

i

x

i|

X

T

(2.1)

(25)

2.2.

Z

(

X

) =

m

X

i

=1

m

X

j

=1

C

ij

x

i

x

j

+

m

X

i

=1

w

i

x

i|

X

T

(2.2)

A essa versão foi dado o nome de Árvore Geradora Mínima Quadrática (AGMQ). Além

disso, ao se considerar apenas os intercustos quando as arestas são adjacentes, têm-se o

problema da Árvore Geradora Mínima Quadrática em Adjacência de Arestas (AGMQA).

Acontece que, nos dois casos, os objetivos lineares e quadráticos são somados, e não se

leva em conta que, muitas vezes, a minimização de um deles pode ser conflitante com a do

outro. É nesse quesito que a otimização multiobjetivo se torna atraente numa modelagem

mais realista de aplicações reais.

No caso multiobjetivo (AGQA-bi), consideram-se os custos lineares e quadráticos

como objetivos separados e, considerando

A

i

como o conjunto de índices das arestas

adjacentes à aresta de índice

i

, busca-se uma árvore

T

que minimize:

M in Z

(

X

) = (

Z

1

(

X

)

, Z

2

(

X

))

|

X

T ,

(2.3)

em que:

Z

1

(

X

) =

m

X

i

=1

w

i

x

i

(2.4)

e

Z

2

(

X

) =

m

X

i

=1

X

j

A

i

C

ij

x

i

x

j

(2.5)

2.2 Revisão da Literatura

A revisão da literatura do problema passa pelas abordagens exatas e pelas

heurísti-cas. Primeiramente serão tratados os trabalhos relacionados às versões com apenas um

objetivo, e em seguida para a versão biobjetivo.

2.2.1

AGMQ e suas variantes

2.2.1.1

Algoritmos Exatos

Em 1992, Assad e Xu (

ASSAD; XU

, 1992) apresentaram os problemas da AGMQ e

(26)

Em 2008, Cordone e Passeri (

CORDONE; PASSERI

, 2008) desenvolveram um algoritmo

branch-and-bound

para a AGMQ, fundamentado na relaxação da função objetivo

qua-drática para uma função linear aproximada. Em 2012 (

CORDONE; PASSERI

, 2012), eles

apresentam uma versão melhorada do algoritmo.

2.2.1.2

Algoritmos Heurísticos

Em 1992, Assad e Xu (

ASSAD; XU

, 1992) apresentaram três heurísticas para os

pro-blemas da AGMQ e AGMQA e as denominou H1, H2 e H3. Tais heurísticas são utilizadas

por outros autores posteriormente. Vale ressaltar que todas as técnicas foram pensadas

para a resolução da AGMQ, mas que podem ser aplicadas para a AGMQA, porém, não

aproveitam a estrutura simplificada desta, ou seja, tratam apenas como uma instância da

AGMQ onde os intercustos entre arestas não adjacentes são desconsiderados.

Em 1998, Zhou e Gen (

ZHOU; GEN

, 1998) propuseram um algoritmo genético para

a AGMQ, e utilizaram a codificação de Prüfer (

PICCIOTTO

, 1999) para representar uma

possível solução. Além disso, as operações de mutação e cruzamento realizadas são simples

e conhecidas na literatura. O cruzamento é feito de maneira uniforme, no qual dois filhos

são gerados. Dados os cromossomos pai e mãe, um vetor binário é sorteado aleatoriamente,

do mesmo tamanho dos cromossomos. A partir daí, para cada posição, se o valor dela for

1, o primeiro filho recebe o valor presente no cromossomo do pai, se for 0, recebe o valor

do cromossomo da mãe naquela posição. O segundo filho é gerado de maneira semelhante,

mas contrária (0 para o pai, 1 para a mãe). Para a mutação, aplica-se uma perturbação

aleatória, na qual o valor de um gene é trocado por um valor escolhido aleatoriamente

no intervalo

[1

, n

]

. Por fim, para o procedimento de seleção, converte-se a codificação de

Prüfer para um conjunto de arestas e calcula-se o custo total da árvore com base na

formulação utilizada. A partir daí, a seleção ocorre pela hibridização de duas técnicas:

seleção(

µ

+

λ

) e roleta. São selecionados os

µ

melhores cromossomos distintos entre os

µ

pais e

λ

melhores descendentes. Caso a população não esteja completa, as vagas restantes

são preenchidas com cromossomos escolhidos através de roleta.

Em 2004, Gao, Lu e Liu (

GAO; LU; LIU

, 2004) apresentaram uma nova versão da

(27)

valor entre 1 e

n

, inclusive. Para a seleção, eles decodificam o código de Prüfer e avaliam

as soluções, e depois aplicam roleta tantas vezes quanto o tamanho da população. Em

2005, Gao e Lu (

GAO; LU

, 2005) apresentaram três novas formulações para AGMQF e um

novo algoritmo genético para resolver todas elas, e somente elas.

Em 2006, Soak, Corner e Ahn (

SOAK; CORNE; AHN

, 2006) apresentam uma nova

maneira de codificar árvores, chamada de

Edge-Window-Decoder. Para testar essa nova

codificação eles implementam algoritmos para alguns problemas relacionados à árvores,

inclusive um genético para a AGMQ. O operador de cruzamento por eles utilizado é o

de nós adjacentes. Primeiramente, para cada um dos pais (pai1 e pai2), é montada uma

espécie de lista de adjacência, onde para cada nó armazenam-se os nós adjacentes a eles na

árvore. Após isso, um vértice aleatório é selecionado para ser o nó inicial do descendente.

Chamemos tal nó de

v

. A partir daí, a seguinte sequência de passos é executada, até que

o cromossomo filho possua

2

(

n

1)

vértices:

Encontre a interseção das listas de nós adjacentes de

v

nos dois pais. Caso tal

interseção seja não vazia, selecione o vértice

w

que conecta a

v

com o menor peso.

Em caso de empate, faça essa escolha de maneira aleatória.

Caso a interseção seja vazia, faça a união das listas e selecione o vértice

w

que

conecta a

v

com o menor peso. Caso haja empate, selecione aleatoriamente dentre

os empatados.

Caso a união seja vazia, selecione aleatoriamente o próximo vértice

w

a ser inserido

no cromossomo filho.

Remova

w

das listas de

v

nos dois pais, e

v

das listas de

w

nos dois pais.

Adicione

w

imediatamente após

v

no cromossomo filho e torne

w

o vértice atual, ou

seja,

v

=

w

.

É possível que, após os passos acima, nem todos os vértices tenham sido incluídos.

Assim, para cada vértice que não apareceu, seleciona-se um que tenha aparecido mais de

uma vez e realiza-se a troca. A operação de mutação consiste apenas de trocar os genes

de duas posições aleatórias no cromossomo. O cromossomo filho substitui o pior dos pais

na seleção.

Em 2008, Yu, Shi e Sheu (

YU; SHI; SHEU

, 2008) apresentam uma metodologia para

(28)

Também em 2008, Cordone e Passeri (

CORDONE; PASSERI

, 2008) implementaram três

abordagens heurísticas e uma busca tabu para a AGMQ, sendo duas das heurísticas as já

citadas H1 e H2 de Assad e Xu (

ASSAD; XU

, 1992).

Em 2010, Öncan e Punnen (2010) apresentaram uma relaxação lagrangeana para

obtenção de limites inferiores e uma busca local com limitação tabu para a AGMQ. Além

disso, os autores propuseram um algoritmo de busca local com limitação tabu para a

AGMQ. A estrutura de vizinhança utilizada é bem conhecida na literatura para problemas

em árvores, e consiste no seguinte: dada uma solução (árvore)

T

, escolhe-se aleatoriamente

k

arestas que fazem parte da solução e substituem-se estas por arestas que não faziam

parte de

T

e que resultem numa árvore no final. Tal vizinhança foi chamada de

N

k

(

t

)

. A

fim de simplificação, os autores usaram apenas a vizinhança

N

1

(

t

)

, ou seja, retiram uma

aresta e substituem-na por outra, sistematicamente. Dessa maneira, cada árvore

T

possui

(

n

2)

vizinhos para serem explorados. Além disso, quando não há vizinho melhor que a

solução atual, os autores utilizam um critério Tabu que escolhe aleatoriamente um desses

vizinhos da solução atual para ser explorado, até que um número pré-determinado de

iterações seja alcançado.

Ainda no mesmo ano, Sundar e Singh (2010) implementaram um algoritmo de

colô-nia artificial de abelhas para o problema da AGMQ. Tal abordagem tem inspiração no

comportamento de abelhas em busca de alimentos e, portanto, utilizam-se três tipos de

abelhas: empregadas, escoteiras e observadoras. As empregadas são associadas às fontes

de alimento, trazendo néctar para a colméia e ao mesmo tempo indicando para as

obser-vadoras quais as fontes promissoras, através de uma dança. As escoteiras procuram fontes

de alimento na vizinhança da colméia.

No algoritmo, uma solução é representada por um conjunto de arestas. Além disso,

cada aresta possui um custo que é a soma do custo linear com os intercustos entre aquela

aresta e todas as outras do grafo. Assim, inicialmente, para cada abelha empregada, uma

solução é construída usando uma adaptação do algoritmo de Prim (1957), no qual a cada

aresta é associada uma probabilidade inversamente proporcional ao seu custo total para

entrar na solução, e uma aresta é escolhida usando roleta. A melhor solução dessas geradas

é guardada.

(29)

ou não seja possível gerar uma solução vizinha, a atual é substituída por uma gerada

randomicamente. A geração de uma solução vizinha se dá da seguinte maneira: dada uma

solução

s

, uma solução

s

é criada igual a

s

. Em seguida, seleciona-se aleatoriamente uma

aresta de

s

para ser removida. Escolhe-se então aleatoriamente uma solução

u

existente e

procura-se nessa uma aresta que possa tornar

s

uma árvore novamente. Caso não exista

tal aresta em

u

, a aresta originalmente removida é recolocada e também é inserida em

uma lista tabu, para evitar sua futura remoção. Caso alguma seja válida, a substituição

é feita e a nova solução é retornada. Caso contrário, retorna-se vazio.

Após isso, para cada abelha observadora

j

, escolhem-se aleatoriamente duas soluções

presentes no algoritmo até o momento e atribui-se uma probabilidade

bt

à melhor das

duas, e

1

bt

à outra. Utilizando torneio binário, uma das duas é escolhida para a

abe-lha observadora

j

. Em seguida, tenta-se gerar uma solução vizinha para esta da mesma

maneira já descrita anteriormente. Ao longo de todos esses passos, a melhor solução já

encontrada é atualizada quando superada.

Por fim, ao término do laço principal, a melhor solução encontrada é submetida a

uma busca local, na qual considera-se a retirada de cada aresta individualmente e todas

as maneiras de repô-la na solução, ficando sempre com a melhor. A busca local termina

quando não é possível melhorar mais a solução.

Os autores reportam comparações com o algoritmo genético de Zhou e Gen (1998) e

com os algoritmos genéticos de Soak, Corne e Ahn (2006). Segundo os autores, o algoritmo

foi melhor que todos os outros em relação à qualidade das soluções, e só perdeu em tempo

computacional para o algoritmo de Zhou e Gen (1998), que tinha os piores resultados

entre todos os comparados.

Ainda em 2010, Palubeckis, Rubliauskas e Targamadzé (2010) implementam três

abor-dagens heurísticas para AGMQ:

simulated annealing multistart, um algoritmo genético

híbrido e uma busca tabu iterativa. Os dois primeiros são explicitados abaixo.

(30)

do número de vértices da instância.

Pela necessidade de comparar tal algoritmo com as outras abordagens implementadas,

o critério de parada por eles utilizado é baseado no tempo. Se o algoritmo tiver estagnado

antes desse tempo máximo, eles reiniciam com uma solução aleatória, e por isso o chamam

de

multistart simulated annealing.

Para o algoritmo genético híbrido, a codificação utilizada é a de lista de arestas. A

população inicial é gerada através de uma versão randomizada do algoritmo de Kruskal

(1956), ou seja, a cada passo, consideram-se todas as arestas cuja inclusão não gere ciclo

na árvore atual. A partir daí seleciona-se um subconjunto dessas arestas, com as que

possuem os menores custos (soma do custo linear e da contribuição quadrática para a

árvore) e então uma delas é selecionada aleatoriamente deste subconjunto. Uma vez gerada

a população inicial, dois indivíduos são selecionados aleatoriamente para gerar um filho.

Esse filho possui, inicialmente, todas as arestas que são comuns a ambos os pais. Caso

ainda não esteja completo, as arestas restantes dos pais vão sendo escolhidas da mesma

forma aleatória seguida na geração da população inicial, até que se tenha uma árvore

completa. A mutação ocorre através de uma busca local, na qual são testadas todas as

possibilidades de retirar uma aresta da árvore e inserir outra que não gere ciclo. Por fim, a

população é atualizada da seguinte maneira: o pior indivíduo da população é substituído

pelo filho. Caso esse filho seja muito semelhante à alguma outra solução já presente, ele é

descartado.

Em 2012, Cordone e Passeri (

CORDONE; PASSERI

, 2012) apresentam uma busca tabu

e uma busca em vizinhança variável para a AGMQ.

2.2.2

AGQA-bi

2.2.2.1

Algoritmos Exatos

Em 2013, (

MAIA

, 2013) apresentou uma nova versão do problema da AGMQA, dessa

(31)

2.2.2.2

Algoritmos Heurísticos

Maia (2013) apresentou diversos algoritmos heurísticos para o problema da AGQA-bi

em sua tese de doutorado, e a seguir alguns deles serão expostos.

Maia (2013) apresentou dois algoritmos PLS para a AGQA-bi, um que faz uma

ex-ploração total dos vizinhos de uma solução e outra que usa uma estratégia denominada

ejection chain

.

Ambos são semelhantes na geração da solução inicial, que se dá da seguinte forma:

uma estimativa de contribuição de cada aresta para o custo total da árvore é calculada. A

estimativa linear é o próprio custo linear da aresta, e a estimativa quadrática é calculada

com base na heurística H1 (

ASSAD; XU

, 1992). Após isso, um vetor de escalarização é

calculado de maneira aleatória, de modo que a soma de seus valores seja 1 e que ambos

sejam maiores do que 0. Assim, o produto interno do vetor de escalarização com o vetor

de estimativas é dito o custo estimado total de cada aresta. A partir daí, ordenam-se essas

arestas com base nesse custo e então, até que se tenha uma árvore, uma aresta é escolhida

aleatoriamente de uma lista com as

#

tamCand

melhores arestas dentre aquelas que não

formarão ciclo. Tal solução é então adicionada a lista de soluções não visitadas.

Na primeira versão do PLS apresentada, é utilizada a vizinhança

N

1

(

t

)

presente em

(

ÖNCAN; PUNNEN

, 2010). Assim, dada uma solução, sistematicamente retira-se uma aresta

e analisam-se todas as árvores formadas pela inserção de uma aresta que não fazia parte

da solução. Caso alguma solução vizinha gerada seja não dominada pelo conjunto obtido

até o momento, tal solução é marcada como não visitada e adicionada ao conjunto, e as

soluções que ela domina são retiradas.

(32)

são eliminadas. Caso contrário, o contador de falhas é incrementado. Esse laço executa até

que o número total de falhas atinja um valor previamente definido

#maxFalhas. Assim,

as trocas bem sucedidas vão se acumulando, já que arestas removidas nunca voltam para

uma solução e as arestas inseridas nunca saem.

Também foi implementado um algoritmo NSGA-II para a versão biobjetivo do

pro-blema da árvore geradora quadrática em adjacência de arestas (AGQA-bi). Nessa

imple-mentação, a geração da solução inicial é semelhante à usada pela mesma autora em seu

algoritmo Pareto Local Search, que ocorre da seguinta forma: uma estimativa de

contri-buição de cada aresta para o custo total da árvore é calculada. A estimativa linear é o

próprio custo linear da aresta, e a estimativa quadrática é calculada com base na

heurís-tica H1 (

ASSAD; XU

, 1992). Após isso, um vetor de escalarização é calculado de maneira

aleatória, de modo que a soma de seus valores seja 1 e que ambos sejam maiores do que

0. Assim, o produto interno do vetor de escalarização com o vetor de estimativas é dito

o custo estimado total de cada aresta. A partir daí, ordenam-se essas arestas com base

nesse custo e então, até que se tenha uma árvore, uma aresta é escolhida aleatoriamente

de uma lista com as

#

tamCand

melhores arestas dentre aquelas que não formarão ciclo.

A única diferença é que ao invés de gerar um vetor de escalarização, há uma etapa de

pré-processamento que calcula a ordenação das arestas de acordo com os seguintes

ve-tores de escalarização: [0; 1], [0,1; 0,9], [0,2; 0,8]; [0,3; 0,7], [0,4;0,6], [0,5; 0,5], [0,6; 0,4],

[0,7; 0,3], [0,8; 0,2], [0,9; 0,1], [1; 0]. Caso a solução gerada já faça parte da população,

uma nova solução é gerada aleatoriamente até que se consiga uma diferente. Essa nova é

formada da seguinte maneira: escolhe-se uma aresta para ser a primeira da árvore. Em

seguida, uma lista de arestas adjacentes à essa primeira e cujas inserções não gerem ciclos

é formada. Assim, de maneira iterativa, escolhe-se aleatoriamente uma aresta dessa lista,

e atualiza-se tal lista quando necessário. A partir daí, uma vez obtidos os dois pais (de

acordo com os critérios do NSGA-II), uma solução filha é montada com intuito de manter

a maior parte das arestas dos pais. Assim, todas as arestas em comum aos dois são

inseri-das no filho. Em seguida, as arestas restantes dos pais são selecionainseri-das através de seleção

binária, na qual sorteia-se um vetor de escalarização, a fim de comparar as arestas com

base em seus custos lineares e quadráticos parciais, e as melhores vão sendo inseridas até

que não seja mais possível. Caso a árvore ainda não esteja completa, arestas aleatórias do

grafo original são sorteadas até que se resulte numa árvore. Por fim, a mutação ocorre da

seguinte maneira: seleciona-se aleatoriamente uma aresta da árvore para ser removida e,

em seguida, uma de fora para restaurar a árvore.

(33)

Nondominated Sorting Transgenetic Algorithm

(NSTA) entre o NSGA-II e o transgenético

para a AGQA-bi. Os dois algoritmos compartilham as mesmas características com relação

à: geração da população inicial, informações do repositório do hospedeiro, comportamento

dos agentes (vetores transgenéticos). A única diferença entre eles se dá na permanência

do indivíduo manipulado na população. A seguir serão descritos os detalhes mencionados

acima.

Para a geração da população inicial utiliza-se o mesmo procedimento do NSGA-II

utilizado pela autora, que consiste de calcular uma estimativa de contribuição de cada

aresta para o custo total da árvore. O procedimento utilizado é o mesmo que ocorre nos

outros algoritmos já descritos. No NSTA, a ordenação por

rank

e

crowding-distance

é

mantida.

A informação do repositório é composto de no máximo 22 soluções, sendo 11 delas

geradas a partir da heurística H1 de Assad e Xu (1992) e 11 a partir da heurística H2,

também de Assad e Xu (1992). São utilizados os 11 vetores de escalarização a seguir para

gerar as soluções através de uma combinação linear dos objetivos: [0,0 ; 1,0], [0,1 ; 0,9],

[0,2 ; 0,8], ..., [1,0 ; 0,0]. Para tal, uma segunda etapa de pré-processamento é utilizada,

a qual utiliza o resultado do primeiro pré-processamento para gerar 11 soluções, seguida

da geração de mais 11 usando a heurística H2. Além disso, fazem parte do repositório

os vetores de escalarização usados e as ordenações das arestas de acordo com o primeiro

pré-processamento.

(34)

todas as arestas do original, exceto aquelas da região atacada pelo transposon. Cada aresta

é substituída por uma de fora da árvore e sua saída é realizada aleatoriamente, seguindo

uma distribuição não uniforme, de acordo com um vetor de escalarização. Para cada uma

dessas arestas, cria-se uma lista com as 5 melhores arestas que podem ser inseridas na

árvore de acordo com um vetor de escalarização escolhido aleatoriamente do repositório.

Além disso, uma aresta original atacada pelo transposon só volta para a solução caso não

possa ser substituída.

Terminada a manipulação, uma solução passará a fazer parte do repositório caso

domine alguma solução do mesmo. Além disso, aqui vem a principal diferença entre o

transgenético puro e o NSTA: neste, a população da próxima iteração é escolhida de

acordo com o

rank

e o

crowding-distance, e a população representa por si só o conjunto de

soluções não-dominadas que será retornado ao final, enquanto que no algoritmo

transgené-tico desenvolvido a autora utiliza o arquivador do tipo

Adaptive Grid Archiving, proposto

por Knowles (2005), e cujo tamanho é mantido como igual ao tamanho da população

utilizados pelo NSGA-II e pelo NSTA.

Testes conduzidos pela autora indicam que o algoritmo transgenético se saiu melhor

do que a abordagem híbrida. Em ambos, o número máximo de iterações foi de 60 e o

tamanho da população foi 300 se a instância tivesse mais de 40 vértices, e 80, 100 e 180

caso a instância tivesse 15, 20 e 40 vértices respectivamente.

(35)
(36)

3

Algoritmos exatos

Este capítulo apresenta os algoritmos exatos desenvolvidos para resolver o problema

da AGQA-bi, sendo um

backtracking

e um

branch-and-bound. Em seguida, os experimentos

computacionais feitos com tais algoritmos são exibidos, comparando-os também com os

presentes na literatura.

3.1

Backtracking

(37)

Algoritmo:

Backtracking(edges, pos, sol, n, m, tree)

1

se

sol.size

() ==

n

1

então

2

se

sol

não for dominada por ninguém em

f ronteira

então

3

f ronteira.adiciona

(

sol

)

4

se

sol domina alguém em fronteira

então

5

Excluir soluções dominadas por

sol

em

f ronteira

6

fim

7

senão

8

termine

9

fim

10

senão

11

para

i variando de pos até m-1-sol.size()+1

faça

12

se

tree.busca(edges[i].v1) != tree.busca(edges[i].v2)

então

13

tree.uniao(edges[i])

14

sol.adiciona(edges[i])

15

Backtracking(edges, i+1, sol, n, m, tree)

16

fim

17

fim

18

fim

19

Algoritmo 1

:

Backtracking

para AGQA-bi

3.2

Branch-and-Bound

(38)

para exploração. As funções de estimativa são calculadas nos algoritmos 2 e 3:

Algoritmo:

estimativaLinear(edges, sol, pos, n, m, tree)

1

long long res = 0

2

int faltam = n-1-sol.size()

3

para

i de pos ate m-1

faça

4

se

tree.busca(edges[i].v1) != tree.busca(edges[i].v2)

então

5

faltam -= 1

6

res += edges[i].peso

7

tree.uniao(edges[i])

8

fim

9

fim

10

se

faltam == 0

então

11

retorne res

12

fim

13

retorne -1

14

(39)

Algoritmo:

estimativaQuadrática(edges, sol, pos, n, m, tree)

1

long long res = 0

2

int faltam = n-1-sol.size()

3

vector

<

pair

<

long long, int

>>

vec

4

para

i de pos ate m-1

faça

5

se

tree.busca(edges[i].v1) != tree.busca(edges[i].v2)

então

6

res = 0

7

para

j de 0 até sol.size()

faça

8

res += intercustos[i][sol[j]] + intercustos[sol[j]][i]

9

fim

10

se

res == 0

então

11

long long menor = INF

12

para

todas as arestas k adjacentes a i

faça

13

menor = min(menor, intercustos[i][k]+intercustos[k][i])

14

fim

15

res = menor

16

fim

17

vec.adiciona(pair(res, i))

18

fim

19

fim

20

se

vec.size()

<

faltam

então

21

retorne -1

22

fim

23

ordenar(vec)

24

res = 0

25

para

i de 0 até tamanho(vec)

faça

26

int id = vec[i].second

27

se

tree.busca(edges[id].v1) != tree.busca(edges[id].v2)

então

28

res += vec[i].first

29

tree.uniao(edges[id])

30

faltam–

31

fim

32

fim

33

se

faltam

>

0

então

34

retorne -1

35

fim

36

retorne res

37

(40)

Na estimativa linear, calcula-se o custo da árvore geradora mínima considerando

ape-nas os custos lineares das arestas, contando com o fato de que as arestas presentes em

sol

são obrigatórias. Na estimativa quadrática, calcula-se o custo de inserir as melhores

arestas que faltam para completar a árvore, somente levando em conta as arestas que

já estavam em

sol

, como no caso da estimativa linear. Em ambas as estimativas, a lista

de arestas está inicialmente ordenada pelo custo linear de cada uma das arestas. Além

disso, caso não haja a quantidade necessária de arestas para completar a solução atual,

as estimativas retornam um valor negativo, -1, para indicar também que aquele ramo da

recursão deve ser abandonado, pois não resultará em uma solução completa.

Uma segunda versão do algoritmo

branch-and-bound

foi implementada, onde a

dife-rença em relação à primeira versão se dá pelo fato de que a nova utiliza-se do mesmo

procedimento de geração de soluções iniciais adotadas por Maia (2013), utilizando a

heu-rística H2 de Assad e Xu (1992), a fim de reduzir o número de estados visitados pelo

algoritmo, já que haverão mais soluções no conjunto de não-dominadas inicialmente.

3.3 Experimentos Computacionais

O primeiro conjunto de instâncias utilizado para a realização dos experimentos foi

proposto por Cordone e Passeri (2012) para o problema da AGMQ e pode ser encontrado

em: http://homes.di.unimi.it/∼cordone/research/qmst.html.

O conjunto utilizado neste experimento é uma redução do disponível no endereço

citado. Consiste de grafos com 10, 15, 20, 25 e 30 vértices e com densidade variando

entre 33%, 67% e 100%. Para cada número de vértices, 12 instâncias foram geradas por

eles, levando em conta a densidade de arestas já citada, o intervalo de escolha dos custos

lineares ([0, 10] ou [0, 100]) e o intervalo de escolha dos custos quadráticos ([0,10] ou [0,

100]).

(41)

No conjunto OP2, o intervalo para escolha dos custos lineares passa a ser [1, 10000]. Já os

intercustos são definidos da seguinte forma: para cada vértice é escolhido aleatoriamente

um peso no intervalo [1, 10]. Assim, o intercusto entre duas arestas é o produto dos pesos

dos vértices terminais das mesmas. Por fim, no conjunto OP3, as instâncias são geradas

de maneira que os vértices estejam localizados em um retângulo de coordenadas (0, 0)(0,

100)(100, 0)(100, 100). O custo linear é a distância Euclidiana entre os vértices da aresta,

e o intercusto entre duas arestas é a distância euclidiana entre os pontos médios das

mesmas.

Os algoritmos foram implementados em C++, usando o compilador g++ 4.8.1 e a flag

de otimização -O3, sistema operacional Ubuntu 13.10 de 64 bits. Todos os experimentos

foram realizados em máquinas HP Z400, com processador Intel Xeon QuadCore W3520 de

2.8 GHz e 8Gb de RAM. Os algoritmos foram comparados com as versões apresentadas por

Maia (2013), que foram executadas numa máquina com as mesmas configurações acima.

Por fim, foi estabelecido um limite de 3600 segundos para a execução dos algoritmos, a fim

de ser justo nas comparações com os algoritmos de Maia (2013), que utilizaram o mesmo

limite, e apenas as instâncias nas quais esse tempo limite foi cumprido são exibidas.

(42)

Tabela 1: Backtracking na AGQA-bi

Back1

Back2

Instância

Tempo (s)

NV

AGMs

|Qsol|

Tempo (s)

NV

AGMs

|Qsol|

10.1

0,00

1164

80

5

0,01

7097

80

5

10.2

0,00

1157

80

5

0,00

7098

80

5

10.3

0,00

1290

85

7

0,01

7105

85

7

10.4

0,00

1290

87

7

0,01

7106

87

7

10.5

0,10

199919

9735

7

0,27

1208054

6996

7

10.6

0,09

175716

7015

11

0,25

1129811

5928

11

10.7

0,09

191475

7929

9

0,27

1207395

7585

9

10.8

0,08

173815

6706

14

0,25

1124700

6478

14

10.9

1,14

1592558

124892

13

3,10

14314789

95726

13

10.10

0,95

1203720

88251

21

2,56

11849588

78475

21

10.11

1,17

1485804

144602

17

3,07

13814180

110479

17

10.12

1,01

1175870

113415

30

2,62

11384030

88801

30

15.1

8,35

27328534

93805

16

69,49

231017782

83256

16

15.2

8,38

25017517

81163

26

67,92

219685639

79135

26

15.3

8,24

25511113

74976

21

68,18

217248471

73617

21

15.4

8,44

23668626

68969

40

72,40

205119467

68563

40

Observa-se que o

backtracking

proposto neste trabalho foi mais rápido em relação ao

tempo computacional, apesar de ter um número maior de AGMs geradas. Isso se deve

ao fato do número de nós visitados ser bem menor, devido aos cortes que são feitos no

algoritmo. Além disso, o número de soluções não dominadas foi igual ao algoritmo de

Maia (2013), confirmando a corretude do algoritmo.

(43)

Tabela 2: Branch-and-Bound versão 1 e 2 na AGQA-bi

BB1

BB2

Instância

Tempo (s)

NV

AGMs

|Qsol|

Tempo (s)

NV

AGMs

|Qsol|

10.1

0,01

33

7

5

0,00

31

6

5

10.2

0,01

32

7

5

0,00

29

6

5

10.3

0,01

33

7

7

0,00

33

7

7

10.4

0,01

32

7

7

0,00

31

7

7

10.5

0,58

2880

81

7

0,03

1284

56

7

10.6

0,44

2049

76

11

0,02

1019

64

11

10.7

0,62

3156

64

9

0,02

1342

53

9

10.8

0,48

2410

91

14

0,02

1148

80

14

10.9

6,36

17686

2068

13

0,23

5153

814

13

10.10

5,28

13591

2277

21

0,24

5476

854

21

10.11

5,14

13931

1838

17

0,24

5723

839

17

10.12

4,42

11303

2015

30

0,28

6334

921

30

15.1

13,32

80681

402

16

0,46

26924

283

16

15.2

12,99

71351

400

26

0,41

23858

293

26

15.3

11,96

65290

444

21

0,41

23963

273

21

15.4

9,70

56374

535

40

0,39

22327

393

40

15.5

3533,29

7792552

1546

14

64,98

934659

978

14

15.6

1290,12

2390581

2067

19

40,41

517816

1033

19

15.7

2926,62

6072782

1975

25

54,48

740983

1421

25

15.8

1004,29

1812103

3361

35

34,00

406413

1894

35

15.9

X

X

X

X

1198,01

7123383

7891

25

15.10

X

X

X

X

1186,76

7098940

10002

33

15.11

X

X

X

X

1109,62

5868330

11016

43

15.12

X

X

X

X

1284,70

7217039

15198

58

20.1

X

X

X

X

514,87

7569965

2420

31

20.2

X

X

X

X

433,24

6371081

2696

39

20.3

X

X

X

X

610,36

8986148

2163

60

20.4

X

X

X

X

577,09

8542266

3515

86

Percebe-se que a versão 2 com a heurística H2 sendo usada para produzir soluções

ini-ciais foi mais eficiente com relação ao tempo computacional despendido, além de permitir

a execução de mais 8 instâncias.

Imagem

Tabela 3: Branch-and-Bound versão 2 e de Maia (2013) para AGQA-bi
Tabela 10: Resumo das principais características dos algoritmos desenvolvidos Algoritmo Resumo
Tabela 12: Comparação entre conjunto exato e conjunto de referência heurístico nas ins- ins-tâncias CP
Tabela 13: Comparação entre conjunto exato e conjunto de referência heurístico nas instâncias OP1
+7

Referências

Documentos relacionados

A começar pela literatura infantil, passando pelos desenhos animados á televisão e ao cinema, os personagens oferecem imagens que são muito significativas para

Algoritmo de Busca Tabu para o Problema da Árvore Geradora Mínima Generalizado.. Anais do XXVII Encontro Nacional de Engenharia de Produção, Foz do Iguaçu: ABEPRO,

No programa DIRF (Aplicativo disponível no site da Receita Federal) são importadas as informações geradas no sistema de folha como: Nome, CPF, Salário Bruto, Valor da Previdência

(encontrar uma árvore geradora máxima), como você pode usar os algoritmos de Kruskal e Prim (sem alterá-los) para obter uma árvore. • Supondo que todas as arestas de um grafo

O primeiro é o algoritmo de Kruskal que, em cada iteração, escolhe uma aresta segura mais barata possível.. O algoritmo de Kruskal vai aumentando

Elabore um texto de uma lauda, considerando os seguintes elementos: o caráter social do espaço geográfico decorre do fato de que os homens têm fome, sede e frio, necessidades

Após elaborar o texto, em resposta à atividade proposta, verifique se ele contém os seguintes aspectos: a relação entre fixos e fluxos, que elementos você considerou

Os documentos legais de cobrança deverão conter as especificações e as quantidades dos itens fornecidos, de acordo com a solicitação do BRDE formalizada através