Multicast Packing Problem: Abordagem Multiobjetivo

Tamanho: px
Começar a partir da página:

Download "Multicast Packing Problem: Abordagem Multiobjetivo"

Transcrição

1 Universidade Federal do Rio Grande do Norte Multicast Packing Problem: Abordagem Multiobjetivo Romerito Campos de Andrade Natal-RN Abril de 2013

2 Romerito Campos de Andrade Multicast Packing Problem Abordagem Multiobjetivo Dissertação apresentada à Universidade Federal do Rio Grande do Norte como requisito parcial para obtenção do título de Mestre em Sistemas e Computação, Área de Concentração: Algoritmos Experimentais. Orientador: Marco César Goldbarg UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE - UFRN DEPARTAMENTO DE INFORMÁTICA E MATEMÁTICA APLICADA - DIMAP Natal - RN Abrile de 2013

3

4 Dissertação, sob o título Multicast Packing Problem: abordagem multiobjetivo,submetida à banca examinadora como requisito parcial para obtenção do título de Mestre em Sistemas e Computação da Universidade Federal do Rio Grande do Norte. BANCA EXAMINADORA Prof. Dr. Marco Cesar Goldbarg (Orientador) Centro de Ciências Exatas e da Terra Departamento de Informática e Matemática Aplicada UFRN Prof a. Dr a. Elizabeth Ferreira Gouvea Centro de Ciências Exatas e da Terra Departamento de Informática e Matemática Aplicada UFRN Prof. Dr. Antônio Carlos Gay Thomé Instituto de Matemática Departamento de Ciência da Computação UFRJ Natal - RN 01 de Fevereiro

5 Dedicatória Este trabalho é dedicado a minha avô Jovelina (homenagem póstuma).

6 Agradecimentos Eu agradeço a Deus por me dar saúde para lutar pelos meus objetivos. Agradeço aos meus pais Cleonice e José Fernando pelo amor incondicinoal e por serem os melhores pais do mundo! Agradeço a Márcia Rocha pelo apoio que a mesma vem me dando durante vários momentos da minha vida. Agradeço aos meus oridentadores Marco Cesar Goldbarg e Elizabeth Goldbarg. Agradeço as amigos: Janduir, Sidney, Alexandre, Renata, Olegário.

7 Resumo O presente trabalho apresenta um estudo algorítmico do Multicast Packing Problem levando em consideração uma abordagem multiobjetivo. Para tal, faz-se uma extensa revisão sobre o problema em questão. Esta revisão serviu como ponto de referência para definição de um modelo matemático multiobjetivo, tendo em vista que não há na literatura nenhum trabalho que tenha tratado o tema neste aspecto. Em seguida, define-se os casos de teste utilizados no processo de experimentação dos algoritmos. Uma vez que tanto modelo matemático multiobjetivo quanto os casos de teste foram criados, então desenvolve-se vários algoritmos com base nas abordagens clássicas para problemas de otimização multiobjetivo: NSGA2 (3 versões) e SPEA2 (3 versões). Além disso, adaptou-se a metaheurística GRASP (2 versões) para aplicação considerando o modelo proposto. Estes algoritmos foram compostos por três operadores de recombinação (C1, C2, C3), dois operadores de construção de solução, um operador de mutação e um operador de busca local. Por fim, um extenso processo de experimentação dos algoritmos é realizado. Este processo possui três etapas: a primeira etapa consistiu de ajustar os parâmetros que cada algoritmo necessita, neste caso o ajuste de parâmetro foi realizado para todas as versões do SPEA2, NSGA2 e GRASP; A segunda etapa consistiu de verificar, para cada algoritmo, qual a melhor versão. Por fim, as melhores versões de cada algoritmo, no total 3 versões, foram comparadas entre si visando identificar qual o melhor algoritmo dentre todos. Os algoritmos foram avaliados com base nos indicadores de qualidade Hypervolume e Epsilon Multiplicativo. Os resultados dos experimentos foram avaliados através de testes estatísticos não-paramétricos (teste de Mann-Whitney e teste de Friedman). A avaliação dos resultados foi favoráravel ao NSGA2-C2 segundo a metodologia de avaliação utilizada. Palavras-Chave: Multicast Packing Problem, Otimização Multiobjetivo, Otimização em Redes, Multicast.

8 Abstract This work presents a algorithmic study of Multicast Packing Problem considering a multiobjective approach. The first step realized was an extensive review about the problem. This review serverd as a reference point for the definition of the multiobjective mathematical model. Then, the instances used in the experimentation process were defined, this instances were created based on the main caracteristics from literature. Since both mathematical model and the instances were definined, then several algoritms were created. The algorithms were based on the classical approaches to multiobjective optimization: NSGA2 (3 versions), SPEA2 (3 versions). In addition, the GRASP procedures were adapted to work with multiples objectives, two vesions were created. These algorithms were composed by three recombination operators(c1, C2 e C3), two operator for build solution, a mutation operator and a local search procedure. Finally, a long experimentation process was performed. This process has three stages: the first consisted of adjusting the parameters; the second was perfomed to indentify the best version for each algorithm. After, the best versions for each algorithm were compared in order to identify the best algorithm among all. The algorithms were evaluated based on quality indicators and Hypervolume Multiplicative Epsilon. Keywords: Multicast Packing Problem, Multiobjective Optimization, Network Optimization, Multicast.

9 Lista de Figuras 2.1 (a) Exemplo de comunicação unicast. (b) Exemplo de comunicação broadcast. (c) Exemplo de comunicação multicast. Em (b) e (c) destaca-se os destinos. As linhas mais densas indicam o caminho usado para enviar a informação p A figura ilustra um grafo com 7 nós e 3 terminais em (a). Ao lado há uma árvore de Steiner para o conjunto de terminais (b). Os nós terminais são os nós com duplo ciclo (1,5,6) p Contexto do Multicast Packing Problem. Há dois grupos multicast, grupo 1 e grupo 2. Em seguida aplica-se um mecanismo de roteamento multicast baseado em árvores de Steiner. Por fim, tem-se uma árvore multicast(árvore de Steiner) para cada grupo. As árvores formam uma solução para o problema p Exemplo de Hypervolume o ponto preenchido de cor preta ilustra o ponto de referência. A área cinza ilustra a região do espaço objetivo dominada..... p A figura ilustra as áreas que são ε-dominadas pelo conjunto A 1. Por exemplo, I ε (A,P) = 4, indicando que o conjunto B deve ser multiplicado por 4, ou seja, ε > 1. Quanto menor o valor do ε melhor o conjunto p Representação de uma solução para o MPP. A figura ilustra uma solução que possui 5 grupos multicast, para cada grupo uma árvore de Steiner é criada. No exemplo, a árvore do grupo 1 é ilustrada p A estrutura de vizinhança consiste na troca sistemática de árvores de Steiner. Uma solução é dada como entrada, então para cada grupo multicast cria-se uma nova árvore de Steiner e substitui a árvore correspondente na solução. Os quadrinhos pretos indicam que o grupo multicast que teve sua árvore substituída p Exemplo de execução do NSGA 2, onde ocorre a aplicação da divisão dos indivíduos em classes e o uso do valor da distância de aglomeração para escolha de indivíduos da última classe (F 3 ) a ser adicionada a população p t+1. p. 73

10 6.1 Tempo médio para por configuração - GRASP Sequencial. Considere gen = iter, sttree = NLRC e lc = lrc p Tempo médio de exeução para cada configuração/caso de teste utilizando o Grasp Aleatório. Considere gen = iter, sttree = NLRC e lc = lrc p Tempo médio de execução para cada configuração/caso de teste utilizando o NSGA2-C p Comparação entre as melhores configurações do Nsga2 com C2 com base no tempo médio p Comparação entre as melhores configurações do NSGA2-C3 com base no tempo médio p Comparação com base no tempo de processamento utilizada por cada configuração por caso de teste para o SPEA2-C p Comparação entre as melhores configurações do Spea2-C2 com base no tempo médio em 20 execuções para cada caso e teste p Comparação entre as configurações obtidas do SPEA2-C p. 97 A.1 Exemplo da classificação de uma população com base na relação de dominância p. 118 A.2 Cubóide caracterizando o perímetro ao redor do ponto p formado por seus vizinhos p 1 e p + 1. Quando maior é a área do cubóide menos populoso é a região a redor de p p. 120 B.1 Exemplo de eliminação de indivíduos p. 123

11 Lista de Tabelas 4.1 Tabela adaptada de (KNOWLES; THIELE; ZITZLER, 2006) ilustrando as relacões entre vetores objetivos p Tabela adaptada de (KNOWLES; THIELE; ZITZLER, 2006) ilustrando relação entre conjuntos de soluções p Características dos casos de teste utilizados na literatura p Características dos casos de teste criados p Configurações e valores de mediana do hypervolume por caso de teste..... p Melhores configurações do GRASP Sequencial. A configuração em destaque foi eliminada após o teste Friedman p Melhores configurações do GRASP Aleatório. A configurações em destaque foi eliminada após o teste de Friedman p Melhores configurações obtidas para o NSGA2-C1. A configuração em destaque foi elimida após o teste de Friedman p Melhores configurações obtidas com o NSGA2-C p Melhores configurações obtidas para o NSGA2-C p Melhores configurações do SPEA2-C p Melhores configurações obtidas para o SPEA2-C p Melhores configurações obtidas do SPEA2-C p Todas as configurações escolhidas para cada versão dos algoritmos implementados são ilustradas p Resultado da comparação entre o GRASP Sequencial e GRASP aleatório... p Compração ente NSGA2-C1 e NSGA2-C p Resumo da comparação entre NSGA2-C1 e NSGA2-C p. 102

12 6.16 Compração ente NSGA2-C1 e NSGA2-C p Resumo da comparação entre NSGA2-C1 e NSGA2-C p Comparação entre NSGA2-C2 e NSGA2-C p Compração ente SPEA2-C1 e SPEA2-C p Resumo da comparação entre SPEA2-C1 e SPEA2-C p Compração ente SPEA2-C1 e SPEA2-C p Resumo da comparação entre o SPEA2-C1 e SPEA2-C p Compração ente NSGA2-C2 e NSGA2-C p Resumo da comparção entre SPEA2-C2 e SPEA2-C p Comparação entre o GRASP_Sequencial e NSGA2-C p Resumo da comparação entre o GRASP Sequencial e o NSGA2-C p Comparação entre SPEA2-C2 com o GRASP Sequencial com base nos indicadores hypervolume e Epsilon multiplicativo p Resumo da comparação entre o SPEA2-C2 e GRASP Sequencial p Comparação entre o SPEA2-C2 e NSGA2-C2 com base no hypervolume Epsilon Multiplicativo p Resumo da comparação entre o SPEA2-C2 e NSGA2-C p. 114 D.1 Configurações utilizados no ajust de parâmetros do GRASP SEQUENCIAL.. p. 126 D.2 Configurações utilizadas no GRASP ALEATÓRIO p. 127 D.3 Configurações utilizadas no NSGA2-C p. 128 D.4 Configurações utilizadas no NSGA2-C p. 129 D.5 Configurações utilizadas no NSGA2-C p. 131 D.6 Configurações utilizadas no SPEA2-C p. 132 D.7 Configurações utilizadas no SPEA2-C p. 135 D.8 Configurações utilizadas no SPEA2-C p. 138

13 Lista de Algoritmos 5.1 Criação de árvore de Steiner baseado em Takahashi e Matsuyama (1980)... p Algoritmo para criação de árvore baseado em árvore geradora mínima..... p Algoritmo para remoção de nós folhas que não sejam nós terminais (destino). p Algoritmo de Criação de Solução. O algoritmo incorpora as heurísticas para criação de árvore de Steiner definidas na subseção p Algoritmo de recombinação aplicado à árvore de Steiner baseado no algoritmo proposto por Ravikumar e Bajpai (1998) p Algoritmo de recombinação de um ponto aplicado a soluções do MPP..... p Algoritmo de recombinação de um ponto com uso do algoritmo de recombinação em árvores de Steiner ilustrado no algoritmo p Algoritmo de recombinação C3. Utiliza o operador aplicado à árvores ilustrado no algoritmo p Algoritmo de Mutação de soluções do MPP p Algoritmo de Busca Local baseado em PLS usando a estrutura de vizinhança descrita ilustrada na figura p Algoritmo NSGA 2 utilizando os operadores de recombinação, mutação e criação de indivíduo do MPP. Adaptação do pseudo-código ilustrado em (DEB et al., 2002) p Pseudo-código do algoritmo SPEA 2. Ele foi adaptado para utilizar o operador de criação de solução e os operadores de recombinação (C1, C2 e C3) e mutação. p Algoritmo de criação de solução utilizando no Grasp p Algoritmo GRASP com fase construtiva sequencial p Algoritmo Grasp com fase construtiva aleatória p. 78

14 6.1 Procedimento para adição de informações de grupos, elementos de grupos e requisição de tráfego associada a cada grupo p. 82 A.1 Algoritmo para classificação da população (DEB et al., 2002) p. 119 A.2 Cálculo da Crowding Distance p. 121 C.1 Pseudo-código do GRASP p. 125

15 Lista de Siglas BRITE Bonton university Representative Internet Topology generator. GMP Group Multicast Problem. GRASP Greedy Randomized Adaptative Search Procedure. KMB Algoritmo de Kou, Markowsky e Berman. MMPP Multicast Packing Problem. MMTA Multiple Multicast Tree Allocation. MOGA Algoritmo Genético Multi-objetivo. MRP Problema de Roteamento Multicast. NSGA Nondominated Sorting Genetic Algorithm. NSGA2 Nondominated Sorting Genetic Algorithm. PISA Plataform and Programming Language Interface for Search Algorithms. PL Programacão Linear. PLS Pareto Local Search. RAGM Algoritmo de Árvore Geradora Mínima modificado. RTM versão aleatória do Algoritmo TM. SPEA Strength Pareto Evolutionary Algorithm. SPEA2 Strength Pareto Evolutionary Algorithm. TM Algoritmo de Takahashi e Matsuyama. TPLS Two Phase Local Search. VEGA Vector Evaluated Genetic Algorithm.

16 Sumário 1 Introdução p Objeto de Estudo e Objetivos p Objeto de Estudo p Objetivos p Metodologia p Contribuições p Estrutura do Texto p Definições p Multicast p Aplicações p Congestão, Dilatação e Capacidade Residual p Problema de Roteamento Multicast p Problema da Árvore de Steiner p Algoritmos p Multicast Packing Problem p Group Multicast Problem p Trabalhos Relacionados p Modelos e Algoritmos - Multicast Packing Problem p Modelo Proposto por Chen, Gunluk e Yener (2000) p Modelo Proposto por Wang, Liang e Jan (2002) p. 34

17 3.1.3 Modelo Proposto por Lee e Cho (2004) p Modelo Proposto por Kang, Park e Park (2009) p Modelos e Algoritmos - Group Multicast Problem p Modelo proposto por Jia e Wang (1997) p Modelo Proposto por Low e Wang (1999) p Modelo proposto por Randaccio e Atzori (2007) p Modelo Proposto por Yan-lin (2010) p Modelo Matemático Proposto - Abordagem Multiobjetivo p Otimização Multiobjetivo p Definições p Problema Multiobjetivo p Relação de Dominância p Diversidade de Soluções e Elitismo p Técnicas de Otimização de Problemas Multiobjetivo p Algoritmos Evolucionários p Outras Técnicas p Avaliações de Conjuntos de Aproximação p Indicadores de Qualidade p Rank de Dominância p Algoritmos Propostos p Representação de Solução p Criação de Solução p Criação de Árvore de Steiner p Algoritmo de Criação de Solução p Operadores de Recombinação p. 66

18 5.3.1 Recombinação para Árvores de Steiner p Operador de Recombinação C p Operador de Recombinação C p Operador de Recombinação C p Operador de Mutação p Operador de Busca Local p Estrutura de Vizinhança p Algoritmo de Busca Local p Algoritmos Propostos usando NSGA p Algoritmos Propostos usando SPEA p Algoritmos proposto usando GRASP p Criação de Solução p GRASP Sequencial p GRASP Aleatório p Resultados Experimentais p Criação de Casos de Teste p Modelo de Waxman p BRITE Framework p Gerador de Grupos e Requisição de Tráfego p Características dos Casos de Teste p Metodologia de Avaliação das Configurações p Ajuste de Parâmetros p Ajuste de Parâmetros - GRASP p Ajuste de Parâmetros - NSGA p Ajuste de Parâmetros - SPEA p Configurações Escolhidas p. 98

19 6.4 Experimento 1 - Comparando Versões dos Algoritmos p Comparando Versões do GRASP p Comparando Versões do NSGA p Comparando Versões do SPEA p Experimento 2 - Comparando Algoritmos p GRASP Sequencial x Nsga2-C p Spea2-C2 x GRASP Sequencial p Spea2-C2 x Nsga2-C p Resultado Final p Conclusões p Trabalhos Futuros p. 117 Apêndice A -- NSGA 2 p. 118 A.1 Classificação da População p. 118 A.2 Crowding Distance (Distância de Aglomeração) p. 120 Apêndice B -- SPEA 2 p. 122 B.1 Avaliação de Fitness p. 122 B.2 Pressão Ambiental p. 123 Apêndice C -- GRASP p. 124 C.1 Lista Restrita de Candidatos p. 124 C.2 Pseudo-Código p. 124 Apêndice D -- Resultados de Parâmetros de Configuração p. 126 D.1 GRASP p. 126 D.1.1 GRASP Sequencial p. 126 D.1.2 Grasp Aleatório p. 127

20 D.2 NSGA p. 128 D.2.1 NSGA2 com operador C p. 128 D.2.2 NSGA2 com operador C p. 129 D.2.3 NSGA2 com operador C p. 130 D.3 SPEA p. 132 D.3.1 SPEA2 com operador C p. 132 D.3.2 SPEA2 com operador C p. 135 D.3.3 SPEA2 com operador C p. 138 Referências Bibliográficas p. 143

21 19 1 Introdução A computação está difundida em todas as atividades humanas, controlando deste de uma unidade qualquer de mercadoria até os processos industriais em larga escala. Por trás de todo este controle sobre as atividades desenvolvidas no mundo moderno existem diversas áreas de conhecimento responsáveis por conduzir a evolução do conhecimento e técnicas subjacentes. Neste contexto, tem-se a otimização combinatória como uma das diversas áreas de conhecimento da ciência da computação, cuja importância é notável tendo em vista sua aplicação a diversos setores da sociedade, por exemplo setor econômico, industrial entre outros. No contexto de telecomunicações destacam-se os vários problemas de otimização que são de aplicação prática relevante (RESENDE; PARDALOS, 2006). Dentre os problemas de otimziação relacionados a telecomunicações destaca-se o problema de roteamento multicast. O problema de roteamento multicast consiste em estabelecer uma conexão entre um conjunto de vértices em uma rede (OLIVEIRA; PARDALOS; RESENDE, 2006), estabelecer tal conexão é chamado de roteamento multicast. Este problema possui vários trabalhos de referência na literatura no contexto de otimização mono-objetivo, como também de otimização multiobjetivo (CRICHIGNO; BARÁN, 2004b; CRICHIGNO; BARÁN, 2004a; XU, 2011; KOMPELLA; PASQUALE; POLYZOS, 1993). Uma abordagem comum para resolução do problema de roteamento multicast é baseada em construção de Árvores de Steiner (HWANG; RICHARDS; WINTER, 1992). O roteamento multicast é útil quando se tem apenas um conjunto de vértices (ou grupo de nós) 1 e se deseja estabelecer a comunicação dos vértices em uma rede. Porém, quando há mais de um grupo a ser configurado na rede é extramente importante ter alguma garantia que os mesmos serão suportados. Nesta situação surge o Multicast Packing Problem (MMPP). O MMPP consiste em construir árvores de roteamento para um número específico de grupos de forma simultânea, os grupos devem compartilhar os recursos da rede. A primeira formulação para o MMPP utilizou a congestão de uma aresta (a soma do tráfego gerado por cada grupo 1 No capítulo de definiçoes há uma definição exata dos termos referentes a multicast.

22 1.1 Objeto de Estudo e Objetivos 20 multicast sobre aquela aresta), portanto o objetivo é minimizar a congestão da aresta com maior tráfego (CHEN; GUNLUK; YENER, 2000).O mesmo problema recebeu atenção de outros pesquisadores com algumas mudanças na formulação do modelo matemático. Tais mudanças estão relacionadas à função objetivo, assim como a adição de restrições. Em (WANG; LIANG; JAN, 2002) e (KANG; PARK; PARK, 2009) utiliza-se a minimização do custo como função objetivo. Por outro lado, (RANDACCIO; ATZORI, 2007) utilizam uma métrica relacionada à distribuição dos recursos da rede como função objetivo. Este autores também adicionam restrições interessantes ao problema como: capacidade das arestas, número de hops 2. Todos os trabalhos mencionados acerca do MMPP levam em consideração a formulação do problema com apenas um objetivo, adicionando outros ítens ao modelo na forma de restrição. Além disso, há apenas um registro na literatura que indica o uso de metaheurística para o problema (RANDACCIO; ATZORI, 2007). Não há registro, que seja de conhecimento do autor, de algum estudo do problema levando em consideração uma formulação matemática do problema usando a abordagem multiobjetivo. Portanto, neste trabalho pretende-se explorar o MMPP em uma visão multiobjetivo. 1.1 Objeto de Estudo e Objetivos Objeto de Estudo O objeto de estudo está relacionado ao MMPP levando em consideração uma formulação matemática multiobjetivo, tendo em vista que não há na literatura um estudo algorítmico relacionado ao problema e que ofereça tecnologia suficiente para resolução do mesmo utilizando uma abordagem multiobjetivo. Diante da proposta de abordar o MMPP com uma visão multiobjetivo alguns ítens precisam ser incorporados ao estudo. O primeiro ítem está relacionado a formulação matemática, onde se faz necessário lançar mão de um modelo multiobjetivo. O segundo ítem está relacionado a criação de algoritmos para solucionar o problema utilizando o modelo multiobjetivo, consequentemente, levando a necessidade de um estudo algoritmo minucioso. 2 Número de hops por árvore significa a quantidade de nós intermediários entre dois nós que estão se comunicado, reduzir o número de hops ajuda a reduzir a largura de banda utilizada.

23 1.2 Metodologia Objetivos Objetivo Geral : Estudo algoritmo do MMPP levando em consideração uma formalução matemática multiobjetivo. Objetivos Específicos : Definição de um modelo matemático multiobjetivo; Criação de um banco de casos de teste; Criação de algoritmos baseados nas abordagens de otimização clássicas: Nondominated Sorting Genetic Algorithm (NSGA2) e Strength Pareto Evolutionary Algorithm (SPEA2); Criação de operadores de criação de solução, de recombinação, mutação; Criação de algoritmo de busca local; Adaptação do Greedy Randomized Adaptative Search Procedure (GRASP) para resolução do MMPP. 1.2 Metodologia O procedimento metodológico utilizado neste trabalho teve por objetivo guiar a pesquisa desde sua proposta até a consecução dos objetivos traçados. O primeiro passo consistiu em fazer uma extensa revisão bibliográfica acerca do MMPP e temas correlacionados, como também sobre os principais conceitos e técnicas de otimização multiobjetivo. Em seguida, tem-se a criação dos casos de teste que serão utilizados no processo de experimentação. Esta etapa se faz necessário, tendo em vista que não há nenhum caso de teste disponível. Logo após, houve a criação de todos os operadores de criação, recombinação e mutação. Uma vez que tais operadores estão definidos, então foi possível utilizá-los em conjunto com as abordagens de otimização multiobjetivo escolhidas. Por fim, os algoritmos propostos foram submetidos a um extenso processo de experimentação, tendo em vista identificar qual deles apresenta melhor desempenho. A avaliação dos algoritmos seguiu três etapas: a primeira etapa consistiu no ajuste de parâmetros; a segunda etapa visou identificar qual versão de cada algoritmo é melhor. Por fim, verifica-se qual algoritmo é melhor.

24 1.3 Contribuições 22 O resultado do processo de experimentação foi avaliado com base em métodos estatísticos. Isto foi feito tendo em mente dar maior sustentação aos resultados obtidos, como também maior relevância. Além disso, utilizaram-se dois indicadores de qualidade para avaliar os algoritmos (Hypervolume e Epsilon Multiplicativo, ver seção 4.3.1). 1.3 Contribuições O presente trabalho apresenta um novo problema de otimização multiobjetivo de importante relevância no contexto de otimização em redes. Apresenta-se, também, procedimentos de criação de casos de teste. Além disso, é apresentado neste trabalho toda uma infra-estrutura para resolução do problema proposto levando em consideração uma abordagem algorítimica. Vários procedimentos de grande relevância na literatura de otimização objetivo são utilizados e adaptados para resolução do problema proposto. Por fim, o trabalho constitui-se com uma inovação no contexto de aplicação do MMPP, tendo em vista a exploração de possibilidades não visualizadas anteriormente. 1.4 Estrutura do Texto Este texto está dividido em sete capítulos. O primeiro é este, ele trata da introdução da problemática discutida ao longo do texto. O segundo capítulo, as definições necesssários para tornar a leitura mais clara nos capítulo posteriores. O terceiro capítulo ilustra o estado da arte e traz a definição do modelo matemático proposto (seçao 3.3). O quarto capítulo introduz os conceitos e técnicas de otimização multiobjetivo mais relevantes para este trabalho. O quinto capítulo ilustra todos os algoritmos que foram propostos. O sexto capítulo ilustra o processo de experimentação e os resultados obtidos deste. O sétimo capítulo traz alguns conclusões e sugestões de trabalhos futuros.

25 23 2 Definições Este capítulo ilustra as definições necessárias para o entendimento dos capítulos subsequentes. O capítulo inicia com as principais definições relacionadas ao Multicast, assim como exemplos de aplicação (seção 2.1). Em seguida, ilustram-se definições utilizadas na literatura que estão relacionadas ao problema discutido neste trabalho, principalmente no tocante à definição dos modelos matemáticos (seção 2.2). Logo após, há a definição de dois problemas de otimização importantes e que fazem parte do MMPP são eles: o Problema de Roteamento Multicast (MRP) (seção 2.3); o problema da Árvore de Steiner (seção 2.2). Por fim, tem-se a definição do MMPP e sua relação com a árvore de Steiner e o MRP, como também define-se o Group Multicast Problem (GMP) que possui uma estrutura semelhante ao MMPP. 2.1 Multicast Há três mecanismos que podem ser utilizadas para comunicação em redes de computadores: unicast, broadcast e multicast. Na comunicação através de unicast a informação é enviada de um nó da rede para outro nó, por outro lado, na comunicação broadcast o envio da informação se dá de um nó da rede para todos os outros nós. O multicast consiste em uma técnica para compartilhamento de informação em rede de computadores através do roteamento de dados (seção 2.3) a partir de uma fonte para múltiplos destinos. É possível que haja mais de uma fonte (TANENBAUM; WETHERALL, 2011). A figura 2.1 ilustra os mecanismos mencionados. Em uma comunicação unicast tem-se a constituição de um caminho entre o nó fonte e nó destino. Se houver vários destinos, então vários caminhos serão traçados. Na comunicação broadcast todos os nós recebem a informação enviada pelo nó fonte, mesmo que os destinos não estejam interessados em tal informação. Já na comunicação multicast tem-se a configuração de uma árvore 1 (as linhas mais densas na imagem ilustram a árvore), neste caso apenas os nós interessados na informação transmitida pela fonte 1 Em teoria dos grafos, uma árvore é um grafo conexo e acíclico, onde há um caminho entre quaisquer dois pares de seus vértices.

26 2.1 Multicast 24 Figura 2.1: (a) Exemplo de comunicação unicast. (b) Exemplo de comunicação broadcast. (c) Exemplo de comunicação multicast. Em (b) e (c) destaca-se os destinos. As linhas mais densas indicam o caminho usado para enviar a informação. Fonte: própria. a receberam, consequentemente, reduzindo o consumo de recursos da rede. Sessão Multicast consiste em troca de informação interativa entre dois ou mais dispositivos computacionais. Sessões podem oferecer vários recursos como, por exemplo, controle de diálogo e sincronização. Além disso, há um tempo definido de existência da sessão. Adicionalmente, define-se grupo multicast como um conjunto de vértices que necessitam compartilhar a mesma informação. O grupo pode conter um ou mais nós fonte e contém mais de um nó de destino. Quando a troca de informação tem início implica que a sessão multicast está ativa. Um grupo multicast pode ser estático ou dinâmico. Quando o grupo é estático significa que nenhum nó pode sair ou entrar no grupo enquanto a sessão multicast estiver ativa. Por outro lado, quando o grupo é dinâmico é possível a entrada e saída de membros no grupo (OLIVEIRA; PARDALOS, 2005). Cada grupo multicast possui uma requisição de tráfego associada a ele. O valor de requisição de tráfego indica quanto será consumido da capacidade das arestas. Neste trabalho o valor de requisição de tráfego de cada grupo multicast não será necessariamente igual aos outros. Assim como, um grupo multicast terá apenas uma fonte Aplicações O multicast possui várias aplicações importantes tendo em vista a utilização do conceito de grupos, levando em consideração o estabelecimento de comunicação entre seus membros. Estas aplicações estão distribuídas em diferentes cenários como na educação, saúde entre outros.

27 2.2 Congestão, Dilatação e Capacidade Residual 25 Dentre as principais aplicações de multicast destacam-se algumas 2 Video-conferência (WILLEBEEK-LEMAIR; SHAE, 1997): permite o trabalho colaborativo através da transmissão simultânea de áudio e vídeo. Neste sentido, há possibilidade de interação virtual através de recursos visuais entre mais de um usuário em espaços geograficamente distintos. Distribuíção de Software(HAN; SHAHMEHRI, 2000): consiste na distribuição de software para um grupo de usuários em comum. Um exemplo pode ser uma empresa interessada em distribuir atualizações para um grupo de clientes. A empresa é a fonte do grupo multicast enquanto que os clientes são os destinos. Group-ware: software que atua como suporte ao trabalho colaborativo. É aplicado a diversos segmentos como educação, engenharia de software, pesquisa, fluxo de trabalho. Permite o trabalho em equipe cujos membros estão em regiões geograficamente distintas. Jogos em Rede(WU, 2005): jogos em rede, geralmente, são aplicações com multiusuários, neste contexto tem-se a definição de grupos. Portanto, tem-se a possibilidade de aplicação do multicast para o design da rede e comunicação entre os usuários. 2.2 Congestão, Dilatação e Capacidade Residual Esta seção tem por objetivo definir os conceitos acerca de congestão, dilatação e capacidade residual. Estes conceitos serão utilizados durante o desenvolvimento deste texto, sendo importante para o entendimento dos algoritmos discutidos, uma vez que tais conceitos foram utilizados por alguns autores para conceber a modelagem matemática para o problema estudado em trabalhos disponíveis na literatura. Definição 1 (Congestão). A congestão de uma aresta é igual ao número de árvores que a compartilham (VEMPALA; VöCKING, 1999; LU; ZHANG, 2005). Neste trabalho, a congestão é caracterizada pela soma do tráfego de cada árvore que compartilhe um dada aresta. Definição 2 (Dilatação). A dilatação é o aumento (em número de arestas) no tamanho da árvore devido o compartilhamento do tráfego gerado sobre as arestas. Definição 3 (Capacidade Residual). Capacidade residual é a diferença entre a capacidade de uma aresta menos a utilização da mesma pelos grupos multicast. Capacidade residual mínima é a aresta com menor capacidade residual. 2 O endereço virtual apresenta vários exemplos de aplicação de multicast.

