Data de entrega: 19 de junho de 2016

Documentos relacionados
Data de entrega: 30 de junho de 2015

Universidade Federal do Espírito Santo DI/PPGEM/PPGI 2 o Trabalho de Algoritmos Numéricos II - Computação Científica 17/1

Universidade Federal do Espírito Santo DI/PPGEM/PPGI 1 o Trabalho de Algoritmos Numéricos II - Computação Científica 17/1

Universidade Federal do Espírito Santo Departamento de Informática 1 o Trabalho de Algoritmos Numéricos I - 17/2 Sistemas Lineares

Universidade Federal do Espírito Santo Departamento de Informática 1 o Trabalho de Algoritmos Numéricos I - 14/2 Sistemas Lineares

Gauss-Seidel para Solução de Sistemas com Matrizes Banda Usando Armazenamento Especial

Precondicionadores baseados na aproximação da inversa da matriz de coeficientes

Cálculo Numérico BCC760

Universidade Federal do Espírito Santo Departamento de Informática 1 o Trabalho de Algoritmos Numéricos - 11/1. Sistemas Lineares

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano

Sistemas Lineares. Métodos Iterativos Estacionários

Universidade Federal do Espírito Santo - UFES

Implementar algoritmos de solução de sistemas esparsos de grande porte utilizando métodos iterativos não-estacionários e armazenamento otimizado.

A = Utilizando ponto flutuante com 2 algarismos significativos, 2 = 0, x (0)

Resolução de sistemas de equações lineares: Método dos Gradientes Conjugados

Cálculo Numérico. Resumo e Exercícios P1

LCAD. LNCC - Programa de Verão Minicurso M16 Estrutura de Dados e Solvers. Lucia Catabriga

INTRODUÇÃO AOS MÉTODOS NUMÉRICOS. Solução de Sistemas Lineares

Brenno Albino Lugon. Algoritmos de reordenamento de matrizes esparsas aplicados a precondicionadores ILU(p)

ALGORITMOS DE REORDENAMENTO DE MATRIZES ESPARSAS APLICADOS A PRECONDICIONADORES ILU(p)

3 o Trabalho de Algoritmos Numéricos II /1 Algoritmos de Avanço no Tempo para problemas Parabólicos Data de entrega:

MAP Segundo exercício programa Resolvendo sistemas esparsos por Gradientes Conjugados

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano

Resolução de Sistemas Lineares. Ana Paula

Utilização de Algoritmos Genéticos para Otimização de Altura de Coluna da Matriz de Rigidez em Perfil no Método dos Elementos Finitos

SISTEMAS LINEARES PROF. EDÉZIO

Análise da Influência de Algoritmos de Reordenação de Matrizes Esparsas no Desempenho do Método CCCG(η)

Sistemas Lineares - Decomposição LU

Métodos iterativos para sistemas lineares.

Métodos Numéricos - Notas de Aula

Sistemas de equações lineares

Data de entrega: 20 de junho de 2014

étodos uméricos SISTEMAS DE EQUAÇÕES LINEARES (Continuação) Prof. Erivelton Geraldo Nepomuceno PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA

Fatoração LU André Luís M. Martinez UTFPR

SME300 - Cálculo Numérico - Turma Elétrica/Automação - Prof. Murilo F. Tomé. Lista 1: Solução Numérica de Sistema Lineares A = MÉTODOS DIRETOS.

MAP Primeiro exercício programa Método de Diferenças Finitas para solução de problemas de contorno de equações diferenciais ordinárias

SME602 - Cálculo Numérico - - Prof. Murilo F. Tomé. Solução Numérica de Sistema Lineares A = MÉTODOS DIRETOS. x y z

EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL: PRIMEIRO BIMESTRE: EDGARD JAMHOUR. QUESTÃO 1: Indique as afirmativas verdadeiras.

Disciplina: Cálculo Numérico IPRJ/UERJ. Sílvia Mara da Costa Campos Victer. Aula 6 - Solução de Sistema de Equações Algébricas

Sistemas de Equações Lineares

Lista de Exercícios. 3x 1 + 2x 2 5x 3 = 0 2x 1 3x 2 + x 3 = 0 x 1 + 4x 2 x 3 = 4. 3x 1 + 4x 2 + 3x 3 = 10 x 1 + 5x 2 x 3 = 7 6x 1 + 3x 2 + 7x 3 = 15

Laboratório de Simulação Matemática. Parte 6 2

UNIVERSIDADE FEDERAL DE PERNAMBUCO Lista de Exercícios / Cálculo Numérico 1ª Unidade

Resolução de sistemas de equações lineares: Método do Gradiente

UNIVERSIDADE FEDERAL DE PERNAMBUCO Resolução Lista / Cálculo Numérico 1ª Unidade

Sistemas Lineares Métodos Diretos

Sistemas de Equações Lineares

Universidade Federal do Rio Grande do Norte. Métodos Computacionais Marcelo Nogueira

Laboratório de Simulação Matemática. Parte 7 2

Modelagem Computacional. Parte 6 2

Um Solucionador Iterativo Para Sistemas-Lineares: Aplicação no Problema do Fluxo de Carga

Cálculo Numérico Algoritmos

Algoritmos Numéricos 2 a edição

Notas de Aula de Cálculo Numérico

SME0300 Cálculo Numérico Aula 11

Agenda do Dia Aula 14 (19/10/15) Sistemas Lineares: Introdução Classificação

Cálculo Numérico Computacional

Introdução Sistemas Lineares

Sistemas Lineares - Métodos Iterativos : Jacobi e Gauss-Seidel. Profa. Cynthia de O. Lage Ferreira Métodos Numéricos e Computacionais I - SME0305

Modelagem Computacional. Parte 7 2

Figura : Monitoria. Monitoria Cálculo Numérico

Resolução de sistemas de equações lineares: Fatorações de matrizes

SaddleOO um programa para o estudo de soluções de sistemas lineares em problemas de ponto de sela

INSTITUTO POLITÉCNICO DE SETÚBAL ESCOLA SUPERIOR DE TECNOLOGIA DEPARTAMENTO DE MATEMÁTICA. Exercícios sobre Sistemas de Equações Lineares.

4.1 Resolvendo o Sistema Linear

Resolução de Sistemas Lineares. Método de Gauss. O algoritimo conhecido como Método de Gauss é desenvolvido a partir de dois ingredientes básicos:

UNIVERSIDADE DE BRASÍLIA FACULDADE DE TECNOLOGIA DEPARTAMENTO DE ENGENHARIA ELÉTRICA

Resolução de Sistemas Lineares. Ana Paula

Métodos Diretos. 1. Resolva os sistemas lineares utilizando o método de substituição retroativa ou progressiva (sucessiva):

Uma breve introdução ao Curso de Computação Científica / Algoritmos Numéricos II

Capítulo 2 - Sistemas de Equações Lineares

Uma equação linear com n variáveis tem a seguinte forma:

Introdução aos Métodos Numéricos

Exercícios de ANÁLISE E SIMULAÇÃO NUMÉRICA

1 Métodos Diretos. UNIVERSIDADE FEDERAL DE OURO PRETO Departamento de Computação Cálculo Numérico - BCC760 Lista 1 - Sistemas Lineares

Silvia Maria Pereira Grandi dos Santos

ANÁLISE NUMÉRICA. Sistemas Lineares (3) 5º P. ENG. DE COMPUTAÇÃO/TELECOMUNICAÇÃO/CONTROLE FACIT / Prof. Rodrigo Baleeiro Silva

Resolução de sistemas de equações lineares: Fatorações de matrizes

Sistemas de equações lineares

Método de Newton-Raphson

Introdução ao Curso de Algoritmos Numéricos II /

Instituto de Matemática - UFRGS - Mat Cálculo Numérico

MAP Exercício programa GPS e o Método de Newton

Resolução de Sistemas Lineares. Ana Paula

Recuperação de Informações por Álgebra Linear Computacional

UNIVERSIDADE FEDERAL DO ABC

Matemática Computacional - Exercícios

étodos uméricos SISTEMAS DE EQUAÇÕES LINEARES (Continuação) Prof. Erivelton Geraldo Nepomuceno PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA

Fundamentos IV. Sistemas Lineares. Gustavo Vinhal. August 18, Departamento de Computação

Introdução aos Métodos Numéricos

Cálculo Numérico. Sistemas lineares Métodos Iterativos: Introdução Método Iterativo de Jacobi-Richardson

Cálculo Numérico. Aula 8 Sistemas de Equações Lineares / Parte /04/2014. Prof. Guilherme Amorim*