28 2.3 Problema de Roteamento Multicast 26 Dilatação e congestão são conceitos correlacionados, pois diminuir a congestão possivelmente dilatará a árvore (é possível que mais de uma aresta seja usada para substituir outra que estava congestionada). Efeito semelhante ocorre quanto se deseja aumentar a capacidade residual da rede (CHEN; GUNLUK; YENER, 2000). Os conceitos anteriormente definidos são extremamente importantes, sendo utilizados por vários autores na modelagem matemática utilizada pelos mesmos. Alguns modelos utilizam capacidade residual ou congestão como função objetivo. 2.3 Problema de Roteamento Multicast O problema de roteamento multicast consiste em encontrar uma forma de estabelecer a comunicação entre os membros de um grupo multicast de forma eficiente 3. Para conectar os membros de um grupo multicast pode-se utilizar a construção de árvores de Steiner, considerando o nó fonte e os nós de destino como nós terminais. A formulação clássica do problema tem como função objetivo a minimização do custo da árvore. Em (OLIVEIRA; PARDALOS; RESENDE, 2006) o problema de roteamento multicast é discutido na versão mono-objetivo, assim como são apresentadas algumas técnicas de resolução do problema. No mesmo trabalho, os autores apresentam um teorema demonstrando que o problema é NP-difícil. Este problema também recebeu atenção de pesquisadores através de abordagens multiobjetivo.cui, Lin e Wei (2003) trataram o problema levando em consideração 4 objetivos(delay de caminho, utilização de aresta, perda de pacotes e jitter), os autores utilizaram o Algoritmo Genético Multi-objetivo (MOGA) para solucionar o modelo proposto. (CRICHIGNO; BARÁN, 2004b) também fizeram um estudo do problema utilizando um modelo com os mesmos 4 objetivos, eles propuseram um SPEA2. Por fim, Xu (2011) fez um estudo algorítmico do problema utilizando 5 objetivos (custo da árvore, delay do caminho, jitter, delay médio da árvore e utilização de aresta). Os trabalhos mencionados anteriormente utilizam Árvores de Steiner como forma de constituir a conexão entre membros de um grupo multicast. Há outras formas de estabelecer a comunicação entre membros de um grupo multicast como árvores baseadas em centro (núcleo), roteamento baseado em anel entre outros (OLIVEIRA, 2004). No entanto, neste trabalho foi adotado o uso de Árvores de Steiner (seção 2.4), pela experiência do autor em trabalhos anteri- 3 Eficiência pode ser medida com relação ao custo da solução encontrada, desempenho do algoritmo entre outros fatores.

29 2.4 Problema da Árvore de Steiner 27 oes e por haver muitas técnicas para resolulção de Árvores de Steiner já disponíveis. 2.4 Problema da Árvore de Steiner O problema da árvore de Steiner em Grafos consiste em encontrar uma árvore de custo mínimo que contenha um conjunto de nós especiais, chamados nós terminais. Portanto, seja G = (V,E,c) um grafo não-direcionado 4, onde V representa o conjunto de nós do grafo, E representa o conjunto de arestas e c : E R uma função de custo às arestas. Seja também, S V o conjunto de nós terminais (HWANG; RICHARDS; WINTER, 1992). O objetivo é encontrar um árvore T, cujo conjunto de nós V T englobe os nós terminais (S). Além disso, o conjunto V T pode englobar outros nós do grafo, estes nós são chamados de vértices de Steiner (HWANG; RICHARDS; WINTER, 1992). O problema possui dois casos especiais: primeiro, se S = V, então o problema é reduzido a determinação da árvore geradora mínima do grafo; segundo, se o conjunto S possui apenas dois nós, então o problema é reduzido ao problema de caminho mais curto entre estes dois nós (GOLDBARG; LUNA, 2005). O problema da Árvore de Steiner é provado como NP-Difícil (GAREY; JOHNSON, 1979). A figura 2.2 ilustra um grafo G e uma árvore de Steiner obtida de G. Os nós com duplo cículo ilustram os nós terminais Algoritmos Hakimi (1971) apresenta duas abordagens interessantes no intuito de reduzir os limites inferior e superior do espaço de busca, a primeira abordagem é baseada na enumeração de árvores geradoras, enquanto a outra é um algoritmo recursivo de enumeração de topologia. Outro algoritmo que tem como base a geração de árvores geradoras foi proposto por Balakrishnan e Patel (1987). Ainda com relação a abordagens que utilizam enumeração outro algoritmo é apresentado por Shore, Foulds e Gibbons (1982). Dreyfus e Wagner (1971) apresentam uma abordagem com base em programação dinâmica. Vários métodos branch-and-bound foram propostos para resolução do problema dentre eles tem-se (BEASLEY, 1984; ANEJA, 1980; MACULAN, 1987; LUCENA, 1992; KOCK; MARTIN, 1998). Além disso, tem-se a utilização de mecanismo de pré-processamento que 4 Um Grafo não-direcionado G = (V,A) tem o conjunto arestas A formado por pares de vértices não ordenados, além disso as arestas (x 1,x 2 ) e (x 2,x 1 ) são consideradas como uma única aresta

30 2.4 Problema da Árvore de Steiner 28 Figura 2.2: A figura ilustra um grafo com 7 nós e 3 terminais em (a). Ao lado há uma árvore de Steiner para o conjunto de terminais (b). Os nós terminais são os nós com duplo ciclo (1,5,6). Fonte:própria. reduz bastante o tamanho das instâncias. Várias técnicas de redução são discutidas em (DUIN; VOLGENANT, 1987; IWAINSKY et al., 1986; KHOURY; PARDALOS, 1996). O problema da Árvore de Steiner é rico em algoritmos aproximativos. Algumas destas heurísticas são baseadas em árvores geradoras como é o caso do Algoritmo de Kou, Markowsky e Berman (KMB) proposto por Kou, Markowsky e Berman (1981) e também o trabalho de Plesnik (1981). Uma Heurística baseada no algoritmo de Kruskal foi proposta por Wu, Widmayer e Wong (1986). Outra heurística importante foi proposta por Takahashi e Matsuyama (1980) - Algoritmo de Takahashi e Matsuyama (TM). Vários algoritmos baseados em metaheurísticas foram criados para resolução do problema de Steiner em Grafos. Downland (1991) apresenta dois algoritmos: simulated annealing e hillclimbing. Esbensen (1995) e Kapsalis, Rayward-Smith e Smith (1993) apresentam algoritmos genéticos. Martins et al. (1999) apresentam o GRASP com bons resultados. Gendreau, Larochelle e Sanso (1999) apresentam um algoritmo baseado em Tabu-Search, Ribeiro e Souza (2000) apresentam um algoritmo baseado em Tabu-Search que utiliza vizinhança baseada em inserção e remoção de nós de Steiner. Ainda sobre as metaurísticas propostas Ribeiro, Uchoa e Werneck (2001) apresentam um GRASP híbrido com path-relink. Grewal et al. (2004) apresentam uma heurística onde árvores são construídas simultaneamente a partir de cada vértice usando menor caminho. Chakraverty, Batra e Rathi (2006) apresentam heurística baseada na marcação de vértices, cada vértice co-

31 2.5 Multicast Packing Problem 29 meça com um peão que precisa se conectar a outros. Eles vão seguindo em movimento através dos nós deixando rastros, quando todos os peões convergem em um nó é possível montar uma árvore. Luyet, Varone e Zufferey (2007) apresentam um algoritmo de colônia de formigas que supera o algoritmo TM. Hu, Jiang e Qin (2010) ilustram uma busca local baseada na divisão do conjunto de terminais em dois conjuntos disjuntos, a exploração de vizinhança é realizada para cada conjunto gerando mais possibilidades. Por fim, Bouchachia e Prossegger (2011) apresentam uma estratégia em duas fases para resolução do problema, a primeira fase cria clusters no grafo, na segunda fase aplica-se colônia de formigas para construir a solução. 2.5 Multicast Packing Problem O roteamento multicast é útil quando há necessidade de estabelecer a comunicação entre membros de um grupo em uma rede. No entanto, quando há mais de um grupo a ser disposto na rede, simultaneamente, é necessário ter garantias de suporte da rede. Geralmente, algumas restrições são impostas em tais situações, por exemplo, capacidade máxima das arestas. Uma forma para garantir que a rede suportará a formação de mais de um grupo é projetá-la de forma a, obrigatoriamente, suportar tal número de grupos considerando alguma restrição imposta. Neste cenário surge o MMPP. O MMPP consiste em acomodar um conjunto de grupos multicast em uma rede de forma simultânea. Neste caso, busca-se minimizar a congestão sobre as arestas da rede. Além disso, tem-se também o interesse em minimizar o custo de configuração dos grupos multicast (CHEN; GUNLUK; YENER, 2000). A figura 2.3 ilustra a relação entre o MMPP, o problema de roteamento multicast e o problema da Árvores de Steiner. Cada grupo multicast possui uma demanda de comunicação associada. Esta demanda ao trafegar na rede vai ocupar uma quantidade t k da capacidade das arestas durante uma sessão multicast. A congestão é definida pelo maior tráfego acumulado em uma aresta da rede. O objetivo do MMPP é minimizar a congestão. Há outra forma de avaliar a congestão de uma rede após a configuração dos grupos multicast proposta por Lee e Cho (2004) que é baseada em capacidade residual. Neste caso, a capacidade residual é utilizada como na definição 3 da seção 2.2. O objetivo é maximizar a capacidade residual mínima. Outro objetivo possível de ser avaliado é o custo total do conjunto de árvores referente aos grupos multicast. Este objetivo cria um trade-off com a redução da congestão sobre as arestas, uma vez que reduzir a congestão implica, possivelmente, em aumento de arestas nas árvores da

32 2.6 Group Multicast Problem 30 Figura 2.3: Contexto do Multicast Packing Problem. Há dois grupos multicast, grupo 1 e grupo 2. Em seguida aplica-se um mecanismo de roteamento multicast baseado em árvores de Steiner. Por fim, tem-se uma árvore multicast(árvore de Steiner) para cada grupo. As árvores formam uma solução para o problema Fonte: própria. solução. Algumas restrições são colocadas nos modelos como: número de hops e capacidade de arestas etc, (ver (KANG; PARK; PARK, 2009)). 2.6 Group Multicast Problem O GMP possui uma estrutura semelhante ao MMPP. No MMPP há um conjunto de grupos multicast, onde uma árvore multicast é formada para cada grupo. Por outro lado, no GMP há apenas um grupo de nós, onde cada nó possui uma árvore multicast sendo ele o nó fonte e os demais nós do grupo são nós de destino. Todos os nós do grupo possuem uma árvore (LOW; WANG, 1999). O objetivo mais utilizado é a minimização de custo de configuração. Geralmente, esse problema possui algumas restrições como, por exemplo, capacidade máxima das arestas. No entanto, uma maneira diferente de avaliação foi proposta por Randaccio e Atzori (2007), os autores usaram tanto capacidade quanto delay 5 das arestas como forma de medir o desempenho dos algoritmos. 5 Define quanto tempo um bit de dados leva para ser transferido de um nó da rede a outro

33 2.6 Group Multicast Problem 31 Embora as definições do GMP e MMPP tenham algumas diferenças como a função objetivo analisada ou outra restrição discutida em um modelo específico, em geral a estrutura de ambos os problemas é muito semelhante.

34 32 3 Trabalhos Relacionados Este capítulo tem por objetivo ilustrar os modelos matemáticos utilizados na literatura, assim como os algoritmos propostos para resolução do MMPP. O capítulo inicia com a apresentação dos modelos relacionados ao MMPP (seção 3.1), em seguida os modelos e algoritmos aplicados ao GMP são ilustrados e discutidos (seção 3.2). Por fim, apresenta-se o modelo matemático multiobjetivo proposto neste trabalho (seção 3.3). 3.1 Modelos e Algoritmos - Multicast Packing Problem Modelo Proposto por Chen, Gunluk e Yener (2000) Neste trabalho os autores apresentam dois modelos. Inicialmente, é apresentado um modelo onde se considera apenas a congestão sobre as arestas, cujo objetivo é minimizar a congestão máxima. Em seguida eles apresentam uma evolução do primeiro modelo contemplando uma penalidade associada ao custo de configuração da árvore correspondente a cada grupo multicast. O segundo modelo utiliza o conceito de dilatação (ver seção 2.2) para associar uma penalidade de custo às árvores configuradas, para tal eles definem que cada grupo multicast possui uma árvore ótima cujo valor corresponde a quantidade arestas que a formam (CHEN; GUNLUK; YENER, 2000). Os modelos são ilustrados formalmente a seguir. Dado um grafo G = (G,V ): K : conjunto de grupos multicast; t k : requisição de tráfego associada ao grupo k K; T k : árvore de Steiner associada ao grupo k K; λ : a congestão máxima (aresta com maior valor de tráfego sobe ela); xe k {0,1} : variável que indica se a aresta e E está ná árvore T k.

35 3.1 Modelos e Algoritmos - Multicast Packing Problem 33 Demais ítens necessários aos modelos ilustrados serão definidos conforme a necessidade. O modelo 3.1 não considera o fator custo, apenas busca-se minimizar o valor de λ. Min λ Sujeito à : x k e T k, k K t k xe k λ, e E (3.1) k K O segundo modelo proposto é uma extensão do modelo 3.1, onde se adiciona uma penalidade associada ao custo. Para tal, os autores associam um custo ótimo às árovores correspondentes a cada grupo k K. Seja OPT k o custo ótimo associado a cada k K definido assim: OPT k = w e xe k e E (3.2) Na equação 3.2 o peso (custo) w e de cada aresta recebe valor 1. Portanto, uma árvore ótima para um grupo multicast k K é a árvore com a menor quantidade de arestas que conecte seus membros (fonte e destinos). Além disso, uma variável π k 0 é adicionada no intuito de medir a dilatação da árvore para o grupo k K em relação ao seu valor ótimo OPT k. A variável π k está associada a um parâmetro de entrada p k 0 para definir a penalidade relacionada ao custo. A equação a seguir ilustra o somatório do produto entre p k e π k 0 para cada grupo multicast k K: p k π k k K (3.3) A expressão 3.3 define a penalidade associada ao custo da árvore, tendo em vista que a árvore vai, geralmente, ter mais arestas que a árvore de custo ótimo (seguindo a definição acima). Com base nisso altera-se a função objetivo do modelo matemático 3.1, passando a ser definido

36 3.1 Modelos e Algoritmos - Multicast Packing Problem 34 pela expressão 3.4 a seguir: λ + p k π k k K (3.4) Por fim, o modelo 3.1 recebe uma restrição que, segundo os autores, visa controlar a dilatação da rede. A restrição é definida da seguinte forma: π k 1 OPT k { w e xe k αopt k } (3.5) e E O parâmetro α (os autores utilizam α = 2) é utilizado para controlar a dilatação da árvore. Portanto, seja OPT k o valor da árvore de custo ótimo que consiste na quantidade de arestas utilizadas para configurá-la como já foi mencionado, então quanto maior o valor obtido e E w e x k e (w e assume peso ou custo diferentemente da equção 3.2 onde o valor é 1) maior será a dilatação. Logo a penalidade para k será maior, tendo em vista que maior dilatação representa maior custo. É possível que a equação 1 OPT k { e E w e x k e αopt k } viole π k 0, no entanto, os autores não mencionam tal fato. O modelo com a penalidade associada ao custo é, portanto, definido da seguinte forma: Minλ + p k π k k K Sujeito à : x k e T k, k K t k xe k λ, e E k K π k 1 OPT k { w e xe k αopt k } (3.6) e E Algoritmo Para cada grupo multicast os autores encontram uma árvore de custo ótimo (de acordo com a equação 3.2) de forma individual utilizando um algoritmo branch-and-bound (ver (KOCK; MARTIN, 1998)). O conjunto de árvores ótimas que foram obtidas individualmente passa por um pré-processamento visando obter a congestão máxima.

37 3.1 Modelos e Algoritmos - Multicast Packing Problem 35 A saída obtida após o pré-processamento é um conjunto de árvores. Logo, os autores utilizam uma heurística para revisar as árvores e otimizar o valor de congestão. O objetivo é diminuir o valor de congestão com dilatação mínima. O heurística inicia a partir da aresta mais congestionado e, tentando removê-la de uma árvore T k, desconectando-a. Se esta árvore puder ser conectada sem usar e, então substitua e. O algoritmo finaliza sua execução após tentar cada aresta e cada árvore Modelo Proposto por Wang, Liang e Jan (2002) Os autores apresentam um modelo para MMPP levando em consideração a minimização do custo total, ou seja, o custo somado do conjunto de árvores multicast. Neste trabalho, cada grupo multicast possui um conjunto de destinos e um nó fonte diferente. Além disso, é adicionada uma restrição associada à capacidade das arestas (WANG; LIANG; JAN, 2002). Seja: K : um conjunto de grupos multicast; s k : a fonte do grupo multicast k K; D k : nós de destino associados do grupo multicast k K; T k : uma Árvore de Steiner do grupo multicast k K; C(T K ) : custo da árvore T k ; b e : a capacidade da aresta e E; xe k {0,1} : variável binária indicando se a aresta e E está na árvore T k. Os ítens definidos acima são utilizados na construção do modelo proposto pelos autores. O modelo tem como objetivo minimizar o custo de configuração da solução.

38 3.1 Modelos e Algoritmos - Multicast Packing Problem 36 Min C(T k ) k K sujeito à : (3.7) xe k b e e E (3.8) k K D k s k T k k K (3.9) x k e {0,1} k K (3.10) A função objetivo definida na equação 3.7 consiste em minimizar o custo somado de todas as árvores multicast definidas (uma aresta compartilhada por mais de uma árvore só é computada uma vez). Além disso, o modelo tem duas restrições: a primeira visa garantir que a capacidade das arestas não será excedida, ela é definida na equação 3.8; a segunda visa garantir que tanto o nó fonte quanto os nós de destino estão na árvore correspondente, ela é definida por 3.9. Adicionalmente, algumas definições específicas são colocadas pelos autores. Primeiro, seja T k uma árvore de Steiner para o conjunto de terminais D k. Seja P um conjunto de vértices tal que s P e t P, onde P = V P. Com base nos conjuntos P e P define-se um conjunto de corte (P, P) entre s e t que possui um vértice inicial em P e um vértice final em P. A função b(p, P) define a capacidade do conjunto de corte computada como e (P, P) b e o conjunto com menor capacidade é definido como b(p, P ). Por fim, tem-se uma nova definição para o cálculo da capacidade das arestas que utiliza o conceito de capacidade residual (ver definições na seção 2.2). Sendo definido como a capacidade da rede menos a quantidade de tráfego depositada na rede por em uma árvore T k. A função de custo continua sendo a mesma, no entanto altera-se a função de capacidade: b e 1 se e E(T k ) b e = 0, caso contrário (3.11)

39 3.1 Modelos e Algoritmos - Multicast Packing Problem 37 Algoritmos Os autores propuseram três algoritmos heurísticos: um algoritmo guloso; uma heurística baseada em árvore de Steiner e um algoritmo baseado em conjunto de corte. Os autores fazem uma relaxação do modelo para obter um limite inferior, isto é feito obtendo-se uma árvore de Steiner de custo mínimo para cada sessão sem a restrição de capacidade (WANG; LIANG; JAN, 2002). O Algoritmo guloso utiliza o algoritmo TM. O procedimento recebe como entrada a rede G e o conjunto de grupos K. A primeira etapa consiste em encontrar as K árvores de Steiner correspondente ao conjunto de grupos multicast K. Em seguida escolhe-se a árvore de custo mínimo, calcula-se a rede residual com base nesta árvore. Portanto, e T k remove-se 1 do valor de capacidade. Novamente, constrói-se um árvore de Steiner para os K 1 grupos e escolhe aquela com menor custo e remove-se 1 da capacidade das arestas utilizadas. Este processo se repete até construir uma árvore para cada grupo k K. Assim como o algoritmo guloso, o algoritmo baseado em árvore de Steiner utiliza a heurística TM. Aplica-se K vezes o algoritmo TM sobre um grafo que representa a rede. Empacotar tais soluções violará a restrição de capacidade do modelo proposto, então define-se as arestas cuja capacidade foi violada como overloaded links. Um conjunto L com tais arestas é formado. Portanto, o objetivo do algoritmo é reduzir este conjunto à zero, isto é feito removendo-se a aresta de uma árvore solução dividindo-a em duas subárvores, então computa-se o menor caminho entre estas subárvores. Este processo é realizado até o conjunto L ficar vazio. O último algoritmo, é baseado em conjunto de corte. A ideia do algoritmo é extrair as árvores sequencialmente da rede. O conjunto de destino é igual para todos os grupos. A capacidade de um conjunto de corte entre dois nós é igual ao número de caminhos entre eles, isto implica que a capacidade é maior que o número de árvores que podem ser empacotadas. Portanto, a capacidade de um conjunto de corte mínimo é um limite superior do número de árvores que podem ser estabelecidas. O algoritmo inicialmente computa o conjunto de corte para todos os pares de nós em D k, criando C D k 2 conjuntos. Encontra-se o conjunto de corte b(p, P ), escolhe a aresta e com maior capacidade e adiciona a mesma à T k e remove o conjunto b(p, P ) da rede, com isso divide-se a rede em duas sub-redes, então aplica-se novamente o procedimento até que a árvore formada contenha todos os destinos. Repete-se para todos os grupos.

40 3.1 Modelos e Algoritmos - Multicast Packing Problem Modelo Proposto por Lee e Cho (2004) Este trabalho tem como base o trabalho desenvolvido por Chen, Gunluk e Yener (2000). No entanto, eles utilizam uma forma diferente de avaliação. Neste caso, utiliza-se o conceito de capacidade residual como definido na seção 2.2 ao invés de congestão da rede. Segundo Lee e Cho (2004) o modelo proposto por Chen, Gunluk e Yener (2000) não corresponde à um cenário real de aplicação. Eles afirmam que o modelo proposto com base em capacidade residual é mais aplicável em contexto prático, pois as arestas assumem valores de capacidade diferentes. No entanto, os autores utilizam a mesma definição de custo ótimo apresentado por Chen, Gunluk e Yener (2000), onde OPT k representa a menor quantidade de arestas necessárias para conectar o grupo multicast k. Seja: K : conjunto de grupos multicast; T k : árvore multicast para o grupo k K; t k : tráfego gerado pelo grupo k na rede; E : conjunto de arestas da rede; c e : capacidade da aresta e E; d(s) : arestas com um nó pertencente a V \S e outro nó pertencente a S. V representa nós da rede. v k i : indica se o nó i está na árvore T k ; xe k : variável binária indicando se a aresta e está na árvore T k. Além disso, seja a capacidade residual de uma aresta definida como: z e = c e t k xe k e E (3.12) k K Seja também, z a capacidade residual mínima definida como: z = min{z e } e E (3.13)

41 3.1 Modelos e Algoritmos - Multicast Packing Problem 39 Com base nas definições mencionadas tem-se o modelo matemático que visa maximizar a capacidade residual mínima: Max z Sujeito à: (3.14) xe k 1 k K S V S N k N k (3.15) e d(s) v k i x k e v k i k K e E(i) (3.16) v k i xe k i V k K (3.17) e E(i) v k i = 1 + xe k k K (3.18) i V e E c e t k xe k z e E (3.19) k K xe k αopt k k K (3.20) e E z 0 (3.21) v k i,x k e {0,1} (3.22) A função objetivo do problema é definida com relação a capacidade residual - equação O objetivo é maximizar a capacidade residual mínima da rede e deste modo evitar um compartilhamento excessivo das arestas, consequentemente evitando a congestão.a equação 3.15 garante que os nós em N k estejam todos conectados. As restrições 3.16, 3.17 com v k i = 1 e 3.18 garantem uma árvore para cada grupo multicast. A restrição 3.16 indica que o nó i está conectado a árvore T k por uma aresta e. A restrição 3.17 indica que pelo menos uma aresta pertencente ao conjunto E(i) está presente em T k. Por fim, a restrição 3.18 indica que o número de aresta em T K somado de 1 é igual ao número de nós em T k. A equação 3.19 garante que a capacidade das arestas menos o tráfego gerado sobre ela é maior ou igual a capacidade residual mínima atual. A equação 3.20 tem por objetivo limitar o tamanho da árvore a um valor menor ou igual a αopt k, onde α 0 é um um fator de dilatação dado. Por fim, as equações 3.21 e 3.22 garantem a integralidade.

42 3.1 Modelos e Algoritmos - Multicast Packing Problem 40 Algoritmo Os autores propuseram um algoritmo chamado Multiple Multicast Tree Allocation (MMTA). Tal algoritmo se mostrou mais eficiente que o algoritmo proposto em (CHEN; GUNLUK; YE- NER, 2000). Segundo os autores o algoritmo pode ser aplicado a redes reais (LEE; CHO, 2004). Dois métodos são descritos pelos autores highest-bandwidth-first e closest-gap-first. O procedimento highet bandwidth-firt possui duas fases. Constrói-se todas as árvores de Steiner para cada grupo multicast. Em seguida, uma lista ordenada de arestas é mantida de acordo com sua capacidade residual. Este procedimento é utilizado com um requerimento de tráfego uniforme t k = 1. Na primeira fase a aresta mais congestionada é escolhida, ou seja, a aresta com menor capacidade residual. Ela é removida da árvore T k. Uma vez que a aresta foi removida, então a árvore foi particionada em duas subárvores. Para reconectá-la busca-se um caminho alternativo cujas arestas possuam capacidade residual z + 2. Isto melhora a capacidade residual da solução em z + 1. Verifica-se também se o limite αopt k é excedido. Caso nenhum caminho seja encontrado como descrito na primeira fase, então um caminho com capacidade residual z + 1 é selecionado. Uma árvore Tk l que use a aresta l é escolhida, então a aresta l é removido e outro caminho para substituí-lo é procurado como na primeira fase. Portanto, T l k é construída sem l e T k passa a utilizar o caminho alternativo que possui l, desta forma aumentando a capacidade residual. Já o closest-gap-first foi idealizado com base no uso de diferentes requerimentos de tráfego, tendo em vista que o procedimento descrito anteriormente não garante uma solução eficiente em relação ao aumento da capacidade residual. Portanto, os autores definem o conceito de alternative gain(k) que é a diferença entre o valor residual da rede antes e depois da reconstrução da árvore para o grupo multicast k. Encontrar o melhor grupo multicast que aumente o alternative gain(k) é computacionalmente caro. Seja z 1 e z 2 os valores da primeira e segunda arestas mais congestionadas, deste modo pode-se ter um ganho na capacidade residual de no máximo z 2 z 1. Portanto escolhe-se o grupo multicast que possui tráfego mais próximo de z 2 z Modelo Proposto por Kang, Park e Park (2009) Este trabalho apresenta uma formulação diferente do que foi proposto em (CHEN; GUN- LUK; YENER, 2000), o objetivo principal é minimizar o custo de configuração dos K grupos

43 3.1 Modelos e Algoritmos - Multicast Packing Problem 41 multicast. Além disso, adiciona-se as seguintes restrições: número de hops 1 por grupo e capacidade das arestas. O objetivo é construir um conjunto de árvores multicast não excedendo um limite de hops por grupo, minimizando o custo total das configurações (soma dos custos das árvores), e com garantia de não exceder a capacidade das arestas (KANG; PARK; PARK, 2009). Seja: c e = custo associado a aresta e E b e = capacidade associada a aresta e E m = número de grupos multicast s k = fonte da grupo k K D k V = conjunto de destino para o grupo k K h k = número limite de hops por grupo k w k = requerimento de tráfego do grupo k F k = conjunto de árvores multicast para o grupo k F k {e} F k = conjunto de árvores que incluem a aresta e A{k} = conjunto de arestas pertencentes a árvore T k. Além dos itens definidos acima, seja x k f uma variável de decisão indicando se o grupo k usa a árvore multicast T k F k, x k f {0,1}. Com estas definições é possível ilustrar o modelo proposto: 1 Número de hops significa a quantidade de nós intermediários entre dois nós que estão se comunicado, reduzir o número de hops ajuda a reduzir a largura de banda utilizada.

44 3.1 Modelos e Algoritmos - Multicast Packing Problem 42 Min K k=1 f F k C k f x k f Sujeito à: (3.23) f F k x k f = 1, k = 1,..., K (3.24) K k=1 w k x k f b e, e E (3.25) f F k {e} x k f {0,1} f F k, k = 1,..., K (3.26) A função objetivo do modelo visa minimizar o custo somado do conjunto de árvores - equação A restriçao 3.24 garante que cada grupo usará apenas uma árvore de roteamento. A restriçao 3.25 garante que o limite de capacidade de cada aresta não será excedido. Por fim, a restrição de integralidade Neste contexto, C k f é definido como: C k f = w k c e e {k} (3.27) Algoritmo O algoritmo proposto é baseado na abordagem branch-and-price-and-cut. Eles solucionam o problema através de Programacão Linear (PL) utilizando um método de geração de coluna. Além disso, eles melhoram o limite do PL adicionando planos de corte em cada nó da árvore branch-and-bound. O PL obtido em cada nó (Z LP ) dá um limite inferior sobre o valor objetivo ótimo. Se Z PL é igual ao valor de uma solução viável inteira, então é também o valor ótimo do problema. Caso contrário, o restante da árvore branch-and-bound deve ser pesquisada resolvendo cada PL em cada nó usando tanto geração de coluna quanto geração de corte. Foram realizados testes sobre várias intâncias, resolvendo por otimalidade e em tempo consideravelmente bom. A densidade da rede afeta o tempo de execução do algoritmo, como indicam os autores. Durante os testes foram utilizadas rotinas da biblioteca CPLEX 9.1. (ver (IBM, 2012)).

45 3.2 Modelos e Algoritmos - Group Multicast Problem Modelos e Algoritmos - Group Multicast Problem Modelo proposto por Jia e Wang (1997) Este foi o primeiro autor a tratar o problema segundo a definição dada na seção 2.6. O modelo proposto tem por objetivo minimizar o custo. Além disso, há uma restrição associada a capacidade das arestas cujo limite não deve ser excedido. Seja: K : conjunto de árvores multicast; T k : árvore multicast para o grupo k K; E(T k ) : arestas pertencentes a árvore T k ; c e : custo da aresta e E; b e : capacidade da aresta e E; s k : nó fonte do grupo multicast k K; D k : nós de destino do grupo multicast k K; xe k : variável de decisão indicando se a aresta e está na árvore T k. Com base nos ítens acima tem-se o modelo matemático proposto. Os autores dão ênfase a minimização do custo de configuração de uma solução que permite a criação de árvores multicast para um número específico de grupos em uma rede sem violar a capacidade das arestas. Min K k=1 e T k c e, e E(T k ) (3.28) sujeito à: B K k=1 xe k b e onde xe k 1 e E(T k ) = 0 caso contrário (3.29) A restrição 3.29 garante que a capacidade das arestas não será excedida. A restrição de integralidade é garantida pelo fato de que x e só receberá valor 0 ou 1.