Resolução de sistemas de equações lineares: Método de eliminação de Gauss - estratégias de pivotamento

Tema: Método da Eliminação de Gauss

Capítulo III Sistemas de equações

Solução de sistemas de equações lineares

Resolução de sistemas de equações lineares: Fatorações de matrizes

6.Elaboração de algoritmos...13

Introdução aos Métodos Numéricos

Transcrição:

Universidade Federal do Espírito Santo PPGEM/PPGI 2 o Trabalho de Computação Científica - 16/1 Estudo Sobre a Influência do Reordenamento e Precondicionamento aplicados a Sistemas Esparsos de Grande Porte Utilizando Métodos Iterativos Não Estacionários Data de entrega: 19 de junho de 2016 1 Introdução Frequentemente os processos de solução de problemas das mais diversas áreas do conhecimento recaem na necessidade de resolver sistemas lineares. Na maioria das vezes esses sistemas são esparsos e de grande porte. Nesse contexto, o uso de métodos diretos torna-se desaconselhável, por limitações de tempo e memória. Em detrimento, as abordagens iterativas tornam-se mais atraentes. Como estudado, os métodos iterativos são divididos em duas classes: estacionários, como Jacobi, Seidel e SOR, e não estacionários, como Gradientes Conjugados, e LCD. Os métodos iterativos não estacionários são formas mais modernas que utilizam algum tipo de processo de projeção. Ou seja, busca-se uma aproximação da solução do sistema linear a partir de um subespaço. Tais métodos também são conhecidos como métodos livres de matrizes e são mais indicados para trabalhar com os tipos de sistemas já mencionados, pois apresentam facilidades no armazenamento de matrizes esparsas. No processo de resolução de sistemas esparsos de grande porte, a utilização de técnicas de armazenamento é indispensável. Há um número considerável de formatos de armazenamento que podem utilizados, mas a maioria deles emprega a mesma técnica base. Isto é, armazenar todos os elementos não nulos da matriz em uma estrutura que permite o mapeamento das localizações dos elementos não zero na matriz original. Técnicas de compactação como o Compressed Sparse Row (CSR) são largamente utilizadas nessas situações. Embora os métodos iterativos não estacionários tenham sido bem fundamentados teoricamente, todos eles são propensos a sofrer de convergência lenta para os problemas que surgem a partir de aplicações típicas. O sucesso da implementação desses métodos depende do uso de bons precondicionadores, uma vez que estes melhoram o condicionamento da matriz e aceleram a convergência. O tempo de execução dos métodos iterativos não estacionários aplicados a matrizes esparsas pode ser significativamente reduzido quando efetuadas simples trocas de linhas e colunas sobre essas matrizes. Esse processo, chamado de reordenamento, visa reduzir o número de operações com ponto flutuante durante a montagem das matrizes precondicionadoras. Existe uma série de algoritmos que realizam tal reordenamento: Sloan, Reverse Cuthill Mckee (RCM), Espectral, Nested Dissection (ND) e Approximate Minimum Degree (AMD).

2 Resolução de Sistemas Esparsos de Grande Porte Seja Ax = b um sistema linear, onde A é uma matriz esparsa de grande porte. Para resolver tal sistema de forma eficiente utilizando métodos iterativos não estacionários faz-se necessário armazenar a matriz A compactada, efetuar o reordenamento de linhas e colunas adequado além de aplicar o precondicionamento. 2.1 Técnica de Compactação Quando a matriz A dos coeficientes é esparsa, o sistema linear correspondente pode ser resolvido de forma mais eficiente se os elementos nulos não forem armazenados. Uma série de esquemas de armazenamento de matrizes esparsas foram idealizados para alocar memória de forma contígua com o objetivo de armazenar os elementos não nulos da matriz e, talvez, um número limitado de zeros. Isto, naturalmente, requer uma maneira de saber onde os elementos se encaixam no interior da matriz original. Dentre esses esquemas, podem ser citados o Compressed Sparse Row (CSR), Compressed Column Storage (CCS), armazenamento Diagonal e o armazenamento Skyline. A técnica de compactação CSR será utilizada no presente trabalho. Ela substitui a matriz A, por três vetores auxiliares AA, JA e IA. O vetor AA armazena todas as contribuições não nulas da matriz A, o vetor JA armazena a coluna correspondente que cada coeficiente não nulo ocuparia em A e o vetor IA mapea em AA o primeiro elemento não nulo de cada linha de A. 2.2 Reordenamento Como já mencionado, o reordenamento está baseado simplesmente nas trocas de linhas e colunas da matriz esparsa originada pelo sistema linear. Tais abordagens visam reduzir o preenchimento de posições originalmente nulas por elementos não nulos durante o processo de precondicionamento. A criação de cada um desses elementos não nulos é conhecida como fill-in. Quanto maior o número de fill-ins, pior será o desempenho das técnicas de compactação de matrizes, como o CSR por exemplo, uma vez que a estimativa de valores não nulos armazenados na matriz original tende a crescer significativamente. Algoritmos como o ND ou AMD visam simplesmente reduzir o fill-in, enquanto que RCM, Sloan e Espectral tentam aproximar os elementos não-nulos da diagonal principal, o que consequentemente também causa redução do fill-in. Para saber quão próximo os elementos não nulos estão da diagonal principal foram estabelecidas duas métricas: a largura de banda e o envelope. A largura de banda pode ser definida como a maior distância entre o primeiro elemento não-nulo da linha i até a diagonal principal. Já o envelope como a soma das distâncias entre o primeiro elemento não-nulo de cada linha i até a diagonal principal. A Fig. 1 apresenta o exemplo de uma matriz esparsa de ordem 10 com largura de banda igual a 7 e envelope igual a 27. No presente trabalho será utilizado apenas o algoritmo RCM visto que o mesmo passou a ser uma das heurísticas mais utilizadas para o problema de minimização da largura de banda e do envelope devido a boa qualidade de solução, o baixo tempo de execução e a facilidade de implementação.

Figure 1: Largura de banda e envelope de uma matriz exemplo 2.3 Precondicionamento Precondicionar significa transformar o sistema linear original Ax = b em um sistema de solução equivalente que pode ser resolvido com uma menor quantidade de iterações. O primeiro passo ao precondicionar um sistema linear é encontrar uma matriz de precondicionamento M que satisfaça alguns requerimentos mínimos, como por exemplo, melhorar as propriedades espectrais da matriz A. A ideia básica é substituir o sistema Ax = b pelo sistema M 1 Ax = M 1 b. Na prática, em lugar de determinar M 1 explicitamente, a ação do precondicionador é determinada na operação do produto matriz-vetor p = M 1 Av, como segue: primeiro, computa-se z = Av e então a ação de M 1 em p = M 1 z pela resolução do sistema linear Mp = z. De um ponto de vista prático, resolver o sistema precondicionado Mp = z é mais eficiente tanto no consumo de memória quanto na quantidade de operações aritmética envolvidas. Existem inúmeras possibilidades de escolhas da matriz de precondicionamento. No presente trabalho serão utilizadas duas formas para M: M = (L + D)(U + D) sendo A = L + D + U (1) M = LŨ sendo L e Ũ fatores da decomposição ILU(p) (2) O precondicionamento oriundo da matriz M de (1) é denominado precondicionador Seidel e não há a necessidade de armazenamento extra de memória, ou seja, tal armazenamento tem a mesma esparsidade da matriz original A. A fatoração incompleta ILU da matriz original A exige uma decomposição da forma A = LU R onde L e U têm a mesma estrutura de elementos não nulos como as partes inferior e superior de A, respectivamente, e R é o resíduo ou erro da fatoração. Tal fatoração incompleta, conhecida como ILU(0), é de preferência facilmente computável. Em geral, as fatorações ILU(p) foram desenvolvidas considerando um maior número de preenchimentos em L e U, ou seja, um maior número de coeficientes não nulos são introduzidos durante o processo de eliminação em posições nas quais inicialmente eram nulas. 3 Objetivo Realizar um estudo sobre a utilização de métodos iterativos não estacionários no contexto de matrizes esparsas de grande porte. Verificar a influência do ordenamento e o precondicionamento aplicado à essas matrizes.