46 3.2 Modelos e Algoritmos - Group Multicast Problem 44 Algoritmo O algoritmo é baseado na heurística de árvore geradora mínima. A ideia é muito semelhante ao KMB, onde um grafo induzido G = (V,E ) é processado. Tal grafo possui o conjunto de vértices V = s k D k, as arestas são os menores caminhos entre os elementos de V. Em seguida faz-se a árvore geradora de G. Por fim, obtém os caminhos reais e remove nós folhas que não estejam em D k O algoritmo utiliza um conceito denominado como Alternative Overhead. Suponha a construção de K árvores multicast, em algum momento pode haver concorrência por alguma aresta entre as K árvores. Para tal o Alternative Overhead é computado. Portanto, para todas as árvores que utilizam a aresta concorrida computa-se o custo das mesmas com o uso da aresta e sem o seu uso (neste caso computa-se uma caminho alternativo para substituir a aresta disputada). Deste modo, busca-se construir árvores evitando a concorrência por arestas que não tenha capacidade suficiente, ou seja, já estão sendo utilizadas por outras árvores. Portanto, durante a construção de uma árvore T k se houver a disputa por uma aresta que possa ficar sobrecarregada após a sua utilização, então computa-se o alternative overhead para todas as árvores já construídas. A árvore que apresentar menor alternative overhead deve ceder a aresta para a consutrção da árvore T k. Isto leva a um controle no aumento do custo de construção de uma solução, como também corrobora com a contrução coordenada das árvores correspondentes aos grupos multicast Modelo Proposto por Low e Wang (1999) Este trabalho possui um modelo matemático semelhante ao que é definido na seção 3.2.1, a única diferença é o parâmetro B que indica o requerimento tráfego, onde o valor de B é fixo para todas os grupos multicast, ao contrário do modelo proposto por Low e Wang (1999). Neste novo modelo há um B k com valor diferente associado a cada grupo k K. Portanto, a restrição de capacidade definida na equação 3.29 passa a ser: k k B k x k e b e onde X k e = 1 se e T k (3.30) O conceito de alternative overhead também é utilizado neste trabalho na resolução do problema como mecanismo para melhorar a qualidade das soluções encontradas.

47 3.2 Modelos e Algoritmos - Group Multicast Problem 45 Algoritmo Eles propõem uma heurística capaz de encontrar valores objetivo para as soluções abaixo do que foi encontrado em (JIA; WANG, 1997). O algoritmo faz uso da heurística TM proposta por Takahashi e Matsuyama (1980) e um mecanismo para substituir as arestas, cuja capacidade foi excedida durante a constração das árvores. Para cada d D k uma árvore é construída com a heurística TM. Quando uma árvore é construída verifica-se se há alguma aresta saturada. Se durante a construção de uma árvore T d houver uma aresta saturada, então reconstrói-se a árvore T d sem as arestas saturadas. Em seguida computa-se o alternative overhead da nova árvore T d. Logo após, faz-se o mesmo para todas as árvores já construídas que possuam a aresta com capacidade saturada. Por fim, se o alternative overhead de T d for maior que o somatório dos alternative overheads das árvores que também utilizam a aresta, então a árvore T d usará a aresta saturada e todas as outras árvores usarão caminhos alternativos, caso contrário substitui-se T d por T d Modelo proposto por Randaccio e Atzori (2007) Este trabalho está diretamente relacionado ao MMPP, embora intitulado como GMP (RAN- DACCIO; ATZORI, 2007). Isto se verifica nas comparações realizadas durante os experimentos, dado que os autores comparam os resultados com os algoritmos propostos por (CHEN; GUNLUK; YENER, 2000), (WANG; LIANG; JAN, 2002). Os autores modelaram a rede como um grafo G = (V,E) onde V representa o conjunto de vértices e E representa o conjunto de arestas. Para cada aresta e E tem-se um valor para capacidade e tráfego associado, são eles c e e b e respectivamente. Seja K o conjunto de grupos multicast. Para cada grupo multicast k há um nó fonte s k e um conjunto de nós de destinos D k. Além disso, cada grupo k possui um requerimento de tráfego t k. Uma solução para o problema é representada por um conjunto F = {T 1,...,T K }, onde T k tem como fonte s k e o conjunto de destinos D k. Os autores apresentam duas formulações, estas formulações são baseadas em duas funçoes f B e f C. A função f B está associada a compartilhamento das arestas, onde busca-se a distribuição de tráfego de modo que os recursos sejam utilizados uniformemente. Nesta avaliação, há uma restrição associada ao delay 2, neste caso deve se ter o delay de cada caminho das T k árvores 2 Define quanto tempo um bit

48 3.2 Modelos e Algoritmos - Group Multicast Problem 46 com no máximo D MAX - um limite dado. Já a função f C incorpora tanto o compartilhamento das arestas quanto o delay juntos. O objetivo é obter um compromisso entre delay de serviço e uso de recursos da rede. Algoritmo Proposto Os autores propuseram dois algoritmos genéticos para resolução do problema. O primeiro algoritmo usa a função de custo f B e o segundo algoritmo usa a função de custo f C. Além disso, foi proposto um método para geração de caminhos alternativos utilizando o algoritmo de caminhos mais curto de Dijkstra. O algoritmo genético utiliza um critério de seleção elitista passando diretamente para a nova geração os melhores indivíduos. Os piores indivíduos são substituídos por aplicar novamente o crossover de forma aleatória. A representação utilizada para o cromossomo consiste em ter um vetor que aponte para um array A d onde cada linha representa os destinos do grupo multicast. Cada elemento de uma linha do array A d tem um caminho associado, ou seja, um caminho da fonte para o destino em questão. Os operadores de crossover e mutação são operadores padrões dos algoritmos genéticos. O algoritmo foi comparado com (CHEN; GUNLUK; YENER, 2000) e (WANG; LIANG; JAN, 2002). No entanto, foram implementados algoritmos genéticos e utilizadas apenas a função objetivo de cada trabalho comparado. O objetivo, segundo os autores, foi comparar a distribuição de recursos e delay da rede e não o tempo de execução ou custo Modelo Proposto por Yan-lin (2010) Neste trabalho é apresentado um modelo para o GMP que tem por objetivo minimizar o custo total de construção das árvores multicast. Além disso, duas restrições são adicionadas: capacidade das arestas e delay (YAN-LIN, 2010). Os autores propuseram também uma nova métrica para construção de menores caminhos da fonte para os destinos devido a competição pelas arestas. Seja: G = (V,E) : um grafo onde V é o conjunto de vértices e E é o conjunto de arestas; D : grupo multicast;

49 3.2 Modelos e Algoritmos - Group Multicast Problem 47 d i : fonte do grupo multicast i; B i : requerimento de tráfego da fonte d i e grupo i; i : tolerância a delay para fonte d i e grupo i. C(e) : custo da aresta e E; D(e) : delay da aresta e E; b e : capacidade da aresta e E; P Ti (.) : delay do caminho entre qualquer par de nós na árvore do grupo i. Uma solução para o problema corresponde a T = T 1,...,T m. O modelo matemático utilizado é ilustrado a seguir: Min m i=1 e T i C(e) Sujeito à: m i=1 (3.31) B i x i e b(e), e E T (3.32) D(e) i (3.33) e P Ti (d i,d j ) A equação 3.31 garante que o custo da árvore será mínimo. A equação 3.32 garante que não haverá violação da capacidade das arestas. A equação 3.33 garante que não haverá violação do delay do caminho de um membro do grupo para outro, neste caso levando-se em consideração um limite dado. Além disso, os autores propuseram uma nova métrica para calcular os novos caminhos da fonte para o grupo D. Tendo em vista que o principal problema é a competição por capacidade das arestas. Esta métrica, segundo os autores, apresenta três pontos importantes: construção de caminhos que não violam i ; qualquer aresta no caminho tem capacidade suficiente; diminunição da concorrência por capacidade das arestas.

50 3.3 Modelo Matemático Proposto - Abordagem Multiobjetivo 48 Algoritmo A inicialização das árvores consiste em aplicar o algoritmo de Dijkstra para cada grupo multicast, criando caminhos da fonte do para cada destino do grupo utilizando a métrica proposta. Pode-se utilizar também o algoritmo proposto por Jia e Wang (1997). Em seguida, se verifica se o conjunto de árvores, ou seja, a solução não viola as restrições do modelo. Caso haja alguma violação utiliza-se um método interativo para reorganizar as árvores que possuam arestas sobrecarregadas. As arestas são consideradas sobrecarregadas quando o número de grupos (com respectivo requerimento de tráfego) requerendo a aresta é maior que capacidade da mesma. A aresta mais ocupado é aquele que possui maior sobrecarga. O método verifica se a capacidade das arestas após a construção da solução não foi excedida. Se há alguma aresta com este problema, então selecione o conjunto de árvores que a utilizam e reorganize-as através da substituição da aresta congestionada. Isto é feito para todas os casos de arestas com sobrecarga. 3.3 Modelo Matemático Proposto - Abordagem Multiobjetivo O modelo matemático proposto modela a rede como um grafo G = (V, E), onde V representa o conjunto de vértices e E representa o conjunto de arestas. Seja K o conjunto de grupos multicast que devem ser acomodados em G simultaneamente. Para cada k K existe um nó fonte s k e um conjunto de vértices de destino D k {V \ s k }. O conjunto D k s k forma o grupo multicast para o grupo k. Além disso, cada aresta e E possui um custo c(e) e uma capacidade b(e) associados. Para cada sessão k K existe uma requisição de tráfego t k gerada por k. Tendo em vista que cada aresta possui uma capacidade definida, então a congestão sobre o mesma será medida como em (LEE; CHO, 2004)(ver seção 3.1.3) usando o conceito de capacidade residual. A capacidade residual de uma aresta após a construção da solução final é dada como: z e = b(e) K k=1 t k x k e (3.34) onde x k e {0,1} é uma variável que indica se a aresta e está na árvore associada ao grupo k, 1 quando e está na árvore referente a k e 0 caso contrário. Uma solução para o problema é expressa como T = {T 1,...,T K }. O conjunto E T reprenta

51 3.3 Modelo Matemático Proposto - Abordagem Multiobjetivo 49 as arestas contidas no conjunto solução T. Portanto, sejam as funções objetivo do modelo matemático definidas como: f 1 = K k=1 e E c(e)x k e (3.35) f 2 = max{z e, e E T } (3.36) onde 3.35 determina o custo da solução do problema que consiste na soma dos custos associados a cada aresta presente no conjunto T e, 3.36 determina a aresta com máxima capacidade residual dentre as arestas que estão no conjunto E T, ou seja, a aresta com maior valor de capacidade ainda disponível para alocar. Modelo matemático proposto pelo autor deste trabalho é definido: Otimizar { f 1, f 2 } sujeito à (3.37) T k T, T k = {D k s k } k = 1,..., K (3.38) b(e) K t k xe, k e,e E (3.39) k=1 x k e {0,1} (3.40) A restrição 3.38 garante que cada árvore T k T inclua os membros do grupo multicast, tanto nós de destino quanto o nó fonte. A restrição 3.39 garante que cada aresta em E T não exceda sua capacidade. A restrição 3.40 garante a integralidade.

52 50 4 Otimização Multiobjetivo Este capítulo ilustra os principais conceitos de otimização multiobjetivo. Inicialmente, apresenta-se a definição de um problema multiobjetivo, assim como as relações de dominância (seção 4.1). Em seguida, apresentam-se técnicas de otimização multiobjetivo, enfatizando aquelas que são utilizados neste trabalho (seção 4.2). Por fim, apresentam-se os métodos mais citados na literatura no tocante a avaliação de conjuntos de soluções (seção 4.3). 4.1 Definições Os modelos de otimização multiobjetivo representam, em diversas ocasiões, de uma forma mais apropriada vários problemas de otimização multiobjetivo, especialmente aqueles derivados de problemas do mundo real. Quando os problemas reais exigem a consideração de mais de uma função objetivo o emprego de otimização monoobjetivo poderá levar a soluções não satisfatórias. Na abordagem multiobjetivo é possível que haja trade-off entre os múltiplos objetivos considerados. Neste caso, nas palavras de Deb (2008) em uma otimização multiobjetivo, idealmente, o esforço deve ser feito para encontrar o conjunto de soluções ótimas considerando todos os objetivos importantes Problema Multiobjetivo Um problema multiobjetivo consiste, basicamente, dos seguintes componentes (KNOWLES, 2002; KNOWLES; THIELE; ZITZLER, 2006): Espaço de decisão(φ): Conjunto de vetores de decisão na forma φ = {φ 1,...,φ n }, dizse conjunto viável(φ f ) o conjunto de todos os vetores de decisão que não violam as restrições de validade.

53 4.1 Definições 51 Espaço objetivo(ψ): Representa a imagem de Φ no espaço objetivo n-dimensional, dizse Região Viável(Ψ f ) a imagem de Φ f. Representado por vetores objetivos na forma ψ = {ψ 1,...,ψ n }; Função objetivo( f ): Mapeia os vetores de decisão em Φ f para um espaço objetivo n- dimensional, onde Ψ f = R n. f = { f 1,..., f n }. A função objetivo define que ψ = f (φ). Relação binária(r): Uma relação definida em Ψ afim de dar uma ordem aos elementos. A equação 4.1 a seguir ilustra o modelo matemático genérico de um problema multiobjetivo: Min ψ = f (φ) (4.1) Sujeito φ Φ f A equação 4.1 exemplifica o caso em que todas as funções objetivo são relacionadas a minimização. No entanto, qualquer combinação entre funções de maximização e minimização é possível. Define-se vetor de decisão como um conjunto de variáveis que indicam alguma qualificação no espaço objetivo, ou simplesmente, uma solução. Já vetor objetivo é um conjunto de valores que indicam a posição do vetor de decisão no espaço objetivo. Geralmente, a avaliação das soluções tem como base o vetor objetivo Relação de Dominância Durante o processo de busca é necessário realizar comparações entre as diversas soluções encontradas. Estas comparações em um problema mono-objetivo podem ser realizada através dos operadores <, ou >,, já que o espaço objetivo é definido em R. Quando há mais que uma função objetivo a ser considerada, tem-se a necessidade de definir uma relação binária de modo que alguma ordem entre os vetores objetivo seja estabelecida. Essa relação é definida como dominância. As relações entre os vetores objetivos estão resumidas na tabela 4.1. Adicionalmente, tem-se que uma solução que é não-dominada por nenhuma outra solução é chamada de pareto ótimo, sendo no espaço objetivo um vetor objetivo ótimo. O conjunto

54 4.1 Definições 52 Tabela 4.1: Tabela adaptada de (KNOWLES; THIELE; ZITZLER, 2006) ilustrando as relacões entre vetores objetivos Relação Interpretação no Espaço Objetivo domina estritamente ψ 1 ψ 2 ψ 1 é melhor que ψ 2 em todos os objetivos domina ψ 1 ψ 2 ψ 1 não é pior que ψ 2 em todos os objetivos e melhor em pelo menos um domina fracamente ψ 1 ψ 2 ψ 1 é não pior que ψ 2 em todos os objetivos incomparável ψ 1 ψ 2 nem ψ 1 ψ 2, nem ψ 2 ψ 1 indiferente ψ 1 ψ 2 ψ 1 tem o mesmo valor que ψ 2 em cada objetivo de todas as soluções pareto ótimo é chamado conjunto pareto ótimo e os vetores objetivos correspondentes são definidos como fronteira de pereto ótima. A relação binária definida como dominância é uma relação de ordem restrita. Isso pode ser conferido pelas seguintes propriedades: não reflexividade, ou seja, ψ 1 não domina a si mesmo; e assimetria, pois ψ 1 ψ 2 não implica ψ 2 ψ 1, ver (DEB; KALYANMOY, 2001). As relações definidas na tabela 4.1 são úteis na avaliação de pares de soluções. No entanto, quando se usa algoritmos multiobjetivo se está interessado em encontrar um conjunto de soluções trade-off, ou soluções não-dominadas de acordo com as relações descritas na tabela 4.1. Quando o interesse está na busca por conjuntos de soluções não-dominadas surge a necessidade de prover relações entre conjuntos. Na literatura é amplamente utilizada uma extensão da dominância de soluções para a dominância de conjuntos. A tabela 4.2 ilustra a extensão da relação de dominância de pareto para conjunto de soluções. Tabela 4.2: Tabela adaptada de (KNOWLES; THIELE; ZITZLER, 2006) ilustrando relação entre conjuntos de soluções Relação Interpretação no Espaço Objetivo domina estritamente A B todo ψ 2 B é estritamente dominado por pelo menos um ψ 1 A domina A B todo ψ 2 B é dominado por pelo menos um ψ 1 A melhor todo ψ 2 B é fracamente dominado por pelo menos um ψ 1 A e A B domina fracamente todo ψ 2 B é fracamente dominado por pelo menos um ψ 1 A incomparável A B nem A B ou B A indiferente A B A B e B A

55 4.2 Técnicas de Otimização de Problemas Multiobjetivo 53 Com relação aos conjuntos de soluções tem-se que o ideal seria encontrar o conjunto de pareto ótimo para cada problema em questão. No entanto, nem sempre é possível obter o conjunto de pareto ótimo, seja por demandar tempo de processamento proibitivo, seja em virtude do grande porte do conjunto em questão. Portanto, é comum trabalhar com a geração de conjuntos de aproximação de modo que eles fiquem mais próximos da fronteira ótima considerada 1. O mapeamento de conjuntos de aproximação no espaço objetivo é definido como fronteira de aproximação Diversidade de Soluções e Elitismo Geralmente um dos interesses durante o processo de busca utilizando algoritmos multiobjetivo é a diversidade de soluções na fronteira de aproximação obtida. Portanto, dois aspectos são importantes em um otimizador: ser capaz de gerar soluções da fronteira de pareto ou próximas e ser capaz de gerar soluções que se distribuam ao longo de toda a fronteira de pareto. Na literatura vários mecanismos são utilizados para promover a diversidade ao longo da fronteira de aproximação obtida. Knowles (2002) discute os principais métodos diponíveis na literatura: crowding; pré-seleção; crowding determinístico e compartilhamento de fitness 2. Além disso, apresenta-se também alguns recursos necessários para obteção de diversidade: complexidade de tempo; pressão de seleção; estabilidade; robustez e parametrização (quando conhecimento a priori é necessário). Outro conceito importante que é empregado nos atuais otimizadores é o elitismo. Constituise basicamente em manter um conjunto de soluções durante várias gerações, sendo estas soluções usadas durante o processo de recombinção (KNOWLES, 2002). A ideia do elitismo é simples, porém robusta. Para incluí-la em um otimizador basta prover um mecanismo capaz de manter as soluções não dominadas ao longo das gerações e utilizá-las para criar novos indivíduos de modo que suas caractéristicas sejam derivadas. 4.2 Técnicas de Otimização de Problemas Multiobjetivo Esta seção tem por objetivo ilustrar os principais métodos utilizados para prover a otimização multiobjetivo. Especificamente, serão discutidos os algoritmos evolutionários e adaptações de metaheurísticas. 1 Neste caso pode-se ter a fronteira de pareto ótima ou uma fronteira formada por unir todas as soluções não dominadas dos conjuntos considerados. 2 O fitness é uma forma de qualificar um indivíduo, ou seja, dar um valor de mérito. O valor de fitness de um indivíduo pode ser usados em vários operações de um algoritmo multiobjetivo

56 4.2 Técnicas de Otimização de Problemas Multiobjetivo Algoritmos Evolucionários Os algoritmos evolucionários são intensamente empregados na solução de otimização multiobjetivo. Eles são caracterizados pelo uso de operadores de recombinação e mutação, em mimetização aos métodos de evolução natural. Além disso, estes métodos mantém uma população de indivíduos (soluções para o problema tratado) desde o início de sua execução até sua conclusão. Os principais algoritmos da literatura são ilustrados nesta seção. O objetivo é fazer uma descrição geral das abordagens utilizadas. Os algoritmos que tem relação direta com a pesquisa tem seus detalhes de implementação descritos nos apêndices A, B e C. Abordagem não Elitista O primeiro algoritmo multiobjetivo chamado Vector Evaluated Genetic Algorithm (VEGA) foi proposto por Schaffer (1984). A ideia do algoritmo é fazer a seleção de indivíduos para recombinação levando em consideração cada objetivo. Deste modo, cada parcela do conjunto de indivíduos selecionados está guiando a busca em uma direção específica da fronteira de pareto. O trabalho pioneiro no uso da relação de dominância foi realizado por Fonseca e Fleming (1993) que propuseram o MOGA. A ideia principal é associar um rank para os indivíduos com base no conceito de dominância. Este rank consiste em 1 + n, onde n representa o número de soluções que dominam o indivíduo. Os indivíduos não dominados são selecionados para recombinação. Outro trabalho utilizando a abordagem puramente multiobjetivo foi proposto por Srinivas e Deb (1994), o Nondominated Sorting Genetic Algorithm (NSGA). Este trabalho apresenta um importante aspecto relacionado a avaliação de fitness, onde se busca preservar a diversidade na fronteira de pareto e também maior aproximação à fronteira de pareto ótima. O procedimento classifica as soluções da população corrente em classes de fronteiras. A primeira classe recebe todos os indivíduos não-dominados da população, os indivíduos recebem valor de rank igual a 1. As classes seguintes são definidas com a avaliação da população sem considerar os indivíduos já classificados anteriormente e o valor de rank para cada classe vai sendo incrementado em 1.

57 4.2 Técnicas de Otimização de Problemas Multiobjetivo 55 Abordagem Elistista O primeiro procedimento que surgiu na literatura seguindo a ideia de elitismo foi proposto por Zitzler e Thiele (1998), o Strength Pareto Evolutionary Algorithm (SPEA). Uma contribuição interessante deste trabalho foi a ideia de manter uma população externa de soluções não-dominadas, os indivíduos presentes na população externa também são incluídos no processo de recombinação. O procedimento de avaliação de fitness dos indivíduos consiste em unir a população corrente e os indivíduos presentes na população externa. Deste modo, os indivíduos não dominados que estão presentes na união da população corrente com a população externa formarão a nova população externa. Não há controle no tamanho da população. Algumas mudanças foram realizadas no SPEA gerando uma nova versão do algoritmo (ZITZLER; LAUMANNS; THIELE, 2001), SPEA2. Este procedimento difere da versão anterior em três aspectos. Primeiro, a atribuição de fitness de um indivíduo é determinada por três fatores: número de indivíduos dominados - strength; soma dos valores de strength de cada indivíduo que o domine; informação de densidade baseado no k-ésimo vizinho mais próximo. Esta última informação visa diferenciar indivíduos que possuam as duas primeiras informações semelhantes. Segundo, o tamanho do arquivo é fixo, diferentemente da primeira versão. Por fim, é empregado um mecanismo de truncamento quando o número de soluções excede o limite de tamanho do arquivo ao invés de usar um arquivo com tamanho ilimitado (esta estratégia privilegia soluções mais afastadas entre si). Mais detalhes sobre a implementaçao são discutidas no apendice B. Seguindo esta linha de abordagens elitistas Deb et al. (2002) propuseram uma versão elitista do NSGA chamado, simplesmente, de NSGA2. O procedimento consiste em unir os membros da população com os filhos gerados em uma única população. Em seguida classificam-se os indivíduos em classes como é feito no NSGA. Os indivíduos das classes definidas vão sendo adicionados a nova população. Caso a última classe que esteja sendo considerada tenha mais pontos que a população ainda suporte (população não atingiu seu limite de indivíduos), então aplica-se um mecanismo de seleção para decidir que pontos vão para população. Tal mecanismo consiste em ordenar os pontos pelos valores de distância de crowding (escolhe-se os indivíduos com maior valor de crowding dando privilégio as soluções de regiões da fronteira de pareto menos populosas). Mais detalhes sobre a implementação são discutidas no apêndice A Foram apresentados nesta seção alguns importantes algoritmos para resolução de problemas multiobjetivo. O grande número de diferentes algoritmos evolucionários dedicados à solução de problemas multiobjetivo torna inviável uma revisão mais detalhada, de forma que a presente revisão focou os principais trabalhos. Alem disso, se deu prioridade as abordagens relacionadas

58 4.2 Técnicas de Otimização de Problemas Multiobjetivo 56 a presente pesquisa Outras Técnicas Há outros mecanismo utilizados em otimização multiobjetivo que consistem de adaptações de metaheurísticas aplicadas à otimização monoobjetivo. Um detalhe interessante destas abordagens é o fato de elas não manterem uma população de solução que evolui durante o processo de busca. Alguns exemplos são listados Busca Tabu : (HANSEN; HANSEN, 1997); Simulated Annealing : (BANDYOPADHYAY et al., 2008); Particle Swarm : (PARSOPOULOS; VRAHATIS, 2002; COELLO; LECHUGA, 2002; PARSOPOULOS; VRAHATIS, 2008) Colônia de Formigas : (MARIANO; M., 1999; LOPEZ-IBANEZ; PAQUETE; STUTZLE, 2004; DOERNER et al., 2006). GRASP Outra metaheurística que é amplamente utilizada para problemas monoobjetivo e vem sendo adaptada para problemas multiobjetivo é o GRASP (MARTí et al., 2011; ARROYO; VIEIRA; VIANNA, 2008). De modo geral, o funcionamento do GRASP consiste em construir uma solução através de um procedimento semi-guloso e, em seguida, aperfeiçoá-la através de uma busca local. Ao longo das iterações o procedimento semi-guloso pode ser adaptado para obter melhores soluções. A aplicação do GRASP para problemas de otimização multiobjetivo, em geral, faz uso de soma ponderada. Em (HIGGINS; HAJKOWICZ; BUI, 2008) utiliza-se soma ponderada com o vetor de peso sendo escolhido aleatoriamente, além disso uma população externa é mantida. A busca local é aplicada a indivíduos selecionados aleatoriamente da população externa. Arroyo, Vieira e Vianna (2008) aplicam uma GRASP multiobjetivo para Árvore Geradora Mínima Multicritério. A construção é guiada por um combinação ponderada dos objetivos. Em (LI; LANDA-SILVA, 2009) o GRASP multiobjetivo apresenta um recurso interessante na fase de construção. Os indivíduos são construídos com a utilização de elementos de indi-

59 4.3 Avaliações de Conjuntos de Aproximação 57 víduos não dominados já conhecidos. Para obter diversidade na fronteira de pareto utiliza-se vetores de fatores distintos. Outra abordagem interessante foi desenvolvida por (REYNOLDS; IGLESIA, 2009). Na fase de construção os autores utilizam uma ponderação dos objetivos através de um vetor de pesos gerado aleatoriamente. Após a fase de contrução os autores tem um conjunto de indivíduos não dominados. Em seguida, aplica-se a busca local aos indivíduos não-dominados. Neste trabalho, uma algoritmo baseado na ideia do GRASP foi implementado (os detalhes da implementação serão discutidos no apêndice C). 4.3 Avaliações de Conjuntos de Aproximação Até o presente momento foram discutidos vários aspectos da otimização multiobjetivo. No entanto, um aspecto não menos importante neste contexto é a avaliação de conjuntos de aproximação. No processo de solução de um problema multiobjetivo é importante poder diferenciar que conjunto é melhor, supondo que haja a aplicação de mais de um otimizador. Fazer tal declaração não é uma atividade trivial e requer algumas considerações importantes Indicadores de Qualidade Um indicador de qualidade é uma função que mapeia um conjunto de aproximação C para um valor real como ilustra a equação 4.2 I : C R (4.2) A equação 4.2 ilustra um indicador de qualidade I unário, no entanto, é possível ter também indicadores binários. Segundo Zitzler, Knowles e Thiele (2008) qualquer função que leve de C até um valor do conjunto R pode ser um indicador de qualidade. Adicionalmente, é necessário preencher alguns requisitos: 1. Monotonicidade: O valor atribuido pelo indicador de qualidade deve corroborar com a informação da estrutura de preferência (relação de dominância). Por exemplo: A,B A B I(A) > I(B) A e B Conjuntos de Soluções (4.3)

60 4.3 Avaliações de Conjuntos de Aproximação Invariância de Escala: Qualquer transformação nos valores objetivos (R n R n ) não deve afetar o indicador. 3. Esforço Computacional: Quanto esforço é necessário para utilizar o indicador de qualidade, isto se torna mais complexo quando se utiliza o indicador dentro da busca como um direcionador do processo de evolução da população. 4. Conhecimento do Problema: Quanto menos dependência houver em relação a conhecimento do problema (conjunto de referência por exemplo) mais interessante se torna o indicador. Uma observação importante sobre o uso dos indicadores de qualidade é a seguinte: dada a utilização de um indicador de qualidade específico, então é necessário afirmar que um algoritmo obtém conjuntos de aproximação melhores que outro algoritmo com base no indicador utilizado. Há outros indicadores importantes como é o caso dos indicadores r (ver (HANSEN; JAZS- KIEWICS, 1998)). Assim como, o método de attainment function proposto por (FONSECA; FONSECA; HALL, 2001). Em (ZITZLER; KNOWLES; THIELE, 2008; ZITZLER et al., 2002) há uma discussão mais ampla sobre avaliação de conjunto de soluções. O restante desta seção trata de alguns indicadores de qualidade que são mais citados na literatura. São eles Hypervolume e o Epsilon. Indicador Hypervolume O indicador Hypervolume I H foi proposto por Zitzler e Thiele (1999). Consiste em verificar a quantidade do espaço objetivo que é fracamente dominado por um conjunto de aproximação. Neste caso, quanto maior for o valor atribuído a um conjunto de aproximação melhor ele é qualificado. De modo formal, tem-se que se o I H (A) > I H (B) indica que o conjunto A é melhor que o conjunto B com relação ao indicador Hypervolume. Para sua computação é necessário o conhecimento de um ponto que seja estritamente dominado por todos os pontos dos conjuntos comparados. A figura 4.1 ilustra um exemplo de Hypervolume: Caso o espaço objetivo não seja limitado então é necessário encontrar um ponto que seja, pelo menos, dominado fracamento por todos os pontos. O ponto em questão é denominado ponto de nadir. Neste trabalho utiliza-se a implementação do Hypervolume disponível na Plataform and Programming Language Interface for Search Algorithms (PISA) (BLEULER et al., 2002). Esta implementação avalia o hypervolume de uma forma diferente da definição dada anteriormente.

61 4.3 Avaliações de Conjuntos de Aproximação 59 Figura 4.1: Exemplo de Hypervolume o ponto preenchido de cor preta ilustra o ponto de referência. A área cinza ilustra a região do espaço objetivo dominada. f Nadir f 1 Fonte: própria Neste caso, quanto menor o valor do hypervolume melhor qualificado o conjunto será. Esta observação é importante, já que este indicador é utilizado na avaliação de configurações de parâmetros (ver seções 6.2 e 6.3). Indicador epsilon Aditivo e epsilon Multiplicativo Os indicadores epsilon aditivo I ε + e epsilon multiplicativo I ε foram propostos por Zitzler et al. (2003). Estes indicadores podem ser utilizados tanto na forma unária quanto na forma binária. Na forma binária tem-se I ε (A,B) para o caso multiplicativo que indica um fator pelo qual o conjunto B pode ser multiplicado de modo que ele seja fracamente dominado por A. De modo análogo tem-se I ε +(A,B) que indica um fator que pode ser somado aos vetores objetivos de B de modo que o mesmo seja dominado fracamente por A. O indicador unário tem a seguinte forma: I ε + (A) = I ε +(A,R), onde R representa um conjunto de pontos de referência. Isto também vale para o caso multiplicativo. Todos as formas do indicador epsilon, seja o multiplicativo ou aditivo se valem da seguinte relação: ψ 1 ε ψ 2 i 1,...,n : ψi 1 ε( ou +)ψi 2 ψ 1 A e ψ 2 B(R). (4.4)

62 4.3 Avaliações de Conjuntos de Aproximação 60 Um aspecto interessante deste indicador de qualidade é seu baixo custo computacional. A figura 4.2 ilustra uma exemplo do uso do indicador epsilon. Figura 4.2: A figura ilustra as áreas que são ε-dominadas pelo conjunto A 1. Por exemplo, I ε (A,P) = 4, indicando que o conjunto B deve ser multiplicado por 4, ou seja, ε > 1. Quanto menor o valor do ε melhor o conjunto. r for any A, B Ω B C I,E (A, B) Ω A C I,E (A, B) 5 f 2 is terminology, let us go back to the f in Fig. 2 and consider the followtor I, which is inspired by concepts Figure 4: The : Fonte:(ZITZLER dark-shaded area et al., depicts 2003) the subspace that is -dominated by the solutions in A 1 for = 9 10 ; the medium-shaded area represents the subspace inary -indicator) Suppose withrality a minimization problem with light-shaded area refers to the subspace -dominated weakly dominated by A 1 (equivalent to = 1); the ives, i.e., Z IR +n. An objective Rank de Dominância by the solutions in A 1 for = 4. Note that the areas are overlapping, i.e., the medium-shaded area in- 2,..., zn) 1 Z is said to -dominate vector z 2 = (z1, 2 z2, 2..., zn) 2 Z, cludes the dark-shaded one, and the light-shaded area z 2, if and only if Outra forma de comparação includes both deof conjuntos the other deareas. aproximação é realizada através de rank de i n : zi 1 dominância. zi 2 Isto pode ser feito de modo semelhante ao que é feito por Fonseca e Fleming (1993) que atribui o fitness dos indivíduos com base na relação de dominância. Para comparação. We define the binary -indicator For instance, I (A 1, A 2 ) = 1, I (A 1, A 3 ) = de conjuntos pode se usar a relação (melhor) definido na tabela , and I (A 1, P ) = 4 in our previous example (cf. Fig. 4). In f IR { z2 B z 1 A : Knowles, z 1 z 2 } Thiele the e Zitzler single-objective (2006) ilustram case, uma I (A, forma B) simply de usar is the o rank ratio de dominância para between the two objective values represented by A comparação de otimizadores. and B. Supondo que haja A i e B i conjuntos de aproximação, onde i = oximation sets A, B Ω. 1,...,n representam os Now, n conjuntos what decomparison aproximação methods para dois can otimizadores be constructed using the -indicator? Consider, e.g., the dados. Tem-se C r gives the factor umby conjunto which an formado aps worse than another with respect to pela união dos A Boolean function i e B E := i conjuntos de aproximação. Portanto: (I (B, A) > 1). The corresponding comparison method C I,E is -complete as to be more precise: I (A, rank(c B) equals i ) = 1 + A {C j B C implies : C j Cthat i } that I (B, A) > 1. On the other (4.5) tor such that for any solution in B hand, C I,E is not -compatible as A B also implies one solution in A that is not worse n all objectives. 2 that I (B, A) > 1. If we choose a slightly modified In Apractice, equaçãothe 4.5 ilustra Boolean o rank function de dominância F := (I (A, comb) base 1nas relação I (B, A) de > conjuntos de aproximação sendo utilizados 1), no then intuito we obtain de atribuir a comparison um valormethod para cada C I conjunto.,f that isneste caso, o valor ulated as ) = max min max zi 1 both -compatible and -complete. The differences atribuído a um conjunto é a quantidade de indivíduos que o dominam mais um. z 2 B z 1 A 1 i n zi 2 between the two comparison methods are graphically depicted in Fig. 5. nner, an additive -indicator Uma Ivez + can quebe cada conjunto de aproximação gerado pelos otimizadores tem um valor atribuido ao mesmo, pode-se studylançar and classify mão dequality métodos indicators estatísticos using (porthe exemplo, above estatística não pa- In the remainder of this paper, we will theoretically inf IR { z2 B z 1 A : z 1 + z 2 } ramétrica) para verificar framework. se há diferença Givennas a particular amostra obtidas. quality indicator (or a combination of several indicators), we will investigate whether there exists a Boolean function such and only if 1 i n : zi 1 + z2 i that the resulting comparison method is compatible and in addition complete with respect to the vari- P A 1 A 2 A 3 ε < 1 ε = 1 ε > 1

63 61 5 Algoritmos Propostos Este capítulo apresenta de forma detalhada todos os algoritmos propostos. Inicialmente, descreve-se a representação de solução adotada (5.1). Em seguida, os operadores de criação de solução, recombinação e mutação são apresentados (seções 5.2, 5.3 e 5.4), estes operadores formam a base para composição dos algoritmos propostos. Uma estrutura de vizinhança e um operador de buscal local também foram implementados (seção 5.5). Por fim, apresenta-se os algoritmos propostos que fazem uso dos operadores mencionados (seções 5.6, 5.7 e 5.8). 5.1 Representação de Solução Um aspecto importante na criação de algoritmos de busca para problemas de otimização é a estrutura de representação que será adotada para o problema. Várias são as representações existentes na literatura, ver (LUKE, 2009, Capítulo 4) e (HAGHIGHAT et al., 2004). Neste trabalho, adotou-se uma representação de solução que pudesse facilitar as operações de criação e recombinação. A estrutura de representação de uma solução para MMPP tem como base o uso de árvores de Steiner (uma árvore para cada grupo multicast, ver capítulo 2). A figura 5.1 ilustra a estrutura utilizada. A figura 5.1 ilustra uma solução para o MMPP. No exemplo, o caso de teste utilizado possui 5 grupos multicast. Portanto, para cada grupo multicast uma árvore é criada (na figura ilustra-se a árvore do grupo 1). A estrutura de dados utilizada para armazenar as árvores é uma lista, seu tamanho é definido pela quantidade de grupos (no exemplo o tamanho da lista é 5). Cada árvore de Steiner é representada por uma lista de arestas. A lista de arestas não tem tamanho fixo, pois o número de arestas que conectam o nó fonte e os nós de destino pode variar de tamanho. Ou seja, é possível conectar o grupo multicast com várias árvores de Steiner diferentes.

64 5.2 Criação de Solução 62 Figura 5.1: Representação de uma solução para o MPP. A figura ilustra uma solução que possui 5 grupos multicast, para cada grupo uma árvore de Steiner é criada. No exemplo, a árvore do grupo 1 é ilustrada. Grupo 1 Grupo 2 Grupo 3 Grupo 4 Grupo Árvore de Steiner Fonte:própria. Destino Fonte 5.2 Criação de Solução A criação de uma solução para o MMPP está diretamente relacionada às árvores de Steiner, tendo em vista que cada grupo possui uma árvore associada. Nesta seção, descreve-se duas heurísticas para criação de árvores de Steiner e um algoritmo para remoção de nós folhas que não sejam terminais (seção 5.2.1). Por fim, apresenta-se o algoritmo de criação de soluções para o MMPP Criação de Árvore de Steiner Algoritmo Baseado em Caminho mais Curto O primeiro algoritmo para criação de árvores de Steiner é uma versão modificada da heurística proposta por Takahashi e Matsuyama (1980). Este algoritmo é baseado em caminho mais curto entre dois nós. O algoritmo 5.1 ilustra a Versão aleatória do Algoritmo TM (RTM). Na versão original o algoritmo TM inicia o seu processamento adicionando um nó x para árvore S, em seguida o próximo nó terminal y mais próximo da árvore T é escolhido (a escolha tem como base caminho mais curto entre x e y). Este processo é realizado até que todos os nós

65 5.2 Criação de Solução 63 terminais sejam adicionados à árvore S. Algoritmo 5.1: Criação de árvore de Steiner baseado em Takahashi e Matsuyama (1980) Entrada: Problema P, GrupoMulticast k Saída: Árvore S 1 D k P.destinos(k); 2 s k P.fonte(k); 3 S s k ; 4 pos NumAleatorio(0,tamanho(D k )); 5 d D k [pos]; 6 caminho Dijkstra(s k,d); 7 S AdicionaLinks(caminho); 8 remove(d,d k ) ; 9 enquanto tamanho(d k ) > 0 faça pos NumAleatorio(0,tamanho(D k )); d D k [pos]; pos NumAleatorio(0,tamanho(S)); j S[pos]; caminho Dijkstra(d, j); S AdicionaLinks(caminho); remove(d,d k ) ; fim RemoveNãoTerminaisFolha(S); No algoritmo modificado, o nó fonte s k é adicionado à árvore S (linha 3), um nó de destino d D k também é escolhido aleatoriamente (linha 5) entre os nós presentes em D k, o nó d é adicionado à arvore S através de um caminho mais curto entre s k e d (linhas 6 e 7). Em seguida, tem-se o loop (linhas 9 até 17) para adição dos n 1 nós de destino pertencentes a D k (é possível que D k < n 1, pois outros nós de destino podem estar no caminho entre s k e d). Durante o loop (a condição de parada consiste em ter todos os nós em D k adicionados à S) um nó d S e um nó j D k j / S são selecionados aleatoriamente (linhas 10 até 13), então o nó j é incluído na árvore S através do caminho mais curto entre d e j (linhas 14 e 15). Este algoritmo tem por objetivo gerar árvores de Steiner com custo diversificado, diferentemente do algoritmo TM que tem por objetivo minimizar o custo de construção de uma árvore de Steiner. O algoritmo 5.1 utiliza o caminho mais curto para adicionar um nó de D k à árvore o que tende a minimizar o custo da árvore. No entanto, a escolha de nós do conjunto D k leva a diversidade de árvores, já que os nós são escolhidos aleatoriamente.

66 5.2 Criação de Solução 64 Algoritmo Baseado em Árvore Geradora Mínima O segundo algoritmo utilizado para criação de árvore de Steiner tem como base árvores geradoras mínimas utilizando uma versão modificada do algoritmo proposto por Kruskal (1956). O algoritmo 5.2 ilustra o Algoritmo de Árvore Geradora Mínima modificado (RAGM). Algoritmo 5.2: Algoritmo para criação de árvore baseado em árvore geradora mínima Entrada: Problema P, GrupoMulticast k Saída: Árvore S 1 Vetor H = /0; 2 R GrafoDoProblema(P); 3 DisjointSet SET retornanos(r); 4 para e R faça 5 e.capacidade 1 e.capacidade; 6 Adicionar(H, e); 7 fim 8 Ordenar(H); 9 enquanto Vazio(H) verdadeiro faça pos NumAleatorio(0,tamanho(H) 0.3); e H[pos]; se retornaconjunto(set, e.v) retornaconjunto(set, e.w) então Unir(SET, e.v, e.w); AdicionaLinks(S, e); fim fim RemoveNãoTerminaisFolha(S); O algoritmo 5.2 apresenta duas características diferentes que não estão presentes no algoritmo para árvore geradora mínima proposto por KRUSKAL. Primeiro, a capacidade das arestas tem o valor de capacidade multiplicado por 1 (linhas 4 até 7), isto implica que as arestas com maior capacidade passaram a ser vistas pelo algoritmo como as arestas com menor valor (peso da aresta). Segundo, utiliza-se uma lista restrita de candidatos (linha 10) na seleção das arestas que devem ser adicionadas a árvore geradora que está sendo montada (procedimento semelhante ao que é proposto por Martins et al. (1999)). Note-se que o algoritmo obtém uma árvore geradora que não é de minimização. Além disso, a mesma árvore geradora não será obtida com a repetição do algoritmo no mesmo grafo e com o mesmo conjunto de terminais (no caso do multicast o conjunto formado por nó fonte e nós de destino). As mundanças adicionadas ao algoritmo de Kruskal tem o propósito de promover a diversidade na geração de árvores geradoras. Como o objetivo é obter uma árvore de Steiner, então ao final da construção da árvore

67 5.2 Criação de Solução 65 geradora um procedimento de remoção de nós folhas não-terminais é aplicado na linha 17 (ver seção 2.4 sobre não-terminais). Algoritmo de Reparação de Árvores de Steiner Os algoritmos descritos possuem um procedimento em comum chamado RemoveNãoTerminaisFolha, este procedimento é responsável por remover todos os nós folhas que não sejam nós terminais (no caso do multicast remover nós folhas que não são nós de destinos). Algoritmo 5.3: Algoritmo para remoção de nós folhas que não sejam nós terminais (destino) Entrada: Árvore S V retornanossteiner(s) ; para v V faça se Grau(v)= 1 então E S RetornaLinks(S); para e E S faça se e.v = v ou e.w = v então remove(s, e); fim fim fim fim O algoritmo 5.3 simplesmente verifica se os nós de Steiner possuem grau 1, se isto for verificado removem-se as arestas em que tais nós estejam presentes Algoritmo de Criação de Solução O algoritmo de criação de solução para o MMPP incorpora as heurísticas descritas na subseção Supondo que haja n grupos multicast que devem ser configurados em uma rede, então n árvores de Steiner devem ser criadas. Além disso, durante a criação de uma solução, o algoritmo força a construção de cada árvore de Steiner para os n grupos multicast preservando a viabilidade da solução. O algoritmo 5.4 recebe como entrada um grafo G e os grupos multicast K. A saída do algoritmo é uma solução I. A construção de uma solução para o MMPP consiste de um loop (linhas 1 até 8), onde as árvores são criadas para cada k K. Em cada iteração um grupo multicast k K é escolhido aleatoriamente (linha 2). Em seguida, as arestas que não possuem capacidade suficiente para acomodar o grupo k são removidas

68 5.2 Criação de Solução 66 Algoritmo 5.4: Algoritmo de Criação de Solução. O algoritmo incorpora as heurísticas para criação de árvore de Steiner definidas na subseção Entrada: Grafo G, ConjGrupoMulticast K Saída: Solucao I 1 enquanto K > 0 faça 2 k EscolheGroupAleatorio (K); 3 RemoveArestaSemCapacidade (G,k); 4 h EscolheHeurísticaAleatória (); 5 S GerarArvore (G,k); 6 Adicionar (I,S); // Restaura as arestas removidas 7 Restaurar (G); 8 remove (K,k); 9 fim do grafo G (linha 3). A remoção das arestas se faz necessária para forçar a construção de uma árvore de Steiner para o grupo k sem violar a solução I. Após a remoção das arestas que não suportam o grupo k, escolhe-se a heurística h aleatoriamente (pode ser uma das heurísticas descritas na subseção 5.2.1) e a utiliza para criar uma árvore de Steiner S (linhas 5 e 6). Em seguida, a árvore S é adicionada a solução I (linha 6). Por fim, o grafo G é restaurado (linha 7). Ou seja, as arestas que foram removidas por não possuirem capacidade suficiente para acomodar o grupo k são adicionadas novamente ao grafo G, permitindo que outro grupo as utilize caso seja possível. Na linha 8 o grupo k é removido de K. O algoritmo de criação de soluções possui dois pontos importantes. Primeiro, a escolha do grupo em cada iteração do loop (linhas 1 até 8) é feita aleatoriamente para evitar viéis. Pois, se a escolha do grupo multicast na linha 2 fosse feita de modo linear (grupo 1, grupo 2 até grupo n) os grupos multicast mais próximos de n sempre teriam uma árvore de Steiner sendo construída com o grafo com as arestas com pouca capacidade. Segundo, a escolha da heurística h na linha 4 visa gerar diversidade na construção das árvores de Steiner, pois as heurísticas para construção de árvores de Steiner focam em objetivos distintos (minimizar custo ou maximizar a capacidade residual). Portanto, a solução gerada pelo algoritmo 5.4 incorpora árvores de Steiner criadas pelas duas heurísticas descritas na seção 5.2.1, sem dar prioridade a nenhum objetivo específico (custo ou capacidade).

69 5.3 Operadores de Recombinação Operadores de Recombinação Esta seção trata dos algoritmos utilizados para recombinação dos indivíduos. No total, foram implementados quatro algoritmos, um algoritmo para mutação dos indivíduos e três algoritmos de recombinação. O objetivo do desenvolvimento de tais algoritmos foi encontrar o que se adeque mais ao problema, ou seja, que melhore a qualidade de solução que é gerada após a aplicação Recombinação para Árvores de Steiner O operador de recombinação descrito nesta subseção é aplicado à árvore de Steiner. Ele é baseado no operador proposto por (RAVIKUMAR; BAJPAI, 1998). O algoritmo descrito aqui será utilizado para criação de operadores de recombinação aplicados às soluções do MMPP. O procedimento original recebe como entrada duas árvores de Steiner S 1 e S 2 e obtém a intersecção entre elas (a interseção é definida como as arestas comuns às árvores S 1 e S 2 ). Em seguida, utiliza-se conjuntos disjuntos para unir as arestas obtidas pela interseção. Ao final do procedimento os nós folhas não-terminais são removidos. O algoritmo 5.5 ilustra o pseudo-código do operador de recombinação aplicado à árvore de Steiner. Duas modificações foram realizadas em relação ao algoritmo original. Primeiro, após a interseção entre os dois indivíduos (linha 1) faz-se um teste para verificar se o conjunto resultado não está vazio. Se o conjunto estiver vazio, optou-se por escolher a árvore com menor custo (linhas 2-9). Caso, o conjunto não esteja vazio, então faz-se a união dos componentes através da estrutura de dados conjuntos disjuntos (linha 10). Após isto, verifica-se os nós de destinos que ainda não estão presentes na árvore T (linhas 12-16). Por fim, remove os nós não-terminais que são folhas da árvore T Operador de Recombinação C1 O operador de recombinação C1 é um operador de um ponto padrão. Tendo em vista que uma solução para o MMPP consiste de uma lista de árvores de Steiner (uma árvore de Steiner para cada grupo multicast), então define-se um ponto de corte e faz a troca entre as árvores de dois indivíduos. O algoritmo 5.6 ilustra o pseudo-código do operador C1. Na linha 2 define-se um ponto de corte entre 0 e K na implementaçao usando lista ou vetor o índice inicia por 0 e vai até n-1

70 5.3 Operadores de Recombinação 68 Algoritmo 5.5: Algoritmo de recombinação aplicado à árvore de Steiner baseado no algoritmo proposto por Ravikumar e Bajpai (1998) Entrada: Árvore S1, Árvore S2, Problema P, Grupo id Saída: Árvore T E E(S1) E(S2); // Se não houver arestas em comum, utiliza a menor árvore se Vazio(E) = verdadeiro então se Custo(S1) < Custo(S2) então T S1; senão T S2; fim Retorna; fim // Conecta os componentes em E usando caminho mais curto T ConectaComponentes(E); N P.destinos(); para todo n N faça se n / T então // Adiciona n à T por caminho mais curto, nó de T escolhido aleatoriamente Adicionar(T, n); fim fim RemoveNãoTerminaisFolha(T); Algoritmo 5.6: Algoritmo de recombinação de um ponto aplicado a soluções do MPP Entrada: Indivíduo I1, Indivíduo I2, Individuo I3, Problema P Saída: Indivíduo I3 1 ngroups P.destinos; 2 pos NumAleatorio(0, ngroups); 3 para (i = 0;i < ngroups;i + +) faça 4 se (i < pos) então 5 Árvore S I1[i]; 6 Adicionar(I3, S); 7 senão 8 Árvore S I2[i]; 9 Adicionar(I3, S); fim fim No loop (linhas 3 até 10) há a criação da solução I 3. A solução I 3 recebe todas as árvores de Steiner de I 1 até o ponto de corte, após o ponto de corte I 3 recebe as árvores de Steiner de I 2.

71 5.3 Operadores de Recombinação Operador de Recombinação C2 O operador C2, assim como o operador C1, é um operador de 1 ponto. No entanto, o procedimento definido aqui usa o algoritmo 5.5 em sua implementação. Portanto, uma nova solução é produzida através da passagem de árvores de uma solução diretamente, como também do cruzamento das árvores de Steiner. Algoritmo 5.7: Algoritmo de recombinação de um ponto com uso do algoritmo de recombinação em árvores de Steiner ilustrado no algoritmo 5.5 Entrada: Individuo I1, Individuo I2, Problema P Saída: Individuo I3 1 ngroups P.destinos ; 2 pos NumAleatorio(0,ngroups) ; 3 para (i = 0;i < ngroups;i + +) faça 4 se (i < pos) então // Utiliza algoritmo Árvore S Recombinar(I1[i],I2[i]); 6 Adicionar(I3, S); 7 senão 8 Árvore S I2[i]; 9 Adicionar(I3, S); 10 fim 11 fim O algoritmo 5.7 recebe duas Soluções I 1 e I 2. Ele inicia com a geração de um ponto de corte (linha 2). Em seguida, há um loop (linhas 3 até 10) onde uma solução I 3 é criada. Até o ponto de corte aplica-se o operador definido no algoritmo 5.5 em um par de árvores de Steiner correspondente ao grupo multicast i, onde cada solução I 1 e I 2 contribui com uma árvore, a nova árvore de Steiner gerada é adicionada a I 3 (linhas 5 e 6). Após o ponto de corte, as árvores da solução I 2 são passadas diretamente para a solução I 3 (linhas 8 e 9) Operador de Recombinação C3 O operador C3 é um algoritmo que difere dos operadores C1 e C2 ilustrados anteriormente. Ele não define um ponto de corte. Além disso, ele utiliza o algoritmo 5.5 aplicado em árvores de Steiner. O algoritmo 5.8 consiste em um loop (linhas 2 e 3). Na linha 3 o operador definido no algoritmo 5.5 é aplicado a árvores de Steiner, ele recebe uma árvore de Steiner da solução I 1 corresponde ao grupo i e uma árvore de Steiner da solução I 2 também corresponde ao grupo i. Uma nova árvore é gerada e adicionada a solução I 3.

72 5.4 Operador de Mutação 70 Algoritmo 5.8: Algoritmo de recombinação C3. Utiliza o operador aplicado à árvores ilustrado no algoritmo 5.5 Entrada: Individuo I1, Individuo I2, Individuo I3, Problema P 1 ngroups P.destinos; 2 para i = 0;i < ngroups;i + + faça // Utiliza algoritmo I3[i] Recombinar(I1[i], I2[i]); 4 fim 5.4 Operador de Mutação O operador de mutação é um operador básico onde escolhe-se um grupo multicast k aleatoriamente e substitui a árvore de Steiner correspondente a ele. Algoritmo 5.9: Algoritmo de Mutação de soluções do MPP. Entrada: Individuo I1, GruposMulticast K 1 k EscolheGroupAleatorio(K); 2 remove(i 1,k); 3 h EscolheHeurísticaAleatória(); 4 S GerarArvore(h); 5 Adicionar(I 1,S); O algoritmo inicia com a definição da árvore de Steiner correspondente ao grupo multicast k que será substituída (linha 1). Em seguida, a árvore correspondente ao grupo multicast k é removida (linha 2). Após isto, define-se a heurística a ser utilizada aleatoriamente(ver seção 5.2.1) e uma árvore de Steiner S é gerada (linhas 3 e 4). Por fim, a árvore S é adicionada a solução I 1 (linha 5). 5.5 Operador de Busca Local Operadores de busca local visam explorar o espaço objetivo sistematicamente com base na definição de um estrutura de vizinhança. Em problemas mono-objetivo a busca local é aplicada com o objetivo de encontrar soluções em uma vizinhança de modo que o valor da função objetivo seja melhorado (minimização ou maximização). No contexto da otimização multiobjetivo também há a noção de estrutura de vizinhança, no entanto em cada passo de um algoritmo de busca local multiobjetivo todas as soluções não dominadas são escolhidas. Na literatura há vários algoritmos de busca local para aplicação em problemas multiobje-

73 5.5 Operador de Busca Local 71 tivo. A lista abaixo ilustra alguns métodos: Pareto Local Search (PLS) (PAQUETE; STüTZLE, 2006) : esta busca local é baseada na relação de dominância. Uma solução x é dada como entrada e adicionada a um arquivo A, então através de uma estrutura de vizinhança do problema em questão cria-se outras soluções. O arquivo A é atualizado com as novas soluções (remove-se do arquivo os indivíduos dominados). Two Phase Local Search (TPLS) (PAQUETE; STüTZLE, 2006) : este algoritmo possui duas fases. Inicialmente uma solução S 0 de alta qualidade é produzida levando-se em consideração apenas um objetivo. Em seguida, aplica-se busca local sobre S 0 usando um vetor de escalarização i até que um ótimo local S 1 seja encontrado. Então, adiciona S 1 ao arquivo e aplica busca local usando um novo vetor de escalarização i + 1; Paquete e Stützle (2006) desenvolvem algumas variações para o TPLS. Outros trabalhos também exploram o uso de busca local aplicada a problemas multiobjetivo como em (PA- QUETE; STüTZLE, 2009; SINDHYA et al., 2009). Neste trabalho, foi desenvolvida uma busca local baseada na ideia do PLS. A estrutura de vizinhança será ilustrada na seção seguinte, em seguida ilustra-se o pseudo-código da busca local proposta Estrutura de Vizinhança Nesta seção é definida uma estrutura de busca local para o MMPP. A busca local consiste na troca sistemática de árvores de Steiner correspondentes aos K grupos multicast. Note-se que a quantidade de vizinhos de cada solução é igual ao número de grupos multicast que a mesma possui. Na figura 5.2 o esquema aplicado para geração de uma vizinhança é ilustrado. Para, cada grupo multicast é realizada a substituição da árvore correspondente, gerando um novo vizinho. Esta estrutura de vizinhança é utilizada para criação de uma algoritmo de busca local baseado na PLS. O algoritmo é descrito na próxima seção Algoritmo de Busca Local O algoritmo de busca local desenvolvido segue a ideia da PLS. Recebe como entrada uma solução do MMPP e aplica a estrutura de vizinhança ilustrada até que não haja mais melhoria

74 5.5 Operador de Busca Local 72 Figura 5.2: A estrutura de vizinhança consiste na troca sistemática de árvores de Steiner. Uma solução é dada como entrada, então para cada grupo multicast cria-se uma nova árvore de Steiner e substitui a árvore correspondente na solução. Os quadrinhos pretos indicam que o grupo multicast que teve sua árvore substituída. G1 G3G4G5 G1G2G3 G5 G1G2G3G4G5 Solução Vizinhos G2G3G4G5 G1G2 G1G2G3G4 G4G5 Fonte: própria. no conjunto de soluções não-dominadas. Algoritmo 5.10: Algoritmo de Busca Local baseado em PLS usando a estrutura de vizinhança descrita ilustrada na figura 5.2. Entrada: Solução I Saída: Arquivo Não-Dominados A 1 Adicionar (A,I); 2 I.visitado f alse 3 enquanto I A I.visitado = f alse faça 4 para todo I Vizinhos(I ) faça 5 se S A S I então 6 I.visitado f alse; 7 para todo S A faça 8 se I S então 9 remove(a, S); 10 fim 11 fim 12 Adicionar (A,I ); 13 fim 14 I.visitado true; 15 fim 16 fim O algoritmo 5.10 ilustra a busca local desenvolvida. Na linha 1 a solução I é adicionada ao arquivo A, e é marcada como não visitada (linha 2). Em seguida, a busca propriamente dita, é iniciada (linhas 3 até 16). A condição de parada consiste de não haver nenhuma solução no

75 5.6 Algoritmos Propostos usando NSGA 2 73 arquivo de soluções não-dominadas A que ainda não tenha sido explorada. Portanto, enquanto houver uma solução I A que ainda não foi explorada analise sua vizinhaça (isto significa gerar todos os vizinhos de I com base na estrutura ilustrada na figura 5.2).Para todo I vizinho de I (linha 4) se não há nenhuma solução S A que domine I (linha 5), então marque I como não visitado (linha 6). Em seguida remova todas as soluções S A que sejam dominadas por I (linhas 7 até 11). Por fim, adicione I ao arquivo A (linha 12) e marque I como visitado (linha 14). 5.6 Algoritmos Propostos usando NSGA 2 Nesta seção três versões do algoritmo NSGA2 são propostas. Estas versões foram obtidas através da combinação dos operadores de mutação e de criação com um dos operadores de recombinação (como há três operadores, então três versões). A descrição dos algoritmos utiliza conceitos do NSGA2 que podem ser vistos no apêndice A. Algoritmo 5.11: Algoritmo NSGA 2 utilizando os operadores de recombinação, mutação e criação de indivíduo do MPP. Adaptação do pseudo-código ilustrado em (DEB et al., 2002). /* Cria população inicial usando o algoritmo 5.4. */ 1 P t CriarPopulação(); 2 Q t Recombinar(P); 3 enquanto t < t max faça 4 R t P t Q t ; 5 F classificarpopulação(r t ); 6 P t+1 = /0 ; 7 i 1 ; 8 enquanto P t+1 + F i N faça 9 CalculaDistância(F i ); 10 P t+1 = P t+1 F i ; 11 fim 12 Ordenar(F i, n ); /* Completa a população com parte do indivíduos da i-ésima classe.ver figura 5.3. */ 13 P t+1 P t+1 F i [1 : N P t+1 ]; 14 ; /* Usa operadores de mutação e recombinação propostos. */ 15 Q t+1 CriarPopulação(P t+1 ); 16 t t + 1; 17 fim O algoritmo 5.11 ilustra o funcionamento do NSGA2. O operador de criaçao de solução