4 Experimentos Numéricos Para alcançar o objetivo do presente trabalho deve ser feito um relatório detalhado sobre alguns experimentos numéricos. Siga exatamente os passos descritos a seguir para realizar os experimentos. 4.1 Download das Matrizes Faça o download de algumas matrizes esparsas do repositório da University of Florida/Department of Computer and Information Science and Engineering (CISE) 1, conforme descrito na Tab. 1. O formato indicado do arquivo para todas as matrizes é <nome da matriz>.mtx. Matriz Área de Aplicação n nnz bcsstk03 Engenharia Estrutural 112 640 orsirr 1 Simulação de Reservatórios 1030 6858 plat1919 Modelo Oceanográfico 1919 32399 sherman5 Recuperação de Petróleo 3312 20793 FEM 3D thermal1 Problema Térmico 17880 430740 wathen100 Problema randômico 2D/3D 30401 471601 Table 1: Matrizes a serem utilizadas nos experimentos numéricos 4.2 Carregamento das Matrizes no Octave Utilize a função csr.m para carregar os vetores AA, JA e IA e o termo independente b correspondentes ao armazenamento CSR de cada matriz cujo download foi feito no passo anterior. A Fig. 2 ilustra como carregar os vetores correspondentes da matriz bcsstk03. Figure 2: Como carregar os dados de um arquivo.mtx Observe que os coeficientes não nulos estão listados coluna a coluna e não existe informações sobre os coeficientes do vetor de termos independentes b. Dessa forma, para que seja resolvido um sistema linear Ax = b, o vetor b será obtido, considerando que a solução do sistema é conhecida (x = (1, 1,..., 1) t ). Assim, temos: b = Ax = b i = n a ij. (3) i=1 Sendo A a matriz oriunda do arquivo.mtx. 1 http://www.cise.ufl.edu/research/sparse/matrices/

4.3 Reordenamento Através do RCM A permutação responsável pelas trocas de linhas e colunas proposta pelo algoritmo RCM será obtida pela função symrcm.m (essa função é nativa do octave). Entretanto, como essa função necessita da matriz dos coeficientes armazenada em um formato especial, utilizaremos inicialmente a função mmread.m. A matriz resultante dessa última função será utilizada como parâmetro de entrada. A função symrcm.m retornará um vetor de permutações que deverá ser aplicado na função permuta dados.m, a qual retornará os vetores AAperm, JAperm, IAperm e bperm. A Fig. 3 exemplifica como utilizar as funções mencionadas. Figure 3: Utilização das funções symrcm.m e permuta dados.m 4.4 Obtenção da Matriz de Precondicionamento Para obter a matriz de precondicionamento M no formato CSR, as funções ilup.m e seidel.m deverão ser utilizadas. A função ilup.m produzirá os vetores M AA, MJA e MIA para serem aplicados como a matriz precondicionadora M do precondicionador ILU(p) utilizando como entrada os vetores AAperm, JAperm e IAperm e o nível de fill-ins dado pela variável lfilp. Quando for utilizado o processo sem ordenamento basta trabalhar com as variáveis AA, JA e IA. A Fig. 4 ilustra a obtenção da matriz precondicionadora com nível de fill-ins igual a 10. A utilização do precondicionador Seidel é análoga, excetuando-se apenas o uso da variável if ilp. Importante: A função seidel.m deverá ser implementada por você mesmo. Figure 4: Exemplo de obtenção da matriz de precondicionamento no formato CSR 4.5 Resolução dos Sistemas Lineares Uma vez realizadas as etapas de carregamento, ordenamento e a obtenção das matrizes de precondicionamento, o próximo passo é obter a solução do sistema linear permutada. Isso por que os dados do sistema linear original encontram-se armazenados nos vetores AAperm, JAperm, IAperm e bperm. Sendo assim, nesse passo, a função que solucionará o sistema receberá como parâmetros de entrada a matriz dos coeficientes no formato CSR e permutadas AAperm, JAperm e IAperm, a matriz de precondicionamento no formato CSR, MAA, MJA, MIA, o vetor de termos independentes permutado bperm, a tolerância tol, o número máximo de vetores na base de krylov kmax e por fim o número máximo de iterações lmax. Os parâmetros de saída serão a solução do sistema linear permutada xperm e o número total de iterações realizadas pelo método iterativo não estacionário nitertotal. A Fig. 5 ilustra a obtenção da solução permutada de uma sistema utilizando o método