76 5.6 Algoritmos Propostos usando NSGA 2 74 é utilizado para criar a população inicial (linha 1). Em seguida, aplica-se um dos algoritmos de recombinação definidos na seção 5.3 e o operador de mutação (linha 2). Neste momento o algoritmo entra em loop (linhas 3 até 15) até a condição de parada ser satisfeita (por exemplo número de gerações ou tempo de execução). Durante o loop os procedimentos de classificação de solução e cálculo de distância de aglomeração (ver apêndice A) são utilizados. Figura 5.3: Exemplo de execução do NSGA 2, onde ocorre a aplicação da divisão dos indivíduos em classes e o uso do valor da distância de aglomeração para escolha de indivíduos da última classe (F 3 ) a ser adicionada a população p t+1. IEEE TRANSACTIONS ON EVOLUTIONARY COMPUTATION, VOL. 6, NO. 2, APRIL 2002 paring current population with previously ated solutions, the procedure is different ation. We first describe the th generation ithm as shown at the bottom of the page. rocedure shows that NSGA-II algorithm is rward. First, a combined population he population is of size. Then, the ed according to nondomination. Since all population members are included in, ow, solutions belonging to the best nonof best solutions in the combined popuphasized more than any other solution in tion. If the size of is smaller then, Fig. 2. NSGA-II procedure. Fonte:(DEB et al., 2002). all members of the set for the new popmaining members of the population performed carefully, the complete population of size need equent nondominated fronts in the order of not be sorted according to nondomination. As soon as the sorting olutions from the set are A figura chosen5.3 next, ilustra procedure a execução has found doenough NSGA2. number Após of fronts a criação to have da população members in, there is no reason to continue with the sorting pro- inicial e recombinação mesma Say that(linhas 1 e 2 no algoritmo 5.11). O procedimento descrito na figura é iniciado. from the set, and so on. This procedure more sets can be accommodated. cedure. nondominated set beyond which no other Primeiro, a populaçãothe P ated. In general, the count of solutions in t diversity é unida among com anondominated população Qsolutions t (gerada is introduced por recombinação e mutação) by using the crowding comparison procedure, which is used in would be larger thanformando the population a população size. the Qtournament t. A população selectionq and t é classificada during the population com relação reduction a dominância (ver apêndice A) operator usando o procedimento phase. Since solutions non-dominated compete with sorting their crowding-distance (linha 9 no algoritmo (a 5.11). Após isto, population members, we sort the solutions ing the crowded-comparison measure of density of solutions in the neighborhood), no extra nd choose the best solutions a novaneeded população to fill P t+1 niching deve parameter ser formada, (such asportanto needed as classes in the NSGA) de indivíduos is required. Although the crowding distance is calculated in the ob- F i são adicionadas The NSGA-II procedure is also shown in lation of size até is P now t+1 used = for N. sed mutation to create a new population eter space, if so desired [3]. However, in all simulations perjective function space, it can also be implemented in the param- ant to note that we use a binary É possível tournament que na formed adição in this da study, i-ésima we classe have used (nathe figura objective-function 5.3 i=3) a população space P t+1 não suporte t the selection criterion is now based on the niching. operator. Since this todos operator os indivíduos requires de F i, então ordena-se os indivíduos de F i usando o operador n (linha 12 wded distance of each solution in the popthese quantities while forming the popula- 3 tem parte de seus indivíduos rejeitados. no algoritmo 5.11). Na figura 5.3 tem-se que a classe F in the above algorithm. Por fim, a população P t+1 está formada. IV. SIMULATION Neste momento RESULTS uma nova populaçao Q t+1 é formada lexity of one iteration of the entire algorations and their worst-case utilizando complexities os operadores de recombinação e mutação. In this section, we first describe the test problems used to compare the performance of NSGA-II with PAES and SPEA. As três versões do ForNSGA2 PAES and são: SPEA, we have identical parameter settings as suggested in the original studies. For NSGA-II, we have chosen a reasonable set of values and have not made any effort sorting is ; nce assignment is ; is. ity of the algorithm is, which is ominated sorting part of the algorithm. If NSGA2_C1 : in Utiliza findingo the operador best parameter de criação setting. dewe solução leave this ilustrado task for ano algoritmo 5.4 junto future study.

77 5.7 Algoritmos Propostos usando SPEA 2 75 com o operador de mutação (algoritmo 5.9) e o operador C1 (algoritmo 5.6). NSGA2_C2 : Utiliza o operador C2 (algoritmo 5.7). NSGA2_C3 : Utiliza o operador C3 (algoritmo 5.8). 5.7 Algoritmos Propostos usando SPEA 2 O desenvolvimento dos algoritmos utilizando o SPEA2 segue a mesma ideia que foi utiliza para o NSGA2. Portanto, os operadores de recombinação foram combinados com o operador de mutação e o operador de criação de indivíduos gerando versões diferentes, três no total. Os principais mecanismos utilizados no SPEA2 são descritos no apêndice B, como avaliação de fitness e pressão ambiental. Algoritmo 5.12: Pseudo-código do algoritmo SPEA 2. Ele foi adaptado para utilizar o operador de criação de solução e os operadores de recombinação (C1, C2 e C3) e mutação t = 0; P t = P = /0; /* Cria população inicial usando o algoritmo 5.4. */ P CriarPopulação(); AvaliaçãoFitness(P); P PressãoAmbiental(P); enquanto t < t max faça t t + 1; /* Usa operadores de mutação e operadores de recombinação propostos. */ P t Recombinar(P); Q t P t P; AvaliaçãoFitness(Q t ); P PressãoAmbiental(Q); fim O algoritmo 5.12 ilustra como o SPEA2 realiza o processo de busca por soluções nãodominadas. O algoritmo utiliza uma população externa P para guardar soluções não-dominadas. Inicialmente, a população é inicializada (utilizando o algoritmo 5.4). Em seguida, é feita a avaliação dos indivíduos utilizando a forma definida para o SPEA2 (ver apêndice B). Após isto, o procedimento de pressão ambiental é aplicado gerado o conjunto P. Neste momento, o algoritmo entra no loop (linhas 6 até 11). Utilizando os indivídios do conjunto P cria-se a população P t através dos operadores de mutação e operadores de recombinação propostos (algoritmos definidos na seção 5.3 e 5.4). Em seguida, faz a avaliação de

78 5.8 Algoritmos proposto usando GRASP 76 fitness dos indivíduos em Q t (linha 10). Neste momento, aplica-se novamente o operador de pressão ambiental para obter o novo conjunto de soluções não-dominadas P (linha 11). Três versões do SPEA2 foram geradas como base no uso dos operadores de recombinação de modo separado, os algoritmo seguem a mesma definição que foi aplicada ao NSGA2: SPEA2_C1 : operador de criação de solução definido no algoritmo 5.4, operador de mutação definido no algoritmo 5.9 e operador C1 definido no algoritmo 5.6. SPEA2_C2 : substitui o operador C1 pelo operador C2, definido no algoritmo 5.7. SPEA2_C3 : substitui o operador C1 pelo operador C3, definido no algoritmo Algoritmos proposto usando GRASP Nesta seção, os algoritmos utilizando a ideia do GRASP são ilustrados. O GRASP requer dois componentes básicos: um algoritmo de criação de solução de modo aleatório e guloso e a aplicação de uma busca local a solução criada (ver apêndice C) Criação de Solução O processo de criação de solução utilizado nas versões do GRASP difere daquele que foi implementado para ser usado no NSGA2 e SPEA2. O algoritmo 5.13 ilustra como uma solução é criada. Algoritmo 5.13: Algoritmo de criação de solução utilizando no Grasp. Entrada: Grafo G, Heurística h, Parâmetro lrc, TamanhoLista N LRC Saída: Solucao I 1 enquanto K > 0 faça 2 k EscolheGroupAleatorio (K); 3 RemoveArestaSemCapacidade (G,k); /* Cria lista de árvores para o grupo K com tamanho N LRC */ 4 LRC CriaListaDeÁrvores(h,k,N LRC ); 5 S SelecioneComponenteAleatório(LRC,lrc); 6 Adicionar (I,S); // Restaura as arestas removidas 7 Restaurar (G); 8 remove (K,k); 9 fim

79 5.8 Algoritmos proposto usando GRASP 77 No algoritmo 5.13 uma solução para o MMPP é criada utilizando a ideia de lista restrita de candidatos. Um grupo k é escolhido aleatoriamente (linha 2), em seguida remove-se as arestas da rede que não tem capacidade suficiente para acomodar o grupo k (linha 3). Neste momento, cria-se uma lista restrita de candidatos com tamanho NLRC para o grupo k utilizando uma heurística h (algoritmos 5.2 ou 5.1), cada candidato é uma árvore de Steiner (linha 4). Em seguida é feita a escolha de uma árvore S levando em consideração um percentual lrc do tamanho da lista (linha 5). Por fim, a árvore é adicionada ao indivíduo I e o grafo G é restaurado (linhas 7 e 8). Vale ressaltar que a heurístaca h determina o comportamento da lista restrita de candidatos. Quando h representa o algoritmo 5.1, então a lista restrita de candidatos é ordenada (ordem crescente) pelo custo. Por outro lado, quando h representa o algoritmo 5.2 então a lista restrita é ordenada (ordem decrescente) avaliando a quantidade de arestas de cada árvore de Steiner. Fase construtiva Sequencial e Fase Construtiva alatória A utilização do GRASP em um problema monobjetivo tem por objetivo maximizar ou minimizar uma função objetivo. No entanto, quando se pretende adaptar e aplicar a metaurística para problemas multiobjetivo, então se deve ter em mente como projetar a fase de construção de solução levando em consideração que há mais de um critério a ser otimizado, assim como a busca local. Diante da necessidade de definir uma forma de construção de solução a ser aplicada surge a definição de fase construtiva sequencial e fase construtiva aleatória. As fases de construção (sequencial ou aleatória) só indicam o objetivo de otimização que será focado em um iteração t do algoritmo. Ou seja, cada fase de construção indica como o objetivo a ser otimizado será escolhido (MARTí et al., 2011). No problema abordado neste trabalho há dois objetivos de otimização: custo e capacidade residual. Utilizar a forma de construção sequencial significa escolher o objetivo de otimização de forma sequencial. Por exemplo, na iteração t = 0 o objetivo focado será o custo, então uma solução é criada dando enfase a melhoria do custo. Em seguida na iteração t = 1 o objetivo focado será a capacidade residual. Na iteração t = 3 novamente o foco será o custo. Na iteração t = 4 o foco será na melhoria da capacidade residual. Assim o algoritmo segue até o fim de sua execução sempre alternando o objetivo utilizado na iteração t. Por outro lado, na forma de construção aleatória o objetivo é escolhido aleatoriamente. Por exemplo, na iteração t = 0 o objetivo focando é o custo. Em seguida, na iteração t = 1 o custo pode ser escolhido novamente e assim segue. Neste caso, não há como determinar que objetivo

80 5.8 Algoritmos proposto usando GRASP 78 é utilizado em cada iteração dado que ele é escolhido aleatoriamente. Dois algoritmos são definidos com base nestas formas de construção. Note que a busca local utilizada é a PLS. É impotarte mencionar que a fases de construção definidas só determinam que objetivo será focado em cada iteração. Portanto, os algoritmos implementados estão em conformidade com a definição da metaheurística GRASP Sequencial O algoritmo 5.14 utiliza a ideia apresentada apenas na fase de construção. A busca local aplicada utiliza o algoritmo O algoritmo recebe como entrada um número máximo de iterações t max e devolve o conjunto de solução não-dominadas A. Algoritmo 5.14: Algoritmo GRASP com fase construtiva sequencial. Entrada: Grafo G, Iterações t max, Parâmetro lrc, TamanhoLista N LRC Saída: Não-Dominados A 1 A /0; 2 t 0; 3 h 0; 4 enquanto t < t max faça 5 S CriarSolucao(G,h,lrc,Nlrc); 6 A t BuscaLocal (S); // Usa algoritmo Q A A t ; 8 A Não-Domiandos(Q); /* Mudança de Heurística para focar em outro objetivo */ 9 se h = 0 então h 1; senão h 0; fim fim O algoritmo 5.14 começa sua execução definido a heurística h que será utilizado para construção de solução (linha 3). Em seguida, o algoritmo inicia seu loop principal. Uma solução é criada usando a heurística h = 0 (usa algoritmo 5.1 foca na melhoria do custo). Neste momento, cria-se a solução S usando a heurística h (linha 5), então a busca local PLS é aplicada retornando um conjunto de soluções não dominadas A t (linha 6). Logo após, o conjunto de soluçoes não-dominadas A t é unido com as soluções não-dominadas encontradas em iterações anteriores (linha 7), o conjunto Q é filtrado de modo que apenas indivíduos não-dominados sejam mantidos (linha 8). Por fim, uma nova heurística h é definida nas linhas (linhas 9 até 13).

81 5.8 Algoritmos proposto usando GRASP GRASP Aleatório A segunda versão do algoritmo GRASP apresenta uma fase de construção diferente da versão anterior. Neste caso, tem-se uma fase de construção aleatória. Ou seja, a escolha da heurística h na iteração t indica que a criação de solução vai focar apenas no objetivo i correspondente a heurística h. O restante do algoritmo funciona exatamente de acordo com os princípios do GRASP. A busca local aplicada é a PLS. Algoritmo 5.15: Algoritmo Grasp com fase construtiva aleatória. Entrada: Grafo G, Iterações t max, Parâmetro lrc, TamanhoLista N LRC Saída: Não-Dominados A 1 A /0; 2 t 0; 3 enquanto t < t max faça 4 h EscolheHeuristicaAleatório(); 5 S CriarSolucao(G,h,lrc,Nlrc); 6 A t BuscaLocal (S); 7 Q A A t ; 8 A Não-Domiandos(Q); 9 fim O algoritmo 5.15, diferentemente do algoritmo 5.14, inicia sua execução diretamente no loop (linhas 3 até 9) ao invés da versão anterior que define a heurísica h = 0 (algoritmo 5.14 linha 3). No interior do loop mencionado há a definição da heurística h de modo aleatório, em seguida uma solução S é criada focando no objetivo h (Se h=0, então foca no custo. Caso seja 1 foca na capacidade residual). Logo após, aplica-se a busca local PLS gerando o arquivo de indivíduos não-dominados A t. O conjunto A t é unido com o conjunto de soluções não-dominadas A encontradas até o momento formando o conjunto Q, este conjunto é filtrado e apenas os indivíduos não-dominados são adicionados para o conjunto A.

82 80 6 Resultados Experimentais Este capítulo descreve todo o processo de experimentação dos algoritmos propostos. Inicialmente, tem-se a criação de casos de teste utilizados nos experimentos (seção 6.1). Em seguida, apresenta-se uma metodologia para avaliação das configurações de parâmetros para cada algoritmo proposto (seção 6.2). Neste momento, a descrição e discussão dos resultados é iniciada. O primeira fase de experimentos foca no ajuste de parâmetros dos algoritmos (seção 6.3). Após a configuração de parâmetros novos experimentos são realizados para verificar qual versão de cada algoritmo proposto é, estatisticamente, melhor (seção 6.4). Por fim, apresenta-se a comparação entre as melhores versões de cada algoritmo, e a conclusão de qual algoritmo apresentou melhor desempenho (seção 6.5). 6.1 Criação de Casos de Teste A criação de casos de teste se faz necessária uma vez que não há, na literatura, a disponibilidade de acesso aos casos de teste utilizados em outros trabalhos. Tendo em vista a indisponibilidade no acesso, buscou-se uma alternativa com base na construção de casos de teste próprios. No entanto, buscou-se observar na literatura do problema em questão as principais características dos casos de teste utilizados. Tais características envolvem: custo e capacidade das arestas, tamanho da rede utilizada, número de grupos, número de nós por grupo e tipo de gerador. A tabela 6.1 ilustra as características dos casos de teste utilizados na literatura. As informações ilustradas formaram a base da escolha de alguns parâmetros necessários a criação de casos de teste. Por exemplo, o tipo de gerador utilizado. Em alguns trabalhos nota-se o uso de um mecanismo próprio de criação, enquanto que outros autores utilizam o modelo proposto por Waxman (1988).

83 6.1 Criação de Casos de Teste 81 Tabela 6.1: Características dos casos de teste utilizados na literatura Autor Gerador N E Capacidade Custo N o Grupos Tamanho Grupos Chen et al N - - 2,4,6,...,24 5,10,...,25 Wang et al Modelo Waxman [10-50] - Cost*random [2/N,1] DN - 40 e 60% N Lee et al ,100,200 2N [18-22] a, [55,65] b - 10,20 e 30 % N [4-12] Kang et al [10-100] [0-10] Jia and Wang 1997 Modelo Waxman 200 2N - - c - 5,10,...,50 Low and Wang 2000 Modelo Waxman 100 2N 25(média) - - 5,10,...,50 Randaccio and Atzori 2007 Modelo Waxman 20 2N [2-7] Wang 2010 Modelo Waxman 60 2N [1-10] [45-90] [ ] - [0-12] a A requisição de tráfego t k = 1 b Requisição de tráfego normal c o - indica que os valores não foram obtidos

84 6.1 Criação de Casos de Teste Modelo de Waxman O modelo proposto por Waxman (1988) foi um dos primeiros geradores de topologias. O gerador consiste, basicamente, em distribuir de modo uniforme os nós da rede em um plano e em seguida conectá-los usando uma função de distribuição de probabilidade. P(u,v) = αe d βl (6.1) A equação 6.1 ilustra a função de probabilidade utilizada para geração de topologias utilizando o modelo de Waxman. O modelo é composto por: d - distância entre u,v; L - distância máxima entre dois nós; α e β são parâmetros no intervalo (0,1]. O parâmetro α regula o aumento da densidade de arestas longas em relação a arestas curtas, seu aumento significa mais arestas longas. Já o parâmetro β regula a densidade de arestas no grafo, valores altos correspondem a grafos mais densos BRITE Framework O Bonton university Representative Internet Topology generator (BRITE) é um framework desenvolvido para geração de topologias de rede. Ele incorpora vários modelos de geração de topologias de rede, inclusive o modelo de Waxman. O framework segue alguns princípios (MEDINA et al., 2001): (representatividade) produz topologias sintéticas tendo em vista a similaridade com topologias reais; (inclusão) combina vários modelos de geração em uma única ferramenta; (flexibilidade) flexível para gerar topologias de vários tamanhos desejados; (eficiência) gerar topologias de grande escala com baixo consumo de memória e CPU; (extensível) permite a adição de novos modelos pelos usuários; (interface com usuário) interface de usuário padrão, independente do modelo; (interoperabilidade) interface para uso com outras aplicações; (Robustez) tão robusto quanto eficiente, possui mecanismos de detecção de falhas. O uso do framework permite automatizar a geração de casos de teste de modo simples e intuitivo. Além disso, é possível a criação de arquivos de configuração para diferentes tamanhos dos casos de teste (número de nós) entre outras informações. Com o uso do framework foi possível gerar todas as topologias necessárias à produção dos casos de teste.

85 6.1 Criação de Casos de Teste Gerador de Grupos e Requisição de Tráfego O modelo de Waxman e o framework BRITE fornecem os mecanismos necessários para criação das topologias. No entanto, algumas informações adicionais são necessárias para que os casos de teste estejam completos e de acordo com as definições do problema. Portanto, foi necessário criar um mecanismo para gerar os grupos, os elementos de cada grupo e a requisição de tráfego de cada grupo. Algoritmo 6.1: Procedimento para adição de informações de grupos, elementos de grupos e requisição de tráfego associada a cada grupo Entrada: Topologia B, Grupos n, Tamanho Max, Tamanho Min, Trafego T, Capacidade Cap Saída: CasoDeTeste I 1 Ngrupos n; // TMax e TMin tamanho máximo e mínimo do grupo 2 T Max Max; 3 T Min Min; // t é um valor percentual 4 t T ; 5 R GeradorAleatorio() ; 6 V retornanos(b); 7 para (i = 0;i < Ngrupos;i + +) faça // Gerando requisição de tráfego 8 tra f f ic (Cap t)/100; 9 tra f f ic NumAleatorio(1,tra f f ic); 10 AdicionaInformação(I,tra f f ic, i); // Gerando tamanho do grupo 11 tamanho NumAleatorio(T Min, T Max); 12 AdicionaInformação(I,tamanho, i); // Gerando a fonte do grupo 13 f onte NumAleatorio(1, N); 14 AdicionaInformação(I, f onte, i); // remove fonte da lista de nós diponíveis 15 remove(v, f onte) 16 para j = 0; j < tamanho; j + + faça // Escolhe nó aleatório em V 17 v NumAleatorio(V); 18 remove(v, f onte); 19 AdicionaInformação(I, v, i); 20 fim 21 V retornanos(b); 22 fim O procedimento descrito no algoritmo 6.1 é simples. Primeiro, os parâmetros definidos para geração da rede são atribuídos às variáveis (linhas 1-7). Segundo, o loop (linhas 7-21)

86 6.2 Metodologia de Avaliação das Configurações 84 é utilizado para criação de cada grupo. Neste loop são gerados a requisição de tráfego (linhas 8-9), o número de nós do grupo (linha 11), a fonte do grupo (linha 13). Há outro loop (linhas 16-19) utilizado para gerar cada membro pertencente ao i-ésimo grupo em construção, ele consiste em escolher um nó disponível e adiconá-lo ao grupo (linhas 17-18). Para geração de números aleatórios utilizou-se o GSL (GNU Scientific Library) (FOUNDATION, 2009) Características dos Casos de Teste Os casos de teste foram criados utilizando o modelo de Waxman fornecido pelo framework BRITE, junto com algoritmo 6.1. criados. A tabela 6.2 ilustra as características dos casos de teste Tabela 6.2: Características dos casos de teste criados Tamanho (N) N o de Grupos Tamanho Máximo do Grupo Capacidade dos Links Quantidade de Arestas b30 5,10,15,20,25 20 a 30 % de N 15 a 85 2N b60 5,10,15,20,25 15 a 30 % N 25 a 85 2N b120 5,10,15,20,25 10 a 30 % N 35 a 85 2N Os casos de teste possuem três tamanhos diferentes (o tamanho é definido pelo número de nós da rede) que são 30, 60 e 120 nós. Para cada faixa de tamanho (30, 60 e 120) as instâncias possuem tamanhos de grupos (o tamanho é definido pela quantidade de nós do grupo) diferentes que variam de 5 a 25 grupos, sendo 6 instâncias para cada tamanho de grupo totalizando 30 instâncias em cada faixa de tamanho (30, 60 e 120). A definição do tamanho de cada grupo levou em consideração um percentual do tamanho da rede (30, 60 ou 120 nós respectivamente). Por exemplo, supondo a instância b30_1 que possui 5 grupos, então cada grupo pode assumir um tamanho máximo de 20 a 30 % da rede. A capacidade das arestas tem um valor máximo de 85 unidades de medida e um valor mínimo que varia de acordo com o tamanho do caso de teste. Por fim, a quantidade de arestas é sempre definido como 2 * N. 6.2 Metodologia de Avaliação das Configurações A definição de parâmetros constitui uma etapa importante dos experimentos. Neste momento define-se os valores de parâmetros usados para as execuções dos algoritmos desenvolvi-

87 6.2 Metodologia de Avaliação das Configurações 85 dos e portanto podem definir o desempenho dos mesmos. Por este fato é importante lançar mão de um procedimento de definição de parâmetro. O ideal seria testar todos os valores possíveis, porém isto se torna inviável devido às questões relacionadas ao tempo e recursos disponíveis. Além disso, tal procedimento pode até mesmo ser inviável (BOX; HUNTER; HUNTER, 2005). Portanto, a metodologia para definição de parâmetros seguiu um padrão para todos algoritmos implementados. O procedimento pode ser definido com um pequeno algoritmo ilustrado a seguir: 1. Definir a faixa de valores para cada parâmetro; 2. Realizar a execução das configurações para cada caso teste; 3. Filtrar as configurações promissoras; 4. Aplicar teste de Friedman e avaliar o tempo de execução. Definindo Valores para Cada Parâmetro A definição de valores para cada parâmetro estipula uma faixa de valores a ser testada para cada parâmetro. Estes valores são agrupados de modo a formar uma configuração. Suponha, um algoritmo com três parâmetros: população - P; taxa de recombinação - c e um taxa de mutação m. Seja P = {60;90;120;150}, c = {0,5;0,6;0,7;0,8;0,9;1} e m {0,2;0,3;0,4}. Usando um design fatorial tem-se = 60 configurações diferentes de parâmetros para avaliação. Vale ressaltar que alguns algoritmos possuem mais parâmetros que outros, gerando mais configurações. Neste caso, uma possível configuração poderia ser P120_c06_m03 para o exemplo mencionado. Filtrando Configurações Promissoras Em seguida, definiu-se um critério elitista para filtrar as configurações mais promissoras. Uma tabela com os valores de mediana das 20 execuções sobre cada instância é criada. A tabela 6.3 ilustra a forma como os valores foram obtidos para as 20 execuções de cada configuração por caso de teste, tais valores foram organizados de modo a filtrar as configurações mais promissores. Portanto, para cada par configuração/caso de teste tem-se um valor de

88 6.2 Metodologia de Avaliação das Configurações 86 qualidade associada (no ajuste de parâmetros foi utilizado o hypervolume), então as configurações que obtiverem o melhor valor para cada caso de teste são consideradas para uma avaliação posterior. Tabela 6.3: Configurações e valores de mediana do hypervolume por caso de teste. Configurações Caso de Teste 1 Caso de Teste 2 Caso de Teste 3 P120_c05_m P120_c06_m P120_c07_m Neste caso, seguindo a ideia mencionada, então pode-se ter as seguintes situações: 1. Uma configuração ser melhor que todas as outras em todos os casos de teste com base no procedimento mencionado. Portanto, ela será diretamente escolhida; 2. Mais de uma configuração ser melhor que as outras para os casos de teste utilizados (isto é ilustrado na tabela 6.3). No exemplo da tabela 6.3 a configuração P120_c05_m03 será automaticamente eliminada do próximo passo do processo de escolha, pois em nenhum caso de teste a mesma conseguiu melhor resultado. As demais configurações passam a diante. É possível haver 1 configuração sendo melhor em cada caso de teste. Teste de Friedman e Avaliação de Tempo O objetivo da aplicação do teste de Friedman 1 está relacionado ao caso 2 ilustrado na seção anterior, ou seja, quando mais de uma configuração consegue ser melhor que todas as outras em pelo menos um caso de teste (isto é ilustrado na tabela 6.3). A utilização do teste de Friedman tem por objetivo verificar se há diferença estatística entre as configurações que foram selecionadas (seguindo o critério da seção anterior). A hipótese nula é de que não há diferença estatística, portanto qualquer configuração pode ser utilizada. Por outro lado, a hipótese alternativa indica que há diferença entre a aplicação das configurações. Caso a hipótese alternativa seja confirmada, então há a indicação estatísica de que há diferença entre algum par de configurações. Portanto, através desta diferença é possível eliminar alguma configuração. Por fim, se houver mais que uma configuração que, estatisticamente, são semelhantes segundo o teste de Friedman, então avalia-se o tempo de execução. Neste caso, 1 Consultar (CONOVER, 1980) para uma visão detalhada do teste de Friedman.

89 6.3 Ajuste de Parâmetros 87 escolhe-se a configuração que utilizar menor tempo. Além disso, utiliza-se recursos gráficos quando necessário e adequado para a avaliação das configurações. A seção seguinte apresenta a escolha das configurações de parâmetro para cada versão gerada dos algoritmos mencionados no capítulo Ajuste de Parâmetros Os algoritmos ilustrados no capítulo 5 possuem alguns parâmetros que precisam ser definidos, ou melhor, afinados. Tal afinamento tem por objetivo buscar a melhor configuração de parâmetros para um algoritmo de modo que o mesmo alcance seu melhor desempenho seja em qualidade de solução ou tempo de processamento. Neste trabalho, três abordagens para resolução de problemas multiobjetivo foram utilizadas: o NSGA2, SPEA2 e GRASP. No total, 8 algoritmos diferentes 2 utilizando a combinação de operadores foram definidos. Além disso, vale ressaltar que o teste de Friedman foi aplicado com nível de significância de α = O indicador de qualidade utilizado para todas as versões foi o hypervolume. Cada configuração foi executada 20 vezes por caso de teste Ajuste de Parâmetros - GRASP Os algoritmos implementados utilizando as ideias do GRASP necessitam de ajustar três parâmetros: número de iterações - iter; tamanho da lista restrita de candidatos - NLRC; percentual utilizado da lista de candidatos - lrc (ver seção 5.8 do capítulo 5). Definindo Valores de Parâmetros Os valores de parâmetros do GRASP são utilizados para as duas versões implementadas (algoritmos 5.14 e 5.15). A lista abaixo ilustra os valores: iter = {60;90;120;150} NLRC = {10;20;30} lrc = {0,2;0,3;0,4;0,5} 2 Considera-se algoritmos diferentes as versões definidas para a mesma abordagem.

90 6.3 Ajuste de Parâmetros 88 Levando em consideração um design fatorial, então há um total de 48 configurações. GRASP Sequencial Após a definição da faixa de valores para cada parâmetro utilizado no GRASP, houve a coleta de dados através da execução do algoritmo utilizando 9 casos de teste. Para facilitar a organização do texto a tabela contendo os valores utilizados para filtrar as melhores configurações do GRASP sequencial é ilustrada na tabela D.1. Tabela 6.4: Melhores configurações do GRASP Sequencial. A configuração em destaque foi eliminada após o teste Friedman. Configurações iter_90_nlrc_30_lrc_0.2 iter_120_nlrc_10_lrc_0.2 iter_120_nlrc_30_lrc_0.2 iter_150_nlrc_20_lrc_0.2 iter_150_nlrc_30_lrc_0.2 iter_150_nlrc_30_lrc_0.4 A tabela 6.4 ilustra as melhores configurações 3 obtidas do ajuste de parâmetros do GRASP Sequencial. O teste de Friedman foi aplicado e o resultado do mesmo aponta que há diferença entre os tratamentos (configurações) utilizados com p value = Especificamente, a diferença ocorreu entre duas configurações: iter_150_nlrc_30_lrc_0.2 e iter_150_nlrc_30_lrc_0.4. Neste caso, a configuração iter_150_nlrc_30_lrc_0.4 foi eliminada com base em valores obtidos no teste de Friedman que permitem verificar qual configuração é melhor (estatisticamente). Note-se que ainda há 5 configurações que, segundo o teste de Friedman, são estatisticamente semelhantes. Tendo em vista a necessidade de escolher apenas uma configuração, optouse por escolher a configuração com menor média de tempo de execução para cada caso de teste. A figura 6.1 ilustra a comparação. Portanto, com base no tempo média a configuração iter_120_nlrc_10_lrc_0.2 foi escolhida. 3 Estas configurações foram obtidas da tabela D.1.

91 6.3 Ajuste de Parâmetros 89 Figura 6.1: Tempo médio para por configuração - GRASP Sequencial. Considere gen = iter, sttree = NLRC e lc = lrc. Tempo Médio conf gen_150_sttree_30_lc_0.2_g gen_150_sttree_30_lc_0.4_g gen_120_sttree_30_lc_0.2_g gen_150_sttree_20_lc_0.2_g gen_90_sttree_30_lc_0.2_g gen_120_sttree_10_lc_0.2_g 1_b30_10 2_b30_15 3_b30_20 4_b60_10 5_b60_15 6_b60_25 7_b120_2 8_b120_10 9_b120_15 Instâncias Utilizadas Fonte: própria. GRASP Aleatório O GRASP Aleatório utiliza os mesmos parâmetros que o GRASP Sequencial. No entanto, isto não implica que o resultado do ajuste de parâmetro seja o mesmo, ou que a mesma configuração de parâmetros obtidas para o GRASP Sequencial seja utilizada no GRASP Aleatório. Portanto, o mesmo processo de ajuste de parâmetro também deve ser aplicado neste caso. A tabela contendo todos os resultados dos quais as melhores configurações foram obtidas é ilustrada no apêndice D.1.2. Tabela 6.5: Melhores configurações do GRASP Aleatório. A configurações em destaque foi eliminada após o teste de Friedman. Configurações iter_60_nlrc_10_lrc_0.2 iter_120_nlrc_30_lrc_0.2 iter_150_nlrc_20_lrc_0.2 iter_150_nlrc_30_lrc_0.2 iter_150_nlrc_30_lrc_0.3 A tabela 6.5 ilustra as melhores configurações obtidas para o GRASP Aleatório. As configurações foram obtidas com base na metodologia já mencionada. O teste de Friedmam indicou

92 6.3 Ajuste de Parâmetros 90 que há diferença entre as configurações ilustradas com p value = A diferença ocorre entre as configurações iter_150_nlrc_20_lrc_0.2 e iter_60_nlrc_10_lrc_0.2. Neste caso, a configuração iter_60_nlrc_10_lrc_0.2 foi eliminada. Após a aplicação do teste de Friedman uma das configurações foi eliminada, por não apresentar, estatisticamente, a mesma qualidade das demais. Tendo em vista a necessidade de definição de apenas uma configuração, então utilizou-se o tempo médio de execução nos casos de teste utilizados. Figura 6.2: Tempo médio de exeução para cada configuração/caso de teste utilizando o Grasp Aleatório. Considere gen = iter, sttree = NLRC e lc = lrc. Tempo Médio conf gen_150_sttree_30_lc_0.2_g gen_150_sttree_30_lc_0.3_g gen_120_sttree_30_lc_0.2_g gen_150_sttree_20_lc_0.2_g 1_b30_10 2_b30_15 3_b30_20 4_b60_10 5_b60_15 6_b60_25 7_b120_2 8_b120_10 9_b120_15 Instâncias Utilizadas Fonte: própria. Na figura 6.2 nota-se que há duas configurações com tempo médio semelhante nos casos de teste utilizados. No entanto, a configuraçao iter_150_nlrc_20_lrc_0.2 começa apresentar tempo médio melhor que a configuração iter_120_nlrc_30_lrc_0.2 a medida que o tamanho dos casos de teste aumenta. Portanto, a configuração iter_150_nlrc_20_lrc_0.2 foi escolhida Ajuste de Parâmetros - NSGA 2 O NSGA2 possui três parâmetros que necessitam ser afinados, portanto para cada versão proposta houve a avaliação dos parâmetros. Tais parâmetros são: tamanho da população - pop; taxa de recombinação - cros; taxa de mutação - mut. O mecanismo de avaliação e selação da configuração mais adequada segue o mesmo processo utilizado para as versões do GRASP.

93 6.3 Ajuste de Parâmetros 91 Definindo valores de Parâmetro A lista a seguir ilustra os valores dos parâmetros utilizados nas versões do NSGA2: pop = {60; 90; 120; 150}; cross = {0,5;0,6;0,7;0,8;0,9;1}; mut = {0,1;0,2;0,3}. Utilizando um design fatorial tem-se um total de 78 configurações a serem testadas. NSGA2 com operador C1 A tabela D.3 ilustra os resulados que foram utilizados para filtrar as melhores configurações do NSGA2-C1. As melhores configurações, com base na metodologia adotada, são ilustradas na tabela 6.6. A aplicação do teste de Friedman indica que há diferença entre as configurações ilustradas na tabela 6.6. O p value = indica que há diferença entre as configurações pop_150_cross_0.6_mut_0.3 e pop_150_cross_0.9_mut_0.3. Neste caso, a configuração destacada em negrito na tabela 6.6 foi eliminada. Tabela 6.6: Melhores configurações obtidas para o NSGA2-C1. A configuração em destaque foi elimida após o teste de Friedman. Configurações pop_150_cross_0.6_mut_0.3 pop_150_cross_0.9_mut_0.3 pop_150_cross_1_mut_0.1 pop_150_cross_1_mut_0.2 pop_150_cross_1_mut_0.3 Assim como ocorreu com as versões do GRASP foi necessário usar o tempo como forma de escolher uma configuração dentre as quatro configurações restantes. Com base no tempo de execução nota-se na figura 6.3 que a configuração pop_150_cross_1_mut_0.1 possui menor tempo de processamento que as outras configurações. Portanto, ela é a configuração escolhida para esta versão do NSGA2.

94 6.3 Ajuste de Parâmetros 92 Figura 6.3: Tempo médio de execução para cada configuração/caso de teste utilizando o NSGA2-C1 Tempo Médio conf pop_150_cross_1_mut_0.3_g pop_150_cross_0.9_mut_0.3_g pop_150_cross_1_mut_0.2_g pop_150_cross_1_mut_0.1_g 1_b30_10 2_b30_15 3_b30_20 4_b60_10 5_b60_15 6_b60_25 7_b120_2 8_b120_10 9_b120_15 Instâncias Utilizadas Fonte: própria. NSGA2 com operador C2 Os parâmetros utilizados e seus respectivos valores são os mesmos para esta versão do NSGA2, assim como foi utilizado na vesão anterior. A tabela D.4 ilustra os valores da execução de todas as configurações. A tabela 6.7 ilustra as melhores configurações. Tabela 6.7: Melhores configurações obtidas com o NSGA2-C2. Configurações pop_150_cross_0.5_mut_0.3 pop_150_cross_0.6_mut_0.3 pop_150_cross_0.7_mut_0.3 pop_150_cross_0.8_mut_0.2 pop_150_cross_0.8_mut_0.3 pop_150_cross_0.9_mut_0.2 pop_150_cross_0.9_mut_0.3 A aplicação do teste de Friedman não apontou nenhum diferença entre as configurações ilustradas na tabela 6.7. O p value = indica que todas as configurações tem, estatisticamente, o mesmo efeito. Neste caso, nenhum configuração foi eliminada com base no teste de Friedman. Portanto, o tempo médio obtido por cada configuração para os casos de teste utilizados foi o critério utilizado para definir a melhor configuração. A figura 6.4 ilustra a

95 6.3 Ajuste de Parâmetros 93 comparação. Figura 6.4: Comparação entre as melhores configurações do Nsga2 com C2 com base no tempo médio. conf Tempo Médio pop_150_cross_0.9_mut_0.3_g pop_150_cross_0.9_mut_0.2_g pop_150_cross_0.8_mut_0.3_g pop_150_cross_0.8_mut_0.2_g pop_150_cross_0.7_mut_0.3_g pop_150_cross_0.6_mut_0.3_g pop_150_cross_0.5_mut_0.3_g 1_b30_10 2_b30_15 3_b30_20 4_b60_10 5_b60_15 6_b60_25 7_b120_2 8_b120_10 9_b120_15 Instâncias Utilizadas Fonte: própria. Na figura 6.4 a comparação entre as configurações tem como base no tempo médio obtido em 20 execuções por caso de teste. Claramente, a configuração pop_150_cross_0.5_mut_0.3 possui o melhor tempo médio em todos os casos de teste. Logo, esta será a configuração a ser utilizada. NSGA2 com operador C3 Os parâmetros utilizados e seus respectivos valores são os mesmos que foram utilizados para as duas versões anteriores do NSGA2. A tabela D.5 contém os valores utilizados para filtrar as configurações para esta versão do algoritmo seguindo a metodologia já mencionada, assim como feito nas versões anteriores. A tabela 6.8 ilustra as melhores configurações obtidas. Tabela 6.8: Melhores configurações obtidas para o NSGA2-C3. Configurações pop_150_cross_0.5_mut_0.3 pop_150_cross_0.7_mut_0.2 pop_150_cross_0.7_mut_0.3 pop_150_cross_0.8_mut_0.2 pop_150_cross_0.8_mut_0.3

96 6.3 Ajuste de Parâmetros 94 A aplicação do teste de Friedman sobre as configurações presentes nesta tabela 6.8 indicam que não há diferença entre elas com p value = Neste caso, o teste indica que as configurações selecionadas têm, estatisticamente, o mesmo efeito. Tendo em vista que ainda há mais que uma configuração, então a decisão sobre qual configuração utilizar recai sobre a avalição do tempo médio de execução das configurações para cada caso de teste. A figura 6.5 ilustra a comparação entre as configurações filtradas. Como pode ser visto a configuração pop_150_cross_0.5_mut_0.3 obteve menor tempo médio em 20 execuções para cada caso de teste. Portanto, esta configuração será a escolhida. Figura 6.5: Comparação entre as melhores configurações do NSGA2-C3 com base no tempo médio. conf Tempo Médio pop_150_cross_0.9_mut_0.3_g pop_150_cross_0.9_mut_0.2_g pop_150_cross_0.8_mut_0.3_g pop_150_cross_0.8_mut_0.2_g pop_150_cross_0.7_mut_0.3_g pop_150_cross_0.6_mut_0.3_g pop_150_cross_0.5_mut_0.3_g 1_b30_10 2_b30_15 3_b30_20 4_b60_10 5_b60_15 6_b60_25 7_b120_2 8_b120_10 9_b120_15 Instâncias Utilizadas Fonte: própria Ajuste de Parâmetros - SPEA 2 O SPEA2 possui três versões implementadas, assim como o NSGA2. No entanto, neste caso há um parâmetro adicional a ser ajustado. Dado que o SPEA2 utiliza uma população externa, então é necessário ajustar o tamanho desta população. Definindo Valores de Parâmetros Os parâmetros utilizados no SPEA2 são os seguintes: população - pop; arquivo - arc; taxa de recombinação - cross e taxa de mutação - mut. Os valores utilizados para cada parâmetro

97 6.3 Ajuste de Parâmetros 95 são listados a seguir. pop = {60; 90; 120; 150}; arc = {20;30;40}; cross = {0,5;0,6;0,7;0,8;0,9;1}; mut = {0,1;0,2;0,3}. Utilizando um design fatorial tem-se um total de 216 configurações diferentes, cujo objetivo é escolher a melhor com base na metodologia já mencionada neste texto. SPEA2 com operador C1 A escolha da configuração aplicada segue a mesma ideia que foi aplicada aos outros algoritmos. A tabela D.6 ilustra os dados utilizados para filtrar as melhores configurações para o SPEA2-C1 segundo o critério adotado. A tabela 6.9 ilustra as melhores configurações, tendo em vista a metodologia adotada (as configurações foram obtidas da tabela D.6). O resultado do teste de Friedman indica que não há diferença significativa entre as configurações, isto foi confirmado com o p value = Tabela 6.9: Melhores configurações do SPEA2-C1. Configurações pop_150_arc_30_cross_0.5_mut_0.3 pop_150_arc_30_cross_0.7_mut_0.3 pop_150_arc_30_cross_0.8_mut_0.3 pop_150_arc_30_cross_1_mut_0.3 pop_150_arc_40_cross_0.7_mut_0.3 pop_150_arc_40_cross_0.8_mut_0.3 pop_150_arc_40_cross_0.9_mut_0.1 pop_150_arc_40_cross_1_mut_0.1 O resultado do teste de Friedman não indicou que alguma configuração pudesse ser eliminada por não ser, estatisticamente, tão boa quanto as outras. Neste caso, todas as configurações selecionadas são comparadas com base na avaliação do tempo médio para 20 execuções por caso de teste. A figura 6.6 ilustra a comparação entre as configurações escolhidas para o SPEA2-C1. Note que duas configurações apresentam, praticamente, o mesmo tempo de processamento para

98 6.3 Ajuste de Parâmetros 96 Figura 6.6: Comparação com base no tempo de processamento utilizada por cada configuração por caso de teste para o SPEA2-C1. conf Tempo Médio pop_150_arc_30_cross_0.8_mut_0.3_ pop_150_arc_40_cross_0.8_mut_0.3_ pop_150_arc_40_cross_0.7_mut_0.3_ pop_150_arc_30_cross_1_mut_0.3_ pop_150_arc_30_cross_0.7_mut_0.3_ pop_150_arc_30_cross_0.5_mut_0.3_ pop_150_arc_40_cross_0.9_mut_0.1_ pop_150_arc_40_cross_1_mut_0.1_ 1_b30_10 2_b30_15 3_b30_20 4_b60_10 5_b60_15 6_b60_25 7_b120_2 8_b120_10 Instâncias Utilizadas Fonte: própria. os casos de teste utilizados. Nos casos de testes de tamanho maior (B_120_2 e B_120_10) a configuração pop_150_arc_40_cross_1_mut_0.1 apresenta o tempo um pouco menor. Neste caso, esta configuração foi escolhida. SPEA2 com operador C2 O procedimento aplicado para esta versão do SPEA2 é o mesmo que foi aplicado para versão anterior. A tabela D.7 ilustra os valores utilizados para filtrar as melhores configurações com base no procedimento de escolha adotado. As melhores configurações estão ilustradas na tabela Tabela 6.10: Melhores configurações obtidas para o SPEA2-C2. Configurações pop_150_arc_20_cross_0.5_mut_0.1 pop_150_arc_20_cross_1_mut_0.2 pop_150_arc_20_cross_1_mut_0.3 pop_150_arc_30_cross_0.5_mut_0.3 pop_150_arc_30_cross_1_mut_0.3 pop_150_arc_40_cross_0.7_mut_0.3 pop_150_arc_40_cross_0.8_mut_0.3 pop_150_arc_40_cross_1_mut_0.3

99 6.3 Ajuste de Parâmetros 97 O teste de Friedman foi aplicado as configurações presentes na tabela. O resultado do teste de Friedman com p value = não apontou nenhuma diferença entre as configurações ilustradas na tabela. Através do teste aplicado nenhum configuração foi elimida. Neste caso, as configurações foram comparadas com base no tempo médio em 20 execuções por caso de teste. A figura 6.7 ilustra a comparação realizada. Figura 6.7: Comparação entre as melhores configurações do Spea2-C2 com base no tempo médio em 20 execuções para cada caso e teste. Tempo Médio conf pop_150_arc_40_cross_1_mut_0.3_ pop_150_arc_20_cross_1_mut_0.2_ pop_150_arc_20_cross_1_mut_0.3_ pop_150_arc_30_cross_1_mut_0.3_ pop_150_arc_40_cross_0.8_mut_0.3_ pop_150_arc_40_cross_0.7_mut_0.3_ pop_150_arc_30_cross_0.5_mut_0.3_ pop_150_arc_20_cross_0.5_mut_0.1_ 1_b30_10 2_b30_15 3_b30_20 4_b60_10 5_b60_15 6_b60_25 7_b120_2 8_b120_10 Instâncias Utilizadas Note que a configuração pop_150_arc_20_cross_0.5_mut_0.1 possui melhor tempo de execução médio, levando em consideração 20 execuções em cada caso de teste. Portanto, esta é a configuração escolhida para esta versão do algoritmo. SPEA2 com operador C3 Por fim, tem-se o resultado do ajuste de parâmetros da última versão implementada. O procedimento para esta versão do SPEA2 é o mesmo que foi aplicado às versões anteriores. A tabela D.8 ilustra os valores que foram utilizados para filtrar as melhores configurações com base na metodologia que vem sendo empregada. A tabela 6.11 ilustra as melhores configurações obtidas para SPEA2-C3. O teste de Friedman indica que não diferença entre as configurações ilustradas com p value = Neste caso, não foi possível eliminar nenhuma configuração com base no teste. O teste de Friedman não possibilitou a eliminação de nenhuma configuração, portanto todas

100 6.3 Ajuste de Parâmetros 98 Tabela 6.11: Melhores configurações obtidas do SPEA2-C3. Configurações pop_120_arc_30_cross_1_mut_0.2 pop_150_arc_20_cross_0.8_mut_0.3 pop_150_arc_30_cross_0.6_mut_0.2 pop_150_arc_30_cross_0.7_mut_0.2 pop_150_arc_30_cross_0.7_mut_0.3 pop_150_arc_30_cross_0.8_mut_0.3 pop_150_arc_30_cross_0.9_mut_0.2 pop_150_arc_30_cross_1_mut_0.2 as configurações são avaliadas com base no tempo de execução no intuito de escolher uma configuração a ser usada. O critério adotado é mesmo que foi utilizado para as versões anteriores. A figura 6.8 ilustra a comparação das melhores configurações com base no tempo médio para 20 execuções para cada caso de teste. Nos casos de teste 1_B_30_10 até 4_60_10 todas as configurações possuem o tempo médio, praticamente, no mesmo patamar. No entanto, a partir do caso de teste 5_60_15 duas configurações apresentam melhor tempo médio. Note-se que a configuração pop_150_arc_30_cross_0.6_mut_0.2 se comporta melhor com base no tempo médio, portanto ele é a escolhida. Figura 6.8: Comparação entre as configurações obtidas do SPEA2-C3. Tempo Médio conf pop_150_arc_30_cross_0.9_mut_0.2_ pop_150_arc_30_cross_1_mut_0.2_ pop_150_arc_20_cross_0.8_mut_0.3_ pop_150_arc_30_cross_0.8_mut_0.3_ pop_150_arc_30_cross_0.7_mut_0.2_ pop_120_arc_30_cross_1_mut_0.2_ pop_150_arc_30_cross_0.7_mut_0.3_ pop_150_arc_30_cross_0.6_mut_0.2_ 1_b30_10 2_b30_15 3_b30_20 4_b60_10 5_b60_15 6_b60_25 7_b120_2 8_b120_10 Instâncias Utilizadas

101 6.4 Experimento 1 - Comparando Versões dos Algoritmos Configurações Escolhidas Até o presente momento discutiu-se a metodologia utilizada para filtrar as configurações de modo que uma configuração seja escolhida ao final do processo. Além disso, houve a aplicação da metodologia para todos os algoritmos (incluindo versões) propostos. A tabela 6.12 ilustra o resultado final do ajuste de parâmetros ilustrado na seções anteriores. Tabela 6.12: Todas as configurações escolhidas para cada versão dos algoritmos implementados são ilustradas. Algoritmos NSGA2 CROSS1 NSGA2 CROSS2 NSGA2 CROSS3 Grasp_Sequecial Grasp_Aleatorio SPEA2 CROSS1 SPEA2 CROSS2 SPEA2 CROSS3 Configurações pop_150_cross_1_mut_0.1 pop_150_cross_0.5_mut_0.3 pop_150_cross_0.5_mut_0.3 iter_150_nlrc_20_lrc_0.2 iter_150_nlrc_10_lrc_0.2 pop_150_arc_40_cross_1_mut_0.1 pop_150_arc_20_cross_0.5_mut_0.1 pop_150_arc_30_cross_0.6_mut_ Experimento 1 - Comparando Versões dos Algoritmos Este experimento tem por objetivo identificar as versões com melhor desempenho para cada algoritmo. Por exemplo, as versões do NSGA2 são comparadas entre si, ao final escolhe-se a versão que obtiver melhores resultados que as demais. Isto também foi realizado para os demais algoritmos. As comparações foram realizadas com base no hypervolume. Foram utilizados 90 casos de teste. Cada versão dos algoritmos propostos foi executada 30 vezes. A avaliação das amostras coletadas foi realizada utilizando o teste de Mann-Whitney 4. O nível de significância é α = Supondo a comparação de duas amostras X e Y, então o p value pode apresentar três situações: p value < 0.05 : indica que X é melhor que Y. p value > 0.95 : indica que Y é melhor que X < p value < 0.95 : indica que não há diferença. 4 Concultar (CONOVER, 1980)

102 6.4 Experimento 1 - Comparando Versões dos Algoritmos Comparando Versões do GRASP A comparação das versões do GRASP foi realizada utilizando o teste de Mann-Whitney. A tabela 6.13 ilustra o p value obtido na comparação do GRASP Sequencial com o GRASP Aleatório em todos os casos de teste. O p-valor indica qual configurações foi melhor em cada caso de teste. Os valores que estão em negrito indicam que o p-valor foi menor que 0.05, portanto GRASP Sequencial foi melhor. Tabela 6.13: Resultado da comparação entre o GRASP Sequencial e GRASP aleatório. Caso de Teste p-value Caso de Teste p-value Caso de Teste p-value B030_ E-17 B060_ E-17 B120_ E-14 B030_ E-18 B060_ E-15 B120_ E-11 B030_ E-18 B060_ E-17 B120_ E-11 B030_ E-14 B060_ E-12 B120_ E-13 B030_ E-14 B060_ E-07 B120_ E-01 B030_ E-14 B060_ E-08 B120_ E-01 B030_ E-08 B060_ E-14 B120_ E-11 B030_ E-15 B060_ E-18 B120_ E-14 B030_ E-12 B060_ E-10 B120_ E-09 B030_ E-06 B060_ E-11 B120_ E-01 B030_ E-06 B060_ E-04 B120_ E-03 B030_ E-09 B060_ E-09 B120_ E-06 B030_ E-09 B060_ E-13 B120_ E-07 B030_ E-12 B060_ E-13 B120_ E-07 B030_ E-14 B060_ E-08 B120_ E-08 B030_ E-10 B060_ E-12 B120_ E-05 B030_ E-12 B060_ E-08 B120_ E-03 B030_ E-10 B060_ E-12 B120_ E-05 B030_ E-18 B060_ E-12 B120_ E-13 B030_ E-13 B060_ E-05 B120_ E-12 B030_ E-14 B060_ E-12 B120_ E-01 B030_ E-18 B060_ E-02 B120_ E-03 B030_ E-18 B060_ E-06 B120_ E-04 B030_ E-03 B060_ E-07 B120_ E-04 B030_ E-12 B060_ E-16 B120_ E-01 B030_ E-13 B060_ E-10 B120_ E-05 Continua na próxima página

103 6.4 Experimento 1 - Comparando Versões dos Algoritmos 101 Caso de Teste p-value Caso de Teste p-value Caso de Teste p-value B030_ E-18 B060_ E-10 B120_ E-03 B030_ E-17 B060_ E-02 B120_ E-03 B030_ E-16 B060_ E-17 B120_ E-04 B030_ E-16 B060_ E-11 B120_ E-01 O resultado ilustra que o GRASP Sequencial foi melhor que o GRASP Aleatório em quase todos os casos de teste. Note-se que em alguns casos de teste o resultado do teste estatístico indica que nenhum versão foi melhor que a outra. Portanto, o GRASP Sequencial é a versão escolhida para ser comparado com outros algoritmos Comparando Versões do NSGA 2 Esta seção apresenta as comparações entre as versões do NSGA2. O objetivo é chegar a uma versão que seja, estatisticamente, melhor que as demais. As comparações das versões do NSGA2 é um pouco mais extensa, pois há três versões. As versões foram comparadas duas a duas. NSGA2-C1 x NSGA2-C2 A tabela 6.14 ilustra o p-valor da comparação entre as duas versões para cada caso de teste. Os valores com destaque em negrito indicam que o NSGA2-C1 foi melhor, valores sublinhados indicam que NSGA2-C2 foi melhor. Valores sem destaque indicam que nenhum foi melhor que o outro. Tabela 6.14: Compração ente NSGA2-C1 e NSGA2-C2. Caso de Teste p-value Caso de Teste p-value Caso de Teste p-value B030_ E+00 B060_ E+00 B120_ E-01 B030_ E+00 B060_ E-01 B120_ E+00 B030_ E+00 B060_ E+00 B120_ E+00 B030_ E+00 B060_ E+00 B120_ E+00 Continua na próxima página

104 6.4 Experimento 1 - Comparando Versões dos Algoritmos 102 Caso de Teste p-value Caso de Teste p-value Caso de Teste p-value B030_ E+00 B060_ E+00 B120_ E+00 B030_ E+00 B060_ E+00 B120_ E+00 B030_ E-01 B060_ E-03 B120_ E+00 B030_ E-06 B060_ E-01 B120_ E-01 B030_ E-01 B060_ E+00 B120_ E+00 B030_ E-04 B060_ E+00 B120_ E+00 B030_ E-01 B060_ E+00 B120_ E+00 B030_ E+00 B060_ E+00 B120_ E+00 B030_ E+00 B060_ E+00 B120_ E-01 B030_ E-05 B060_ E-02 B120_ E-01 B030_ E-05 B060_ E-01 B120_ E+00 B030_ E-08 B060_ E+00 B120_ E-01 B030_ E-09 B060_ E-01 B120_ E+00 B030_ E+00 B060_ E-09 B120_ E+00 B030_ E-02 B060_ E-09 B120_ E-04 B030_ E-09 B060_ E-01 B120_ E-01 B030_ E-06 B060_ E-06 B120_ E-06 B030_ E-03 B060_ E+00 B120_ E-04 B030_ E-11 B060_ E-01 B120_ E-01 B030_ E-01 B060_ E-01 B120_ E+00 B030_ E-02 B060_ E-11 B120_ E-10 B030_ E-03 B060_ E-11 B120_ E-01 B030_ E-11 B060_ E-10 B120_ E-09 B030_ E-11 B060_ E-01 B120_ E-09 B030_ E-11 B060_ E-01 B120_ E-01 B030_ E-11 B060_ E-08 B120_ E-11 Os resultados indicam que nenhuma versão possui comportamento estatístico superior. No entanto, através da contagem de melhores resultados dos algoritmos o NSGA2-C2 leva uma ligeira vantagem sobre NSGA2-C1. A tabela 6.15 ilustra um resumo da comparação. Os valores indicam a quantidade de vezes que cada algoritmo foi melhor que o outro em cada tipo de caso de teste.

105 6.4 Experimento 1 - Comparando Versões dos Algoritmos 103 Tabela 6.15: Resumo da comparação entre NSGA2-C1 e NSGA2-C2. Casos de Teste Algoritmo B030 B060 B120 Total NSGA2 Cross NSGA2 Cross Empate O resultado da comparação entre estas duas versões ilustra um fato interessante, a medida que o tamanho dos casos de teste aumenta o NSGA2-C2 se mantém melhor que NSGA2-C1. Além disso, avaliando todos os casos de teste percebe-se que o NSGA2-C2 obtém maior número de melhores resultados. Portanto, a versão NSGA2-C2 é considerada melhor. NSGA2-C1 x NSGA2-C3 Os dados apresentados na tabela 6.16 seguem a mesma definição utilizada na comparação da seção anterior. O valores com destaque em negrito indicam que o NSGA2-C1 foi melhor, valores sublinhados indicam que NSGA2-C3 foi melhor. Valores sem destaque indicam que nenhum foi melhor que o outro. Tabela 6.16: Compração ente NSGA2-C1 e NSGA2-C3. Caso de Teste p-value Caso de Teste p-value Caso de Teste p-value B030_ E+00 B060_ E-02 B120_ E-01 B030_ E+00 B060_ E-01 B120_ E+00 B030_ E+00 B060_ E-01 B120_ E+00 B030_ E+00 B060_ E-01 B120_ E+00 B030_ E+00 B060_ E+00 B120_ E+00 B030_ E+00 B060_ E+00 B120_ E+00 B030_ E-01 B060_ E-05 B120_ E-01 B030_ E-05 B060_ E-01 B120_ E-03 B030_ E-01 B060_ E+00 B120_ E-01 B030_ E-03 B060_ E-01 B120_ E+00 B030_ E-04 B060_ E+00 B120_ E+00 B030_ E+00 B060_ E-01 B120_ E+00 B030_ E+00 B060_ E-01 B120_ E-01 B030_ E-10 B060_ E-08 B120_ E-02 Continua na próxima página

106 6.4 Experimento 1 - Comparando Versões dos Algoritmos 104 Caso de Teste p-value Caso de Teste p-value Caso de Teste p-value B030_ E-08 B060_ E-01 B120_ E+00 B030_ E-06 B060_ E+00 B120_ E-03 B030_ E-09 B060_ E-01 B120_ E-05 B030_ E+00 B060_ E-11 B120_ E+00 B030_ E-01 B060_ E-11 B120_ E-06 B030_ E-11 B060_ E-01 B120_ E-04 B030_ E-10 B060_ E-09 B120_ E-06 B030_ E-06 B060_ E-03 B120_ E-10 B030_ E-11 B060_ E-01 B120_ E+00 B030_ E-01 B060_ E-01 B120_ E+00 B030_ E-01 B060_ E-11 B120_ E-11 B030_ E-09 B060_ E-11 B120_ E-03 B030_ E-11 B060_ E-11 B120_ E-10 B030_ E-11 B060_ E-01 B120_ E-11 B030_ E-10 B060_ E-03 B120_ E-02 B030_ E-11 B060_ E-11 B120_ E-11 O resultado da comparação entre estas versões não apresentou um domínio de nenhuma delas sobre a outra. No entanto, pode-se verificar algumas diferenças entre elas. A tabela 6.17 ilustra o resumo da comparação entre as versões NSGA2-C1 e NSGA2-C3. Os valores indicam a quantidade de vezes que cada algoritmo foi melhor que o outro em cada tipo de caso de teste. O resumo de toda a comparação indica que o NSGA2-C1 é, ligeiramente, melhor que a versão NSGA2-C3. Tabela 6.17: Resumo da comparação entre NSGA2-C1 e NSGA2-C3. Casos de Teste Algoritmo B030 B060 B120 Total NSGA2 Cross NSGA2 Cross Empate

107 6.4 Experimento 1 - Comparando Versões dos Algoritmos 105 NSGA2-C2 x NSGA2-C3 Por fim, esta é a última comparação entre as versões do NSGA2. O procedimento realizado é o mesmo que foi realizado nas versões anteriores. A tabela 6.18 ilustra o resultado da comparação entre o NSGA2-C2 e o NSGA2-C3. Os valores com destaque em negrito indicam que o NSGA2-C2 foi melhor, valores sublinhados indicam que NSGA2-C3 foi melhor. Valores sem destaque indicam que nenhuma versão foi melhor que a outra. O resultado ilustrado é conclusivo em favor do NSGA2-C2. Isto se verifica nos resultados ilustrados, onde há apenas quatro casos de teste em que o NSGA2-C3 obtém melhor resultado. Além disso, o NSGA2-C2 é melhor em 61 casos de teste. Tabela 6.18: Comparação entre NSGA2-C2 e NSGA2-C3. Caso de Teste p-value Caso de Teste p-value Caso de Teste p-value B030_ E-02 B060_ E-07 B120_ E-04 B030_ E-01 B060_ E-03 B120_ E-03 B030_ E-02 B060_ E-02 B120_ E-01 B030_ E-02 B060_ E-03 B120_ E-03 B030_ E-01 B060_ E-01 B120_ E-09 B030_ E-03 B060_ E-01 B120_ E-01 B030_ E-02 B060_ E-03 B120_ E-07 B030_ E-01 B060_ E-01 B120_ E-03 B030_ E-02 B060_ E-04 B120_ E-05 B030_ E-01 B060_ E-03 B120_ E-01 B030_ E-05 B060_ E-04 B120_ E-02 B030_ E-02 B060_ E-04 B120_ E-02 B030_ E-03 B060_ E-03 B120_ E-01 B030_ E-07 B060_ E-05 B120_ E-04 B030_ E-03 B060_ E-04 B120_ E-01 B030_ E-02 B060_ E-01 B120_ E-02 B030_ E-02 B060_ E-02 B120_ E-09 B030_ E-01 B060_ E-08 B120_ E-01 B030_ E+00 B060_ E-05 B120_ E-01 B030_ E-08 B060_ E-01 B120_ E-03 B030_ E-06 B060_ E-04 B120_ E-01 B030_ E-02 B060_ E-09 B120_ E-08 Continua na próxima página