com precondicionamento. Para obter a solução sem precondicionamento por GM- RES utilize a função gmres.m e analogamente a solução sem precondicionamento por LCD pode ser obtida pela função lcd.m. Importante: Em anexo, encontram-se as funções gmres.m e lcd.m que correspondem as soluções sem precondicionamento. Você deverá implementar a ação dos precondicionadores ILUp e de Gauss-Seidel que deverão agir sobre o e o LCD. Figure 5: Exemplo de utilização do com precondicionamento 4.6 Desfazer o Ordenamento da Solução do Sistema Linear Como relatado anteriormente, se os dados da matriz dos coeficientes e termo independente foram reordenados, a solução do sistema linear encontra-se numa ordem diferente da original. Dessa forma, faz-se necessária a aplicação da permutação P erm obtida no passo do ordenamento RCM para desfazer o efeito dessa operação sobre o vetor de solução. A função despermuta x.m deverá ser utilizada com essa finalidade. A Fig. 6 ilustra como utilizar essa função. Figure 6: Exemplo de como despermutar a solução do sistema 4.7 Experimentos Para cada uma das matrizes listadas na Tab. 1, resolva o sistema linear associado utilizando o método e o Método LCD, sem precondicionamento e com precondicionamento ILU(p) e Seidel, com e sem ordenamento RCM. Varie a quantidade de vetores na base de Krylov com valores 20, 50 e 100 (parâmetro k) e o número de níveis fill-in igual a 0 e um valor não nulo da sua escolha no precondicionador ILU(p) (parâmetro p). Anote em uma tabela o número de iterações e o tempo de processamento, em segundos, de cada conjunto de parâmetros. A Tab. 2 ilustra como apresentar os dados da matriz bcsstk03, quando escolhido o método com ordenamento RCM. Lembre-se que para cada matriz haverá quatro tabelas. As outras três tabelas associados a matriz bcsstk03 consistem da utilização do método sem considerar o ordenamento RCM e do método LCD com e sem ordenamento. Como a Tab. 1 apresenta seis matrizes do repositório o relatório conterá 24 tabelas. Para uma melhor compreensão do estudo da convergência, escolha para cada matriz da Tab. 1 o valor de k e p que resultaram em um menor tempo de processamento utilizando o método e a analogamente uma escolha para o método LCD. Para cada configuração escolhida, faça um gráfico do número de iteração em função da logaritmo do resíduo da solução (iter log( r )). O primeiro gráfico deverá conter uma comparação entre o método precondicionado com ambos os precondicionadores e sem precondicionamento. O segundo gráfico manterá

(s/ Precond.) + ILU(0) + ILU(p>0) + Gauss-Seidel k Iter Tempo Iter. Tempo Iter. Tempo Iter. Tempo 20 50 100 Table 2: Matriz bcsstk03 : Utilizando o método com ordenamento RCM as mesmas características, contudo será apresentado o método LCD. Ao todo serão construídos 12 gráficos, sendo 02 para cada matriz, ou seja, o melhor caso do método e o melhor caso do método LCD. A Fig. 7 ilustra o gráfico do resíduo da solução em função do número de iterações comprando o método com precondicionador ILU(10), Gauss-Seidel e sem precondicionador. 15 10 +ILP(10) +Gauss-Seidel log( r ) 5 0-5 -10-15 0 20 40 60 80 100 Iteracoes Figure 7: Estudo de convergência: Um exemplo com o 5 Estrutura do relatório O relatório deve ser escrito observando as normas do padrão ABNT e salvo em pdf. A divisão do relatório deve ser de acordo com as seguintes seções: Introdução: apresentar a estrutura do trabalho e os objetivos Referencial Teórico um pequeno resumo considerando todos os métodos e técnicas abordados. Experimentos Numéricos: onde serão apresentadas as 24 tabelas, os 12 gráficos bem como seus respectivos comentários. É imperativo descrever nessa seção qual foi o software e hardware utilizado. Conclusão: onde serão discutidos os resultados obtidos. 6 Considerações gerais sobre o trabalho O relatório deve ser enviado por e-mail para luciac@inf.ufes.br até o dia 19/06/2016.

O assunto do e-mail deve ser CC161:TRAB2:<nome1><nome2>, contendo em anexo, um arquivo do tipo TRAB2<nome1><nome2>.zip. Neste caso <nome1><nome2> deve conter o nome e último sobrenome (por exemplo, CC161:TRAB2:LuciaCatabrigaRamoniSezano) Qualquer código que você tenha implementado deve ser anexado ao arquivo.zip descrito no item anterior. Caso o arquivo seja enviado múltiplas vezes, apenas a última versão enviada será considerada.