108 6.4 Experimento 1 - Comparando Versões dos Algoritmos 106 Caso de Teste p-value Caso de Teste p-value Caso de Teste p-value B030_ E-06 B060_ E-02 B120_ E-01 B030_ E-02 B060_ E-04 B120_ E-01 B030_ E-01 B060_ E-05 B120_ E-03 B030_ E-07 B060_ E-02 B120_ E-07 B030_ E-08 B060_ E-04 B120_ E-02 B030_ E-02 B060_ E-01 B120_ E-07 B030_ E-07 B060_ E-03 B120_ E-04 B030_ E-04 B060_ E-03 B120_ E-01 Resultado Final O resultados obtidos nas comparações entre as versões do NSGA2 indica certo equilíbrio em alguns casos. No entanto, apenas uma versão foi escolhida para comparação com outros algoritmos desenvolvidos neste trabalho. A versão que apresentou, de modo geral, melhor resultado que as outras foi o NSGA2-C2. Esta versão foi a escolhida Comparando Versões do SPEA 2 Esta seção ilustra a comparação entre as versões do SPEA2. O objetivo é chegar a uma versão que seja melhor, estatisticamente, que as demais. As comparações realizadas são semelhantes ao que foi realizado com NSGA2. SPEA2-C1 x SPEA2-C2 A primeira comparação realizada entre as versões do SPEA2 foi entre o SPEA2-C1 e o SPEA2-C2. A tabela 6.19 ilustra o p-valor da comparação entre as duas versões para cada caso de teste utilizado. Valores em negrito indicam que o SPEA2-C1 foi melhor que o SPEA2- C2, valores sublinhados indicam o contrário e valores sem destaque indicam que não diferença significativa entre as versões.

109 6.4 Experimento 1 - Comparando Versões dos Algoritmos 107 Tabela 6.19: Compração ente SPEA2-C1 e SPEA2-C2. Caso de Teste p-value Caso de Teste p-value Caso de Teste p-value B030_ E+00 B060_ E-01 B120_ E-02 B030_ E-01 B060_ E-01 B120_ E+00 B030_ E+00 B060_ E-01 B120_ E+00 B030_ E+00 B060_ E-01 B120_ E+00 B030_ E+00 B060_ E+00 B120_ E+00 B030_ E+00 B060_ E+00 B120_ E+00 B030_ E-01 B060_ E-04 B120_ E+00 B030_ E-07 B060_ E-01 B120_ E-01 B030_ E-01 B060_ E+00 B120_ E+00 B030_ E-02 B060_ E-01 B120_ E+00 B030_ E-01 B060_ E+00 B120_ E+00 B030_ E+00 B060_ E-01 B120_ E+00 B030_ E-01 B060_ E-01 B120_ E-01 B030_ E-02 B060_ E-02 B120_ E-01 B030_ E-01 B060_ E-01 B120_ E+00 B030_ E-01 B060_ E+00 B120_ E-01 B030_ E-07 B060_ E-01 B120_ E-02 B030_ E+00 B060_ E-01 B120_ E+00 B030_ E-05 B060_ E-08 B120_ E-01 B030_ E-02 B060_ E-01 B120_ E-05 B030_ E-09 B060_ E-07 B120_ E-11 B030_ E+00 B060_ E+00 B120_ E-03 B030_ E-10 B060_ E-03 B120_ E-04 B030_ E-01 B060_ E-01 B120_ E+00 B030_ E-02 B060_ E-11 B120_ E-08 B030_ E-01 B060_ E-11 B120_ E-01 B030_ E-10 B060_ E-09 B120_ E-11 B030_ E-09 B060_ E-01 B120_ E-08 B030_ E-10 B060_ E-01 B120_ E-01 B030_ E-10 B060_ E-09 B120_ E-11

110 6.4 Experimento 1 - Comparando Versões dos Algoritmos 108 Os resultados ilustrados na tabela 6.19 não indicam ampla vantagem de uma versão sobre a outra. De qualquer modo, o SPEA2-C2 apresenta uma vantagem em relação ao SPEA2-C1. A tabela 6.20 ilustra o resumo da comparação entre as versões mencionadas, note-se que nos casos de teste B_030 houve um empate. No entanto, nos demais casos de teste o SPEA2-C2 se saiu melhor. Tabela 6.20: Resumo da comparação entre SPEA2-C1 e SPEA2-C2. Casos de Teste Algoritmo B030 B060 B120 Total SPEA2 Cross SPEA2 Cross Empate SPEA2-C1 x SPEA2-C3 A segunda comparação foi realizada entre as versões SPEA2-C1 e SPEA2-C3. A tabela 6.21 ilustra o p-valor da comparação destas versões para cada caso de teste. Os valores destacados em negrito indicam que o SPEA2-C1 é melhor que SPEA2-C3, valores sublinhados indicam o contrário e valores sem destaque indicam que nenhuma versão foi melhor que a outra. Tabela 6.21: Compração ente SPEA2-C1 e SPEA2-C3. Caso de Teste p-value Caso de Teste p-value Caso de Teste p-value B030_ B060_ E-04 B120_ E-05 B030_ E-01 B060_ E-01 B120_ E+00 B030_ E-01 B060_ E-01 B120_ E+00 B030_ E+00 B060_ E-01 B120_ E+00 B030_ E+00 B060_ E+00 B120_ E+00 B030_ E+00 B060_ E+00 B120_ E+00 B030_ E-01 B060_ E-06 B120_ E-01 B030_ E-03 B060_ E-01 B120_ E-02 B030_ E+00 B060_ E+00 B120_ E+00 B030_ E-01 B060_ E-01 B120_ E+00 B030_ E-01 B060_ E+00 B120_ E+00 B030_ E+00 B060_ E-02 B120_ E+00 B030_ E+00 B060_ E-01 B120_ E-01 B030_ E-06 B060_ E-08 B120_ E-01 Continua na próxima página

111 6.4 Experimento 1 - Comparando Versões dos Algoritmos 109 Caso de Teste p-value Caso de Teste p-value Caso de Teste p-value B030_ E-01 B060_ E-01 B120_ E+00 B030_ E-01 B060_ E+00 B120_ E-01 B030_ E-03 B060_ E-01 B120_ E-05 B030_ E+00 B060_ E-01 B120_ E+00 B030_ E+00 B060_ E-09 B120_ E-02 B030_ E-09 B060_ E+00 B120_ E-09 B030_ E-09 B060_ E-06 B120_ E-11 B030_ E+00 B060_ E-02 B120_ E-09 B030_ E-11 B060_ E-03 B120_ E-01 B030_ E+00 B060_ E-01 B120_ E+00 B030_ E-01 B060_ E-11 B120_ E-10 B030_ E-04 B060_ E-11 B120_ E-01 B030_ E-11 B060_ E-11 B120_ E-11 B030_ E-08 B060_ E-01 B120_ E-11 B030_ E-11 B060_ E-01 B120_ E-01 B030_ E-09 B060_ E-10 B120_ E-11 O resultado obtido aponta um equilíbrio entre as versões comparadas, embora o SPEA2-C3 tenha uma pequena vantagem sobre a outra versão. A tabela 6.22 ilustra o resumo da comparação realizada. O valores indicam quantas vezes cada algoritmo foi melhor que o outro nos tipos de casos de teste. Neste caso, as versões comparadas possuem,praticamente, o desempenho. Tabela 6.22: Resumo da comparação entre o SPEA2-C1 e SPEA2-C3. Casos de Teste Algoritmo B030 B060 B120 Total SPEA2 Cross SPEA2 Cross Empate SPEA2-C2 x SPEA2-C3 Por fim, a última comparação entre as versões do SPEA2 é ilustrada. A tabela 6.23 traz o resultado da comparação das versões para cada caso de teste. Os valores em negrito indicam

112 6.4 Experimento 1 - Comparando Versões dos Algoritmos 110 que o SPEA2-C2 foi melhor que o SPEA2-C3, o contrário indica que o SPEA2-C3 foi melhor e os valores sem destaque indicam que não houve nenhuma versão melhor. Tabela 6.23: Compração ente NSGA2-C2 e NSGA2-C3. Caso de Teste p-value Caso de Teste p-value Caso de Teste p-value B030_ E-02 B060_ E-06 B120_ E-03 B030_ E-01 B060_ E-01 B120_ E-02 B030_ E-05 B060_ E-01 B120_ E-01 B030_ E-01 B060_ E-01 B120_ E-01 B030_ E-01 B060_ E-01 B120_ E-05 B030_ E-01 B060_ E+00 B120_ E+00 B030_ E-01 B060_ E-03 B120_ E-06 B030_ E-01 B060_ E-03 B120_ E-03 B030_ E-01 B060_ E-04 B120_ E-01 B030_ E-01 B060_ E-01 B120_ E-01 B030_ E-01 B060_ E-01 B120_ E-01 B030_ E-01 B060_ E-04 B120_ E-02 B030_ E+00 B060_ E-01 B120_ E-01 B030_ E-04 B060_ E-06 B120_ E-01 B030_ E-01 B060_ E-01 B120_ E-01 B030_ E-01 B060_ E-01 B120_ E-01 B030_ E-01 B060_ E-01 B120_ E-03 B030_ E-01 B060_ E-01 B120_ E-02 B030_ E+00 B060_ E-06 B120_ E-01 B030_ E-10 B060_ E+00 B120_ E-03 B030_ E-03 B060_ E-01 B120_ E-03 B030_ E-01 B060_ E-07 B120_ E-05 B030_ E-06 B060_ E-01 B120_ E-01 B030_ E-01 B060_ E-02 B120_ E-01 B030_ E-01 B060_ E-07 B120_ E-06 B030_ E-04 B060_ E-01 B120_ E-02 B030_ E-06 B060_ E-04 B120_ E-01 B030_ E-01 B060_ E-02 B120_ E-08 B030_ E-04 B060_ E-01 B120_ E-01 B030_ E-01 B060_ E-02 B120_ E-02

113 6.5 Experimento 2 - Comparando Algoritmos 111 O resultado ilustrado na tabela 6.23 aponta que houve certo equilíbrio entre as versões para os casos de teste B_030, porém este equilíbrio não se manteve nos demais casos de teste. A tabela 6.24 resume os resultados obtidos da comparação. O valores indicam quantas vezes cada algoritmo foi melhor que o outro nos casos de teste utilizados. A avaliação geral do resultados indica que o SPEA2-C2 leva boa vantagem em relação ao SPEA2-C3, portanto o SPEA2-C2 é considerado melhor. Tabela 6.24: Resumo da comparção entre SPEA2-C2 e SPEA2-C3. Casos de Teste Algoritmo B030 B060 B120 Total SPEA2 Cross SPEA2 Cross Empate Resultado Final O resultado final da avaliação aponta que o SPEA2-C2 foi melhor que as demais versões, embora não tem ampla vantagem com base na contagem de melhores resultados nos casos de teste aplicados. Portanto, esta versão foi escolhida para ser comparada com as versões do GRASP e NSGA Experimento 2 - Comparando Algoritmos Os experimentos ilustrados na seção anterior indicaram uma versão com melhor resultado para cada algoritmo implementado. Neste momento, estas versões serão comparadas entre si. O objetivo de tal comparação é chegar a um algoritmo que obtenha melhores resultados que os demais. Para tal, o mesmo mecanismo de comparação que foi descrito no início da seção 6.4 foi aplicado na comparação que será descrita aqui. No entanto, algumas modificação foram realizadas. Primeiro, o número de execuções de cada algoritmo por caso de teste passou de 30 para 100, ou seja, houve aumento no tamanho das amostras. Segundo, o indicador de qualidade Epsilon Multiplicativo foi adicionado às comparações. O teste estatístico aplicado é o mesmo que foi aplicado na seção 6.4. Além disso, o indicador de qualidade hypervolume continua sendo usado.

114 6.5 Experimento 2 - Comparando Algoritmos 112 Por fim, uma informação importante sobre os experimentos realizados é a utilização de um tempo para cada execução. Tendo em vista que o NSGA2 e o SPEA2 são abordagens que mantém população, diferentemente do GRASP que não utiliza esta noção, então optou-se por utilizar um tempo fixo para cada caso de teste. Este tempo muda de acordo com o tamanho do caso de teste. A lista a seguir ilustra o tempo utilizado para cada caso de teste: B_030 (rede com 30 nós) : Utiliza 60 segundos; B_060 (rede com 60 nós) : Utiliza 120 segundos; B_120 (rede com 120 nós) : Utiliza 300 segundos GRASP Sequencial x Nsga2-C2 A tabela 6.25 ilustra o resultado da comparação foi realizada entre o GRASP Sequencial e o NSGA2-C2. Os valores ilustrados na tabela indicam o p-valor resultante da compararação entre os dois algoritmos para cada caso de teste 5. Valores em negrito indicam que o GRASP Sequencial é melhor, valores sublinhados indicam que o NSGA2-C2 é melhor e valores sem destaque indicam que nenhum algoritmo foi melhor que o outro. Tabela 6.25: Comparação entre o GRASP_Sequencial e NSGA2-C2. Caso de Teste Hypervolume Epsilon Caso de Teste Hypervolume Epsilon Caso de Teste Hypervolume Epsilon B030_1 1 1 B060_1 1 1 B120_1 1 1 B030_2 1 1 B060_2 1 1 B120_2 1 1 B030_3 1 1 B060_3 1 1 B120_3 1 1 B030_4 1 1 B060_4 1 1 B120_4 1 1 B030_5 1 1 B060_5 1 1 B120_5 1 1 B030_6 1 1 B060_6 1 1 B120_6 1 1 B030_ B060_7 1 1 B120_7 1 1 B030_ B060_8 1 1 B120_8 1 1 B030_9 1 1 B060_9 1 1 B120_9 1 1 B030_ B060_ B120_ B030_ B060_ B120_ B030_ B060_ B120_ B030_ B060_ B120_ B030_ B060_ B120_ B030_ B060_ B120_ B030_ E-006 B060_ B120_ B030_ E E-015 B060_ B120_ B030_ B060_ B120_ B030_ E E-008 B060_ B120_ B030_ B060_ B120_ B030_ B060_ E-005 B120_ E E-005 B030_ E B060_ B120_ B030_ E E-008 B060_ B120_ B030_ B060_ B120_ B030_ E E-005 B060_ E B120_ E B030_ E E-013 B060_ E E-031 B120_ B030_ B060_ B120_ Continua na próxima página 5 Note que o caso de teste B030_30 não possui nenhum valor devido problemas na coleta das amostras.

115 6.5 Experimento 2 - Comparando Algoritmos 113 Caso de Teste Hypervolume Epsilon Caso de Teste Hypervolume Epsilon Caso de Teste Hypervolume Epsilon B030_ E E-027 B060_ B120_ B030_ E E-013 B060_ B120_ B030_30 B060_ E E-010 B120_ E E-006 O resultado da comparação indica que o NSGA2-C2 se saiu melhor que o GRASP Sequencial na maioria dos casos de teste. Este fato se verifica para os dois indicadores de qualidade: hypervolume e epsilon multiplicativo. A tabela 6.26 ilustra a quantidade de vezes que cada algoritmo foi melhor que o outro em cada tipo de caso de teste, tanto o hypervolume quanto o Epsilon multiplicativo são usados. Note que o NSGA2-C2 foi bem superior ao GRASP Sequencial em todos casos de teste. Isto foi confirmado pelos dois indicadores de qualidade utilizados. Tabela 6.26: Resumo da comparação entre o GRASP Sequencial e o NSGA2-C2. B030 B060 B120 I H I ε I H I ε I H I ε Grasp Sequencial NSGA2-C Empate Spea2-C2 x GRASP Sequencial Esta seção ilustra a comparação entre o SPEA2-C2 e o GRASP Sequencial. A tabela 6.27 ilustra o resultado da comparação dos algoritmos para cada caso de teste utilizado. O valor ilustrado é o p-valor resultante da comparação. O destaque em negrito indica que o SPEA2-C2 foi melhor, valores sublinhados indicam que GRASP Sequencial foi melhor e os valores sem destaque indicam que nenhuma algoritmo foi melhor que o outro. Tabela 6.27: Comparação entre SPEA2-C2 com o GRASP Sequencial com base nos indicadores hypervolume e Epsilon multiplicativo. Caso de Teste Hypervolume Epsilon Caso de Teste Hypervolume Epsilon Caso de Teste Hypervolume Epsilon B030_1 5.91E E-021 B060_1 1.32E E-034 B120_1 1.28E E-034 B030_2 2.01E E-034 B060_2 1.44E E-034 B120_2 1.28E E-034 B030_3 2.63E E-034 B060_3 1.36E E-034 B120_3 1.28E E-034 B030_4 1.28E E-032 B060_4 1.28E E-034 B120_4 1.28E E-034 B030_5 1.33E E-034 B060_5 1.32E E-024 B120_5 1.81E E-034 B030_6 2.60E E-034 B060_6 1.28E E-034 B120_6 1.28E E-034 Continua na próxima página

116 6.5 Experimento 2 - Comparando Algoritmos 114 Caso de Teste Hypervolume Epsilon Caso de Teste Hypervolume Epsilon Caso de Teste Hypervolume Epsilon B030_7 3.74E E-015 B060_7 6.42E E-029 B120_7 1.28E E-029 B030_8 1.19E B060_8 1.49E E-033 B120_8 6.33E E-026 B030_9 6.43E E-016 B060_9 1.28E E-026 B120_9 1.28E E-034 B030_ E B060_ E E-034 B120_ E E-034 B030_ E E-024 B060_ E E-034 B120_ E E-034 B030_ E E-034 B060_ E E-034 B120_ E E-034 B030_ E E-033 B060_ E E-033 B120_ E B030_ E E-005 B060_ E E-030 B120_ E E-006 B030_ E-006 B060_ E E-034 B120_ E E-034 B030_ E B060_ E E-030 B120_ E B030_ B060_ E E-012 B120_ E E-034 B030_ E E-030 B060_ E E-011 B120_ E E-006 B030_ B060_ B120_ E E-032 B030_ E E-027 B060_ B120_ E E-008 B030_ E-017 B060_ B120_ B030_ B060_ E E-034 B120_ E E-034 B030_ B060_ E E-030 B120_ B030_ B060_ E E-031 B120_ E E-026 B030_ B060_ B120_ B030_ B060_ B120_ E E-030 B030_ B060_ B120_ B030_ B060_ E E-030 B120_ E E-019 B030_ B060_ E-025 B120_ E E-033 B030_30 B060_ B120_ A partir da tabela 6.27 é possível verificar que o SPEA2-C2 é superior ao GRASP Sequencial, assim como o NSGA2-C2. Este resultado está resumido na tabela 6.30, onde é possível ver que em ambos os indicadores de qualidade o SPEA2-C2 é melhor. Tabela 6.28: Resumo da comparação entre o SPEA2-C2 e GRASP Sequencial B030 B060 B120 I H I ε I H I ε I H I ε SPEA2-C Grasp Sequencial Empate Spea2-C2 x Nsga2-C2 Por fim, tem-se a comparação entre os dois melhores algoritmos propostos. Nas seções anteriores o SPEA2-C2 o NSGA2-C2 foram melhores que o GRASP Sequencial. Portanto, o resultado da comporação dos algoritmos discutida nesta seção indicará o melhor algoritmo proposto. A tabela 6.29 ilustra o resultado da comparação entre os algoritmos SPEA2-C2 e NSGA2- C2. A comparação, assim como nas seções anteriores, utiliza os indicadores de qualidade hypervolume e Epsilon multiplicativo. Os valores na tabela que estão em negrito indicam que o

117 6.5 Experimento 2 - Comparando Algoritmos 115 SPEA2-C2 foi melhor, os valores sublinhados indicam que o NSGA2-C2 é melhor e os valores sem destaque indicam que nenhum algoritmo foi melhor que o outro. Tabela 6.29: Comparação entre o SPEA2-C2 e NSGA2-C2 com base no hypervolume Epsilon Multiplicativo Caso de Teste Hypervolume Epsilon Caso de Teste Hypervolume Epsilon Caso de Teste Hypervolume Epsilon B030_ B060_ B120_ B030_ B060_ B120_ B030_ B060_ B120_ B030_ B060_ B120_ B030_ B060_ B120_ B030_ B060_ B120_ B030_ B060_ B120_ B030_ B060_ B120_ B030_ B060_ B120_ B030_ B060_ B120_ B030_ B060_ B120_ B030_ B060_ B120_ B030_ B060_ B120_ B030_ B060_ B120_ B030_ B060_ B120_ B030_ B060_ B120_ B030_ B060_ B120_ B030_ B060_ B120_ B030_ B060_ B120_ B030_ B060_ B120_ B030_ B060_ B120_ B030_ B060_ B120_ B030_ B060_ B120_ B030_ B060_ B120_ B030_ B060_ B120_ B030_ B060_ B120_ B030_ B060_ B120_ B030_ B060_ B120_ B030_ B060_ B120_ B030_30 B060_ B120_ O resultado ilustrado na tabela 6.29 aponta que o NSGA2-C2 tem melhores resultados que o SPEA2-C2 a medida que os casos de teste aumentam de tamanho. Isto é confirmado pelos indicadores de qualidade utilizados. Tabela 6.30: Resumo da comparação entre o SPEA2-C2 e NSGA2-C2 B030 B060 B120 I H I ε I H I ε I H I ε SPEA2-C NSGA2-C Empate

118 6.5 Experimento 2 - Comparando Algoritmos Resultado Final O último experimento foi utilizado para identificar qual dos algoritmos possui, estatisticamente, melhor comportamento que os demais. Os resultados ilustraram que o NSGA2-C2 e o SPEA2-C2 obtiveram melhor resultado que o GRASP-Sequencial. Por fim, foi realizada uma comparação entre o NSGA2-C2 e o SPEA2-C2. Os resultados obtidos indicam que o NSGA2-C2 possui comportamento, estatístico, melhor que o SPEA2-C2. A avaliação foi confirmada tanto pelo hypervolume quanto pelo Epsilon Multiplicativo. Note-se que este fato ocorre para os casos de teste B_060 e B_120. Portanto, considera-se o NSGA2-C2 como o melhor algoritmo.

119 117 7 Conclusões O Multicast Packing Problem possui vários estudos algorítmicos considerando um modelo matemático mono objetivo. Estes trabalhos, geralmente, apresentam restrições impostas ao problema tornando-o mais complexo. No entanto, um fato curioso acerca dos modelos matemático utilizados é a tentativa de incorporar mais de um objetivo de interesse em modelos mono objetivo (por exemplo, o trabalho proposto Chen, Gunluk e Yener (2000), ver capítulo 2). Portanto, uma lacuna foi observada no tocante a falta de estudos algorítmicos baseados em otimização multiobjetivo. O primeiro passo deste trabalho foi estabelecer um modelo matemático multiobjetivo que incorporasse os principais objetivos de interesse discutidos na literatura. Tal modelo, foi constituído com dois objetivos e uma restrição. O primeiro objetivo de interesse é o custo da solução. O segundo objetivo está relacionado a capacidade residual. O objetivo do modelo proposto foi incorporar os principais interesses de otimização estudados, considerando-os de igual importância. A razão por traz da escolha destes objetivos é o fato de que custo e capacidade residual representam interesses importantes. Este aspecto torna a resolução do problema mais complexa, assim como representa um cenário de aplicação mais real. Por fim, a restrição de capacidade das arestas corrobora com o fato de que, em aplicações reais, as mesmas possuem capacidade finita. Uma vez que o modelo matemático multiobjetivo está definido, então se possibilitou a resolução do problema através das técnicas de otimização multiobjetivo. Três abordagens foram escolhidas: NSGA2; SPEA2 e GRASP. As duas primeiras técnicas foram escolhidas por serem algoritmos clássicos da literatura. Já o GRASP foi uma adaptação de uma metaheurística para problema multiobjetivo, tendo em vista que seu uso em otimizaçao multiobjetivo vem mostrando resultados interessantes (MARTí et al., 2011). Estas abordagens definem seus próprios mecanismos de busca, no entanto foi necessário implementar componentes próprios como: operadores de criação de solução, recombinação, mutação e busca local. Os operadores criados renderem três versões para NSGA2, três versões para SPEA2 e 2

120 7.1 Trabalhos Futuros 118 versões para GRASP. Portanto, este trabalho rendeu um bom aparato em termos algorítmicos para resolução do problema em questão. Outrossim, houve grande empenho em implementar alguns algoritmos da literatura, como é o caso das heurísticas implementadas para criação de árvores de Steiner. Após a criação dos algoritmos uma extensa e planejada experimentação foi realizada. Esta experimentação foi dividida em três etapas. A primeira etapa serviu para realizar ajuste de parâmetros dos algoritmos. A segunda etapa foi conduzida no intuito de identificar a melhor versão das três abordagens mencionadas anteriormente. A terceira etapa foi a última etapa do processo de experimentação. Nela três algoritmos foram comparados entre si. GRASP Sequencial, NSGA2-C2 e SPEA2-C2 que são as melhores versões obtidas para cada algoritmo. Os resultados obtidos nesta etapa foram conclusivos em favor do NSGA2-C2 dentre todos os algoritmos propostos neste trabalho. Isto foi verificado para os dois indicadores de qualidade utilizados (Hypervolume e Epsilon Multiplicativo.). Por fim, é importante destacar que o modelo matemático, assim como todos os algoritmos implementados se constituem uma alternativa interessante no que diz respeito ao Multicast Packing Problem. O estudo realizado neste trabalho não esgotou o tema. Ao contrário disto, uma boa alternativa de solução foi proposta abrindo, assim, espaço para mais investigações. Há bastante que ainda pode ser feito, tendo em vista a abordagem proposta neste trabalho. 7.1 Trabalhos Futuros Há, ainda, muitas melhorias que podem ser feitas com relação ao estudo realizado neste trabalho. Tais melhorias podem ser realizadas em diferentes níveis. A lista a seguir ilustra alguns possibilidades: 1. criação de novos casos de teste e nova experimentação; 2. ajuste de parâmetros mais refinado, explorando mais possíbilidades de configurações; 3. criação de operadores de recombinação, mutação e criação de solução; 4. exploração de outros algoritmos de busca: Transgenético (GOLDBARG; GOLDBARG, 2009), entre outros;

121 119 APÊNDICE A -- NSGA 2 Uma rápida descrição sobre o mesmo foi dada na seção do capítulo 4. Os dois principais detalhes da implementação do NSGA2 são: classificação da população em classes e crowding distance (distância de aglomeração). Eles são apresentados neste apêndice de forma detalhada. A leitura deste apêndice é dispensável para o leitor com experiência no NSGA2, por outro lado o leitor que não possui muita informação sobre o algoritmo pode ter noção exata do funcionamento do mesmo. A.1 Classificação da População tamanho limite, o algoritmo faz uso dessa métrica e reduz a quantidade de soluções que serão preservadas. Essa, no entanto, é uma desvantagem do NSGA-II, uma vez que A classificação da população é obtida através do método chamado fast nondominating pode eliminar uma solução não-dominada por uma que posteriormente venha a ser sorting. Neste procedimento a população é ordenada em classes com base na relação de dominância. dominada. Pode haver, inclusive, um processo de ciclagem por causa dessa abordagem. No entanto, por não apresentar parâmetros a serem afinados, essa técnica se popularizou Figura bastante A.1: Exemplo no meio da daotimização classificação multiobjetivo de uma população (Dewri, 2007). com base na relação de dominância. Fonte:Autor desconhecido. Figura 6. Ranking conforme abordagem proposta por Srinivas e Deb (1994) para o NSGA (adaptado de Dewri, 2007). A figura A.1 ilustra a classificação da população. A primeira classe contém indivíduos não-dominados Empor 1998, nenhum Zitzleroutro, e Thiele elespropuseram recebem rank um1. algoritmo A segunda genético classeelitista possuichamado indivíduos SPEA (Strength Pareto Evolutionary Algorithm). O algoritmo mantém uma população de elite e uma população geral. Ao criar novas gerações, o algoritmo reestrutura a

CAP 254 CAP 254. Otimização Combinatória. Professor: Dr. L.A.N. Lorena. Assunto: Metaheurísticas Antonio Augusto Chaves

CAP 254 CAP 254. Otimização Combinatória. Professor: Dr. L.A.N. Lorena. Assunto: Metaheurísticas Antonio Augusto Chaves CAP 254 CAP 254 Otimização Combinatória Professor: Dr. L.A.N. Lorena Assunto: Metaheurísticas Antonio Augusto Chaves Conteúdo C01 Simulated Annealing (20/11/07). C02 Busca Tabu (22/11/07). C03 Colônia

Leia mais

Arquitetura de Rede de Computadores

Arquitetura de Rede de Computadores TCP/IP Roteamento Arquitetura de Rede de Prof. Pedro Neto Aracaju Sergipe - 2011 Ementa da Disciplina 4. Roteamento i. Máscara de Rede ii. Sub-Redes iii. Números Binários e Máscara de Sub-Rede iv. O Roteador

Leia mais

Técnicas para Programação Inteira e Aplicações em Problemas de Roteamento de Veículos 14

Técnicas para Programação Inteira e Aplicações em Problemas de Roteamento de Veículos 14 1 Introdução O termo "roteamento de veículos" está relacionado a um grande conjunto de problemas de fundamental importância para a área de logística de transportes, em especial no que diz respeito ao uso

Leia mais

Roteamento em Redes de Computadores

Roteamento em Redes de Computadores Roteamento em Redes de Computadores José Marcos Câmara Brito INATEL - Instituto Nacional de Telecomunicações INATEL - Instituto Nacional de Telecomunicações 01/08/00 1 Introdução Objetivo Tipos de rede

Leia mais

Inteligência Computacional Aplicada a Engenharia de Software

Inteligência Computacional Aplicada a Engenharia de Software Inteligência Computacional Aplicada a Engenharia de Software Estudo de caso III Prof. Ricardo de Sousa Britto rbritto@ufpi.edu.br Introdução Em alguns ambientes industriais, pode ser necessário priorizar

Leia mais

1 http://www.google.com

1 http://www.google.com 1 Introdução A computação em grade se caracteriza pelo uso de recursos computacionais distribuídos em várias redes. Os diversos nós contribuem com capacidade de processamento, armazenamento de dados ou

Leia mais

Na Figura a seguir apresento um exemplo de uma "mini-tabela" de roteamento:

Na Figura a seguir apresento um exemplo de uma mini-tabela de roteamento: Tutorial de TCP/IP - Parte 6 - Tabelas de Roteamento Por Júlio Cesar Fabris Battisti Introdução Esta é a sexta parte do Tutorial de TCP/IP. Na Parte 1 tratei dos aspectos básicos do protocolo TCP/IP. Na

Leia mais

Projeto e Análise de Algoritmos Projeto de Algoritmos Introdução. Prof. Humberto Brandão humberto@dcc.ufmg.br

Projeto e Análise de Algoritmos Projeto de Algoritmos Introdução. Prof. Humberto Brandão humberto@dcc.ufmg.br Projeto e Análise de Algoritmos Projeto de Algoritmos Introdução Prof. Humberto Brandão humberto@dcc.ufmg.br aula disponível no site: http://www.bcc.unifal-mg.edu.br/~humberto/ Universidade Federal de

Leia mais

A Otimização Colônia de Formigas

A Otimização Colônia de Formigas A Otimização Colônia de Formigas Estéfane G. M. de Lacerda Departamento de Engenharia da Computação e Automação UFRN 22/04/2008 Índice A Inspiração Biológica O Ant System Aplicado ao PCV O Ant System Aplicado

Leia mais

Curso: Redes II (Heterogênea e Convergente) Tema da Aula: Características Roteamento

Curso: Redes II (Heterogênea e Convergente) Tema da Aula: Características Roteamento Curso: Redes II (Heterogênea e Convergente) Tema da Aula: Características Roteamento Professor Rene - UNIP 1 Roteamento Dinâmico Perspectiva e histórico Os protocolos de roteamento dinâmico são usados

Leia mais

Algoritmos e Estrutura de Dados III. Árvores

Algoritmos e Estrutura de Dados III. Árvores Algoritmos e Estrutura de Dados III Árvores Uma das mais importantes classes de estruturas de dados em computação são as árvores. Aproveitando-se de sua organização hierárquica, muitas aplicações são realizadas

Leia mais

4 Segmentação. 4.1. Algoritmo proposto

4 Segmentação. 4.1. Algoritmo proposto 4 Segmentação Este capítulo apresenta primeiramente o algoritmo proposto para a segmentação do áudio em detalhes. Em seguida, são analisadas as inovações apresentadas. É importante mencionar que as mudanças

Leia mais

BCC204 - Teoria dos Grafos

BCC204 - Teoria dos Grafos BCC204 - Teoria dos Grafos Marco Antonio M. Carvalho (baseado nas notas de aula do prof. Haroldo Gambini Santos) Departamento de Computação Instituto de Ciências Exatas e Biológicas Universidade Federal

Leia mais

Governança de TI. ITIL v.2&3. parte 1

Governança de TI. ITIL v.2&3. parte 1 Governança de TI ITIL v.2&3 parte 1 Prof. Luís Fernando Garcia LUIS@GARCIA.PRO.BR ITIL 1 1 ITIL Gerenciamento de Serviços 2 2 Gerenciamento de Serviços Gerenciamento de Serviços 3 3 Gerenciamento de Serviços

Leia mais

Utilização do SOLVER do EXCEL

Utilização do SOLVER do EXCEL Utilização do SOLVER do EXCEL 1 Utilização do SOLVER do EXCEL José Fernando Oliveira DEEC FACULDADE DE ENGENHARIA DA UNIVERSIDADE DO PORTO MAIO 1998 Para ilustrar a utilização do Solver na resolução de

Leia mais

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia. 1 Introdução aos Sistemas de Informação 2002 Aula 4 - Desenvolvimento de software e seus paradigmas Paradigmas de Desenvolvimento de Software Pode-se considerar 3 tipos de paradigmas que norteiam a atividade

Leia mais

Redes de Computadores II INF-3A

Redes de Computadores II INF-3A Redes de Computadores II INF-3A 1 ROTEAMENTO 2 Papel do roteador em uma rede de computadores O Roteador é o responsável por encontrar um caminho entre a rede onde está o computador que enviou os dados

Leia mais

TRANSMISSÃO DE DADOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com

TRANSMISSÃO DE DADOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com - Aula 5-1. A CAMADA DE TRANSPORTE Parte 1 Responsável pela movimentação de dados, de forma eficiente e confiável, entre processos em execução nos equipamentos conectados a uma rede de computadores, independentemente

Leia mais

Entendendo como funciona o NAT

Entendendo como funciona o NAT Entendendo como funciona o NAT Vamos inicialmente entender exatamente qual a função do NAT e em que situações ele é indicado. O NAT surgiu como uma alternativa real para o problema de falta de endereços

Leia mais

4 Avaliação Econômica

4 Avaliação Econômica 4 Avaliação Econômica Este capítulo tem o objetivo de descrever a segunda etapa da metodologia, correspondente a avaliação econômica das entidades de reservas. A avaliação econômica é realizada a partir

Leia mais

Aula 20. Roteamento em Redes de Dados. Eytan Modiano MIT

Aula 20. Roteamento em Redes de Dados. Eytan Modiano MIT Aula 20 Roteamento em Redes de Dados Eytan Modiano MIT 1 Roteamento Deve escolher rotas para vários pares origem, destino (pares O/D) ou para várias sessões. Roteamento datagrama: a rota é escolhida para

Leia mais

Introdução à Computação

Introdução à Computação Aspectos Importantes - Desenvolvimento de Software Motivação A economia de todos países dependem do uso de software. Cada vez mais, o controle dos processos tem sido feito por software. Atualmente, os

Leia mais

Projetos. Universidade Federal do Espírito Santo - UFES. Mestrado em Informática 2004/1. O Projeto. 1. Introdução. 2.

Projetos. Universidade Federal do Espírito Santo - UFES. Mestrado em Informática 2004/1. O Projeto. 1. Introdução. 2. Pg. 1 Universidade Federal do Espírito Santo - UFES Mestrado em Informática 2004/1 Projetos O Projeto O projeto tem um peso maior na sua nota final pois exigirá de você a utilização de diversas informações

Leia mais

5 Mecanismo de seleção de componentes

5 Mecanismo de seleção de componentes Mecanismo de seleção de componentes 50 5 Mecanismo de seleção de componentes O Kaluana Original, apresentado em detalhes no capítulo 3 deste trabalho, é um middleware que facilita a construção de aplicações

Leia mais

MÓDULO 6 INTRODUÇÃO À PROBABILIDADE

MÓDULO 6 INTRODUÇÃO À PROBABILIDADE MÓDULO 6 INTRODUÇÃO À PROBBILIDDE Quando estudamos algum fenômeno através do método estatístico, na maior parte das vezes é preciso estabelecer uma distinção entre o modelo matemático que construímos para

Leia mais

3 Modelo Evolucionário para Sustentabilidade Inteligente

3 Modelo Evolucionário para Sustentabilidade Inteligente 3 Modelo Evolucionário para Sustentabilidade Inteligente Este capítulo introduz um modelo evolucionário para a otimização dos parâmetros de uma construção de modo a minimizar o impacto da mesma sobre os

Leia mais

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software PROCESSO DE DESENVOLVIMENTO DE SOFTWARE Introdução Modelos de Processo de Desenvolvimento de Software Os modelos de processos de desenvolvimento de software surgiram pela necessidade de dar resposta às

Leia mais

Teleprocessamento e Redes (MAB-510) Gabarito da Segunda Lista de Exercícios 01/2010

Teleprocessamento e Redes (MAB-510) Gabarito da Segunda Lista de Exercícios 01/2010 Teleprocessamento e Redes (MAB-510) Gabarito da Segunda Lista de Exercícios 01/2010 Prof. Silvana Rossetto (DCC/IM/UFRJ) 1 13 de julho de 2010 Questões 1. Qual é a diferença fundamental entre um roteador

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I Aritmética Computacional Slide 1 Sumário Unidade Lógica e Aritmética Representação de Números Inteiros Aritmética de Números Inteiros Representação de Números

Leia mais

Feature-Driven Development

Feature-Driven Development FDD Feature-Driven Development Descrição dos Processos Requisitos Concepção e Planejamento Mais forma que conteúdo Desenvolver um Modelo Abrangente Construir a Lista de Features Planejar por

Leia mais

SERVIÇO DE ANÁLISE DE REDES DE TELECOMUNICAÇÕES APLICABILIDADE PARA CALL-CENTERS VISÃO DA EMPRESA

SERVIÇO DE ANÁLISE DE REDES DE TELECOMUNICAÇÕES APLICABILIDADE PARA CALL-CENTERS VISÃO DA EMPRESA SERVIÇO DE ANÁLISE DE REDES DE TELECOMUNICAÇÕES APLICABILIDADE PARA CALL-CENTERS VISÃO DA EMPRESA Muitas organizações terceirizam o transporte das chamadas em seus call-centers, dependendo inteiramente

Leia mais

Tabela de roteamento

Tabela de roteamento Existem duas atividades que são básicas a um roteador. São elas: A determinação das melhores rotas Determinar a melhor rota é definir por qual enlace uma determinada mensagem deve ser enviada para chegar

Leia mais

Tecnologia de Redes de Computadores - aula 5

Tecnologia de Redes de Computadores - aula 5 Tecnologia de Redes de Computadores - aula 5 Prof. Celso Rabelo Centro Universitário da Cidade 1 Objetivo 2 3 4 IGPxEGP Vetor de Distância Estado de Enlace Objetivo Objetivo Apresentar o conceito de. Conceito

Leia mais

Uma Heurística para o Problema de Redução de Padrões de Corte

Uma Heurística para o Problema de Redução de Padrões de Corte Uma Heurística para o Problema de Redução de Padrões de Corte Marcelo Saraiva Limeira INPE/LAC e-mail: marcelo@lac.inpe.br Horacio Hideki Yanasse INPE/LAC e-mail: horacio@lac.inpe.br Resumo Propõe-se um

Leia mais

Complexidade de Algoritmos. Edson Prestes

Complexidade de Algoritmos. Edson Prestes Edson Prestes Idéias básicas Um algoritmo guloso seleciona, a cada passo, o melhor elemento pertencente a entrada. Verifica se ele é viável - vindo a fazer parte da solução ou não. Após uma seqüência de

Leia mais

GARANTIA DA QUALIDADE DE SOFTWARE

GARANTIA DA QUALIDADE DE SOFTWARE GARANTIA DA QUALIDADE DE SOFTWARE Fonte: http://www.testexpert.com.br/?q=node/669 1 GARANTIA DA QUALIDADE DE SOFTWARE Segundo a NBR ISO 9000:2005, qualidade é o grau no qual um conjunto de características

Leia mais

Introdução ao Aplicativo de Programação LEGO MINDSTORMS Education EV3

Introdução ao Aplicativo de Programação LEGO MINDSTORMS Education EV3 Introdução ao Aplicativo de Programação LEGO MINDSTORMS Education EV3 A LEGO Education tem o prazer de trazer até você a edição para tablet do Software LEGO MINDSTORMS Education EV3 - um jeito divertido

Leia mais

Pesquisa com Professores de Escolas e com Alunos da Graduação em Matemática

Pesquisa com Professores de Escolas e com Alunos da Graduação em Matemática Pesquisa com Professores de Escolas e com Alunos da Graduação em Matemática Rene Baltazar Introdução Serão abordados, neste trabalho, significados e características de Professor Pesquisador e as conseqüências,

Leia mais

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi 5 Conclusão Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi permitir que scripts Lua instanciem e usem

Leia mais

Inteligência de Enxame: ACO

Inteligência de Enxame: ACO Inteligência de Enxame: ACO! Otimização colônia de formigas é uma meta-heurística: «baseada em população «inspirada no comportamento forrageiro das formigas.! Muitas espécies de formigas são quase cegas.!

Leia mais

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos MÓDULO 7 Modelo OSI A maioria das redes são organizadas como pilhas ou níveis de camadas, umas sobre as outras, sendo feito com o intuito de reduzir a complexidade do projeto da rede. O objetivo de cada

Leia mais

Um Driver NDIS Para Interceptação de Datagramas IP

Um Driver NDIS Para Interceptação de Datagramas IP Um Driver NDIS Para Interceptação de Datagramas IP Paulo Fernando da Silva psilva@senior.com.br Sérgio Stringari stringari@furb.br Resumo. Este artigo apresenta o desenvolvimento de um driver NDIS 1 para

Leia mais

Utilização de Sistemas Distribuídos em MMOGs (Massive MultiPlayer Online Games) Mauro A. C. Júnior

Utilização de Sistemas Distribuídos em MMOGs (Massive MultiPlayer Online Games) Mauro A. C. Júnior Utilização de Sistemas Distribuídos em MMOGs (Massive MultiPlayer Online Games) Mauro A. C. Júnior Tópicos Abordados Um pouco sobre MMOGs Aplicação e Importância Dificuldades e Soluções Tendência Um pouco

Leia mais

Novell. Novell Teaming 1.0. novdocx (pt-br) 6 April 2007 EXPLORAR O PORTLET BEM-VINDO DESCUBRA SEU CAMINHO USANDO O NOVELL TEAMING NAVIGATOR

Novell. Novell Teaming 1.0. novdocx (pt-br) 6 April 2007 EXPLORAR O PORTLET BEM-VINDO DESCUBRA SEU CAMINHO USANDO O NOVELL TEAMING NAVIGATOR Novell Teaming - Guia de início rápido Novell Teaming 1.0 Julho de 2007 INTRODUÇÃO RÁPIDA www.novell.com Novell Teaming O termo Novell Teaming neste documento se aplica a todas as versões do Novell Teaming,

Leia mais

Protocolo TCP/IP. Neste caso cada computador da rede precisa de, pelo menos, dois parâmetros configurados:

Protocolo TCP/IP. Neste caso cada computador da rede precisa de, pelo menos, dois parâmetros configurados: Protocolo TCP/IP Neste caso cada computador da rede precisa de, pelo menos, dois parâmetros configurados: Número IP Máscara de sub-rede O Número IP é um número no seguinte formato: x.y.z.w Não podem existir

Leia mais

Multiplexador. Permitem que vários equipamentos compartilhem um único canal de comunicação

Multiplexador. Permitem que vários equipamentos compartilhem um único canal de comunicação Multiplexadores Permitem que vários equipamentos compartilhem um único canal de comunicação Transmissor 1 Receptor 1 Transmissor 2 Multiplexador Multiplexador Receptor 2 Transmissor 3 Receptor 3 Economia

Leia mais

FATEC Cruzeiro José da Silva. Ferramenta CRM como estratégia de negócios

FATEC Cruzeiro José da Silva. Ferramenta CRM como estratégia de negócios FATEC Cruzeiro José da Silva Ferramenta CRM como estratégia de negócios Cruzeiro SP 2008 FATEC Cruzeiro José da Silva Ferramenta CRM como estratégia de negócios Projeto de trabalho de formatura como requisito

Leia mais

2 Atualidade de uma base de dados

2 Atualidade de uma base de dados 2 Atualidade de uma base de dados Manter a atualidade de uma base de dados é um problema que pode ser abordado de diferentes maneiras. Cho e Garcia-Molina [CHO] definem esse problema da seguinte forma:

Leia mais

7.Conclusão e Trabalhos Futuros

7.Conclusão e Trabalhos Futuros 7.Conclusão e Trabalhos Futuros 158 7.Conclusão e Trabalhos Futuros 7.1 Conclusões Finais Neste trabalho, foram apresentados novos métodos para aceleração, otimização e gerenciamento do processo de renderização

Leia mais

IA: Problemas de Satisfação de Restrições. Prof. Msc. Ricardo Britto DIE-UFPI rbritto@ufpi.edu.br

IA: Problemas de Satisfação de Restrições. Prof. Msc. Ricardo Britto DIE-UFPI rbritto@ufpi.edu.br IA: Problemas de Satisfação de Restrições Prof. Msc. Ricardo Britto DIE-UFPI rbritto@ufpi.edu.br Introdução Um PSR é definido por um conjunto de variáveis X 1, X 2,..., X n, e por um conjunto de restrições,

Leia mais

Capítulo 3: Implementar a segurança por meio de VLANs

Capítulo 3: Implementar a segurança por meio de VLANs Unisul Sistemas de Informação Redes de Computadores Capítulo 3: Implementar a segurança por meio de VLANs Roteamento e Switching Academia Local Cisco UNISUL Instrutora Ana Lúcia Rodrigues Wiggers Presentation_ID

Leia mais

PROJETO DE REDES www.projetoderedes.com.br

PROJETO DE REDES www.projetoderedes.com.br PROJETO DE REDES www.projetoderedes.com.br Curso de Tecnologia em Redes de Computadores Disciplina: Redes I Fundamentos - 1º Período Professor: José Maurício S. Pinheiro AULA 6: Switching Uma rede corporativa

Leia mais

Introdução a computação móvel. Middlewares para Rede de Sensores sem Fio. Uma avaliação na ótica de Adaptação ao Contexto

Introdução a computação móvel. Middlewares para Rede de Sensores sem Fio. Uma avaliação na ótica de Adaptação ao Contexto Introdução a computação móvel Monografia: Middlewares para Rede de Sensores sem Fio Uma avaliação na ótica de Adaptação ao Contexto Adriano Branco Agenda Objetivo do trabalho O que é uma WSN Middlewares

Leia mais

Árvores Binárias Balanceadas

Árvores Binárias Balanceadas Árvores Binárias Balanceadas Elisa Maria Pivetta Cantarelli Árvores Balanceadas Uma árvore é dita balanceada quando as suas subárvores à esquerda e à direita possuem a mesma altura. Todos os links vazios

Leia mais

Dinâmicas de Acesso ao Espectro

Dinâmicas de Acesso ao Espectro Redes Cognitivas com Oportunidades Dinâmicas de Acesso ao Espectro Defesa de Tese Marcel William Rocha da Silva Orientador: José Ferreira de Rezende Roteiro Introdução e motivação Rádios cognitivos Oportunidades

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Aula 13 Gerência de Memória Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso Sumário

Leia mais

MRP II. Planejamento e Controle da Produção 3 professor Muris Lage Junior

MRP II. Planejamento e Controle da Produção 3 professor Muris Lage Junior MRP II Introdução A lógica de cálculo das necessidades é conhecida há muito tempo Porém só pode ser utilizada na prática em situações mais complexas a partir dos anos 60 A partir de meados da década de

Leia mais

Algoritmos Genéticos

Algoritmos Genéticos UNIVERSIDADE PRESBITERIANA MACKENZIE Laboratório de Computação Natural LCoN I ESCOLA DE COMPUTAÇÃO NATURAL Algoritmos Genéticos Rafael Xavier e Willyan Abilhoa Outubro/2012 www.computacaonatural.com.br

Leia mais

Pesquisa Operacional Programação em Redes

Pesquisa Operacional Programação em Redes Pesquisa Operacional Programação em Redes Profa. Alessandra Martins Coelho outubro/2013 Modelagem em redes: Facilitar a visualização e a compreensão das características do sistema Problema de programação

Leia mais

Análise de Redes Sociais

Análise de Redes Sociais Análise de Redes Sociais Isabela Dantas de Melo 1 Leonardo Augusto Lima Ferreira da Silva 2 Rodrigo Augusto Vasconcelos Sarmento 3 Victor Souza Fernandes 4 Resumo Este trabalho apresenta análises de redes

Leia mais

PESQUISA OPERACIONAL: UMA ABORDAGEM À PROGRAMAÇÃO LINEAR. Rodolfo Cavalcante Pinheiro 1,3 Cleber Giugioli Carrasco 2,3 *

PESQUISA OPERACIONAL: UMA ABORDAGEM À PROGRAMAÇÃO LINEAR. Rodolfo Cavalcante Pinheiro 1,3 Cleber Giugioli Carrasco 2,3 * PESQUISA OPERACIONAL: UMA ABORDAGEM À PROGRAMAÇÃO LINEAR 1 Graduando Rodolfo Cavalcante Pinheiro 1,3 Cleber Giugioli Carrasco 2,3 * 2 Pesquisador - Orientador 3 Curso de Matemática, Unidade Universitária

Leia mais

1 INTRODUÇÃO Internet Engineering Task Force (IETF) Mobile IP

1 INTRODUÇÃO Internet Engineering Task Force (IETF) Mobile IP 1 INTRODUÇÃO Devido ao crescimento da Internet, tanto do ponto de vista do número de usuários como o de serviços oferecidos, e o rápido progresso da tecnologia de comunicação sem fio (wireless), tem se

Leia mais

Notas da Aula 17 - Fundamentos de Sistemas Operacionais

Notas da Aula 17 - Fundamentos de Sistemas Operacionais Notas da Aula 17 - Fundamentos de Sistemas Operacionais 1. Gerenciamento de Memória: Introdução O gerenciamento de memória é provavelmente a tarefa mais complexa de um sistema operacional multiprogramado.

Leia mais

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES 3.1 - IDENTIFICADORES Os objetos que usamos no nosso algoritmo são uma representação simbólica de um valor de dado. Assim, quando executamos a seguinte instrução:

Leia mais

CAP. I ERROS EM CÁLCULO NUMÉRICO

CAP. I ERROS EM CÁLCULO NUMÉRICO CAP. I ERROS EM CÁLCULO NUMÉRICO 0. Introdução Por método numérico entende-se um método para calcular a solução de um problema realizando apenas uma sequência finita de operações aritméticas. A obtenção

Leia mais

Multiprocessamento. Multiprocessadores com memória distribuída (multicomputador)

Multiprocessamento. Multiprocessadores com memória distribuída (multicomputador) Multiprocessamento Multiprocessadores com memória distribuída (multicomputador) Conjunto de processadores, cada qual com sua memória local Processadores se comunicam por troca de mensagens, via rede de

Leia mais

CONTRA CONTROLE DE ACESSOS E MODULARIZADOR DE SISTEMAS

CONTRA CONTROLE DE ACESSOS E MODULARIZADOR DE SISTEMAS MINISTÉRIO DO DESENVOLVIMENTO AGRÁRIO SUBSECRETARIA DE PLANEJAMENTO, ORÇAMENTO E ADMINISTRAÇÃO COORDENAÇÃO-GERAL DE MODERNIZAÇÃO E INFORMÁTICA CONTRA CONTROLE DE ACESSOS E MODULARIZADOR DE SISTEMAS MANUAL

Leia mais

Dadas a base e a altura de um triangulo, determinar sua área.

Dadas a base e a altura de um triangulo, determinar sua área. Disciplina Lógica de Programação Visual Ana Rita Dutra dos Santos Especialista em Novas Tecnologias aplicadas a Educação Mestranda em Informática aplicada a Educação ana.santos@qi.edu.br Conceitos Preliminares

Leia mais

ISO/IEC 12207: Gerência de Configuração

ISO/IEC 12207: Gerência de Configuração ISO/IEC 12207: Gerência de Configuração Durante o processo de desenvolvimento de um software, é produzida uma grande quantidade de itens de informação que podem ser alterados durante o processo Para que

Leia mais

Modelos Matemáticos para Tratamento de Grooming em Redes de Fibra Óptica

Modelos Matemáticos para Tratamento de Grooming em Redes de Fibra Óptica Modelos Matemáticos para Tratamento de Grooming em Redes de Fibra Óptica Rangel Silva Oliveira 1, Geraldo Robson Mateus 1 1 Departamento de Ciência da Computação Universidade Federal de Minas Gerais {rangel,mateus}@dcc.ufmg.br

Leia mais

MANUAL DO USUÁRIO SORE Sistema Online de Reservas de Equipamento. Toledo PR. Versão 2.0 - Atualização 26/01/2009 Depto de TI - FASUL Página 1

MANUAL DO USUÁRIO SORE Sistema Online de Reservas de Equipamento. Toledo PR. Versão 2.0 - Atualização 26/01/2009 Depto de TI - FASUL Página 1 MANUAL DO USUÁRIO SORE Sistema Online de Reservas de Equipamento Toledo PR Página 1 INDICE 1. O QUE É O SORE...3 2. COMO ACESSAR O SORE... 4 2.1. Obtendo um Usuário e Senha... 4 2.2. Acessando o SORE pelo

Leia mais

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho 20 Capítulo 3 Avaliação de Desempenho Este capítulo aborda como medir, informar e documentar aspectos relativos ao desempenho de um computador. Além disso, descreve os principais fatores que influenciam

Leia mais

4 Um Exemplo de Implementação

4 Um Exemplo de Implementação 4 Um Exemplo de Implementação Neste capítulo será discutida uma implementação baseada na arquitetura proposta. Para tanto, será explicado como a arquitetura proposta se casa com as necessidades da aplicação

Leia mais

Gerenciamento de Problemas

Gerenciamento de Problemas Gerenciamento de Problemas O processo de Gerenciamento de Problemas se concentra em encontrar os erros conhecidos da infra-estrutura de TI. Tudo que é realizado neste processo está voltado a: Encontrar

Leia mais

PEN - Processo de Entendimento das Necessidades de Negócio Versão 1.4.0

PEN - Processo de Entendimento das Necessidades de Negócio Versão 1.4.0 PEN - Processo de Entendimento das Necessidades de Negócio Versão 1.4.0 Banco Central do Brasil, 2015 Página 1 de 14 Índice 1. FLUXO DO PEN - PROCESSO DE ENTENDIMENTO DAS NECESSIDADES DE NEGÓCIO... 3 2.

Leia mais

Sistema de Gestão de Freqüência. Manual do Usuário

Sistema de Gestão de Freqüência. Manual do Usuário Serviço Público Federal Universidade Federal da Bahia Centro de Processamento de Dados Divisão de Projetos / SGF Sistema de Gestão de Freqüência Sistema de Gestão de Freqüência Manual do Usuário Descrição

Leia mais

Márcio Leandro Moraes Rodrigues. Frame Relay

Márcio Leandro Moraes Rodrigues. Frame Relay Márcio Leandro Moraes Rodrigues Frame Relay Introdução O frame relay é uma tecnologia de chaveamento baseada em pacotes que foi desenvolvida visando exclusivamente a velocidade. Embora não confiável, principalmente

Leia mais

Complemento IV Introdução aos Algoritmos Genéticos

Complemento IV Introdução aos Algoritmos Genéticos Complemento IV Introdução aos Algoritmos Genéticos Esse documento é parte integrante do material fornecido pela WEB para a 2ª edição do livro Data Mining: Conceitos, técnicas, algoritmos, orientações e

Leia mais

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource www.netsource.com.br Rev: 02

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource www.netsource.com.br Rev: 02 ArpPrintServer Sistema de Gerenciamento de Impressão By Netsource www.netsource.com.br Rev: 02 1 Sumário INTRODUÇÃO... 3 CARACTERÍSTICAS PRINCIPAIS DO SISTEMA... 3 REQUISITOS DE SISTEMA... 4 INSTALAÇÃO

Leia mais

Sumário INTRODUÇÃO... 4 PROTOCOLO ARP...5 ARP - ADDRESS RESOLUTION PROTOCOL...5 FUNCIONAMENTO DO PROTOCOLO ARP...5 CACHE ARP... 6

Sumário INTRODUÇÃO... 4 PROTOCOLO ARP...5 ARP - ADDRESS RESOLUTION PROTOCOL...5 FUNCIONAMENTO DO PROTOCOLO ARP...5 CACHE ARP... 6 IESPLAN Instituto de Ensino Superior Planalto Departamento de Ciência da Computação Curso: Ciência da Computação Disciplina: Engenharia de Software Professor: Marcel Augustus O Protocolo ARP Brasília,

Leia mais

5 Extraindo listas de produtos em sites de comércio eletrônico

5 Extraindo listas de produtos em sites de comércio eletrônico 5 Extraindo listas de produtos em sites de comércio eletrônico Existem diversos trabalhos direcionadas à detecção de listas e tabelas na literatura como (Liu et. al., 2003, Tengli et. al., 2004, Krüpl

Leia mais

Roteiro. Arquitetura. Tipos de Arquitetura. Questionário. Centralizado Descentralizado Hibrido

Roteiro. Arquitetura. Tipos de Arquitetura. Questionário. Centralizado Descentralizado Hibrido Arquitetura Roteiro Arquitetura Tipos de Arquitetura Centralizado Descentralizado Hibrido Questionário 2 Arquitetura Figura 1: Planta baixa de uma casa 3 Arquitetura Engenharia de Software A arquitetura

Leia mais

Estudo comparativo entre dois tradicionais algoritmos de roteamento: vetor distância e estado de enlace.

Estudo comparativo entre dois tradicionais algoritmos de roteamento: vetor distância e estado de enlace. Estudo comparativo entre dois tradicionais algoritmos de roteamento: vetor distância e estado de enlace. Ederson Luis Posselt 1, Geovane Griesang 1 1 Instituto de Informática Universidade de Santa Cruz

Leia mais

Sistemas Distribuídos: Conceitos e Projeto Eleição de Coordenador

Sistemas Distribuídos: Conceitos e Projeto Eleição de Coordenador Sistemas Distribuídos: Conceitos e Projeto Eleição de Coordenador Francisco José da Silva e Silva Laboratório de Sistemas Distribuídos (LSD) Departamento de Informática / UFMA http://www.lsd.deinf.ufma.br

Leia mais

Rede de Computadores II

Rede de Computadores II Rede de Computadores II Slide 1 Roteamento Determinar o melhor caminho a ser tomado da origem até o destino. Se utiliza do endereço de destino para determinar a melhor rota. Roteador default, é o roteador

Leia mais

Roteamento e Comutação

Roteamento e Comutação Roteamento e Comutação Design de Rede Local Design Hierárquico Este design envolve a divisão da rede em camadas discretas. Cada camada fornece funções específicas que definem sua função dentro da rede

Leia mais

Sistemas de Informação I

Sistemas de Informação I + Sistemas de Informação I Dimensões de análise dos SI Ricardo de Sousa Britto rbritto@ufpi.edu.br + Introdução n Os sistemas de informação são combinações das formas de trabalho, informações, pessoas

Leia mais

Lista 2 - Modelos determinísticos

Lista 2 - Modelos determinísticos EA044 - Planejamento e Análise de Sistemas de Produção Lista 2 - Modelos determinísticos Exercício 1 A Companhia Ferroviária do Brasil (CFB) está planejando a alocação de vagões a 5 regiões do país para

Leia mais

Manual SAGe Versão 1.2 (a partir da versão 12.08.01)

Manual SAGe Versão 1.2 (a partir da versão 12.08.01) Manual SAGe Versão 1.2 (a partir da versão 12.08.01) Submissão de Relatórios Científicos Sumário Introdução... 2 Elaboração do Relatório Científico... 3 Submissão do Relatório Científico... 14 Operação

Leia mais

Meta-heurísticas. Métodos Heurísticos José António Oliveira zan@dps.uminho.pt. meta-heurísticas

Meta-heurísticas. Métodos Heurísticos José António Oliveira zan@dps.uminho.pt. meta-heurísticas Meta-heurísticas 105 meta-heurísticas Propriedades e Características: são estratégias que guiam o processo de pesquisa; - o objectivo a atingir é a exploração eficiente do espaço de pesquisa de modo a

Leia mais

Como medir a velocidade da Internet?

Como medir a velocidade da Internet? Link Original: http://www.techtudo.com.br/artigos/noticia/2012/05/como-medir-velocidade-da-suainternet.html Como medir a velocidade da Internet? Pedro Pisa Para o TechTudo O Velocímetro TechTudo é uma

Leia mais

Projeto e Análise de Algoritmos Projeto de Algoritmos Tentativa e Erro. Prof. Humberto Brandão humberto@bcc.unifal-mg.edu.br

Projeto e Análise de Algoritmos Projeto de Algoritmos Tentativa e Erro. Prof. Humberto Brandão humberto@bcc.unifal-mg.edu.br Projeto e Análise de Algoritmos Projeto de Algoritmos Tentativa e Erro Prof. Humberto Brandão humberto@bcc.unifal-mg.edu.br Laboratório de Pesquisa e Desenvolvimento Universidade Federal de Alfenas versão

Leia mais

Prefixo a ser comparado Interface 1 0 10 1 111 2 Senão 3

Prefixo a ser comparado Interface 1 0 10 1 111 2 Senão 3 PEL/FEN Redes de Computadores 015/1 Segunda Lista de Exercícios Prof. Marcelo Gonçalves Rubinstein 1) Descreva os principais serviços providos pela camada rede. ) Cite as diferenças entre datagrama e circuito

Leia mais

Utilizando a ferramenta de criação de aulas

Utilizando a ferramenta de criação de aulas http://portaldoprofessor.mec.gov.br/ 04 Roteiro Utilizando a ferramenta de criação de aulas Ministério da Educação Utilizando a ferramenta de criação de aulas Para criar uma sugestão de aula é necessário

Leia mais

A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande

A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande região de armazenamento formada por bytes ou palavras, cada

Leia mais