LUIZ HENRIQUE ROWAN PEIXOTO SÍNTESE DE CIRCUITOS ELETRÔNICOS ANALÓGICOS/DIGITAIS POR COMPUTAÇÃO EVOLUTIVA EM PLATAFORMA PARALELA

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

Download "LUIZ HENRIQUE ROWAN PEIXOTO SÍNTESE DE CIRCUITOS ELETRÔNICOS ANALÓGICOS/DIGITAIS POR COMPUTAÇÃO EVOLUTIVA EM PLATAFORMA PARALELA"

Transcrição

1 LUIZ HENRIQUE ROWAN PEIXOTO SÍNTESE DE CIRCUITOS ELETRÔNICOS ANALÓGICOS/DIGITAIS POR COMPUTAÇÃO EVOLUTIVA EM PLATAFORMA PARALELA LAVRAS - MG 2011

2 LUIZ HENRIQUE ROWAN PEIXOTO SÍNTESE DE CIRCUITOS ELETRÔNICOS ANALÓGICOS/DIGITAIS POR COMPUTAÇÃO EVOLUTIVA EM PLATAFORMA PARALELA Monografia apresentada ao Departamento de Ciência da Computação da Universidade Federal de Lavras como parte das exigências para a obtenção do título de Bacharel em Ciência da Computação. Orientador Prof.Dr. Wilian Soares Lacerda LAVRAS - MG 2011

3

4 Dedico esse trabalho ao Grande Arquiteto do Universo por trabalhar na existência de tudo que existe, inclusive este trabalho.

5 AGRADECIMENTOS A Deus primeiramente, por me fazer uma pessoa saudável e determinada. A minha mãe Nádia, a minha vó Doro, meu pai Nelson, minha irmã Yara e a todos os meus queridos familiares por todo o apoio e amor em todos os momentos desta conquista. Ao professor e orientador Wilian S. Lacerda, que me ensinou e me incentivou como um verdadeiro amigo. A todos os mestres que participaram agregando conhecimentos e sabedoria à minha formação. A todos os colegas de convivência que passaram pela minha vida durante os 4 anos de estudos em Lavras. Ao programa de bolsas PIBIC/CNPQ que possibilitou financeiramente todo o meu trabalho de iniciação científica e de conclusão de curso. A Lucilia R. Leite pelo amor, companheirismo e todas as virtudes mais aplicadas em nossos momentos. Enfim, agradeço a todos que participaram de alguma forma desta conquista.

6 RESUMO O presente trabalho propõe a utilização de Computação Evolutiva aplicada na síntese de blocos de circuitos analógicos e também na síntese de circuitos digitais na forma normal disjuntiva. Devido ao custo computacional empregado na técnica, as plataformas de síntese analógica e digital foram implementadas utilizando programação paralela para acelerar o processo. Análises de desempenho são feitas para comprovar que a plataforma analógica implementada utilizando MPI e a plataforma digital utilizando CUDA obtiveram ganho considerável de desempenho. Realizou-se estudos de caso com detectores de nível de tensão e portas lógicas nas sínteses analógicas, e nas sínteses digitais foi feito um estudo de caso com circuitos comparadores digitais. Foi possível comprovar que circuitos sintetizados por Computação Evolutiva são diferentes dos projetados por técnicas tradicionais, o que representa novas metodologias de projeto de circuitos eletrônicos. Palavras-chave: Computação Evolutiva; Programação Paralela; Circuitos Analógicos; Circuitos Digitais.

7 ABSTRACT This paper proposes the use of Evolutionary Computing applied in the synthesis of analog circuit blocks and also in the synthesis of digital circuits at disjunctive normal form. Because of the computational cost at technique employed, the plataforms of analog and digital synthesis were implemented using parallel programming to speed up the process. Performance reviews are done to prove that the analogue plataform implemented using MPI and digital plataform using CUDA had considerable gain in performance. Case studies were made with voltage level detectors and logic gates in synthesize analog, case study of digital synthesis was done with digital comparators circuits. It was possible to confirm that circuits synthesized by Evolutionary Computation are different from those projected by traditional techniques, which represents new design methodologies for electronic circuits. Keywords: Evolutionary Computing; Parallel Programming; Analog Circuits; Digital Circuits.

8 LISTA DE FIGURAS Figura 1 Fluxograma do Algoritmo Genético Simples Figura 2 Mapeamento de um gene em resistor (Fonte:(PEIXOTO; LACERDA; TOLEDO, 2010)) Figura 3 Representação em nível de componentes (Fonte:(ZEBULUM, 1999)) Figura 4 Representação em nível de portas lógicas (Fonte:(ZEBULUM; PACHECO; VELLASCO, 2002)) Figura 5 Representação a nível de funções booleanas (Adaptado de:(zebulum; PACHECO; VELLASCO, 2002)) Figura 6 Exemplo da representação em blocos multiplexadores (Fonte:(ZEBULUM; PACHECO; VELLASCO, 2002)) Figura 7 Bloco de threads (Fonte:(NVIDIA, 2010b)) Figura 8 Exemplo de utilização de kernel (Fonte: (NVIDIA, 2010b)) Figura 9 Escalonamento dos blocos nos núcleos (Fonte:(NVIDIA, 2010b)) Figura 10 Algoritmo genético mestre-escravo global com uma única população Figura 11 Modelo de difusão com uma topologia linear 2D Figura 12 Modelo de ilha com topologia em anel sem controlador central Figura 13 Modelo de ilha com topologia em anel com controlador central Figura 14 Modelo mestre-escravo dentro dos nós e modelo de ilha interligando os nós Figura 15 Modelo mestre-escravo dentro dos nós e modelo de ilha interligando os nós Figura 16 Mapeamento genótipo-fenótipo no indivíduo Figura 17 Cruzamento em dois pontos Figura 18 Operador de Mutação Figura 19 Fluxograma da execução Figura 20 Faixas de divisão da População Figura 21 Algoritmo evolutivo mestre-escravo com população única Figura 22 Fluxograma da execução paralelizada Figura 23 Teste de desempenho em Multinúcleo Figura 24 Teste de desempenho em cluster de computadores Figura 25 Evolução do fitness na síntese de detector de nível de tensão

9 Figura 26 Melhor circuito na geração e circuito minimizado na geração Figura 27 Comportamento do detector de nível de tensão. Entrada - sinal triangular, Saída - sinal quadrático Figura 28 Evolução do Fitness na síntese da porta XOR Figura 29 Circuito XOR da geração 304 e minimizado da geração Figura 30 Comportamento da porta XOR em função da entrada em código gray Figura 31 Expressão booleana e circuito digital correspondente Figura 32 Populações em árvore binária e ternária (Fonte: (ROSA, 2009)) Figura 33 Pseudo código para o algoritmo genético multi-populacional (Fonte:(TOLEDO et al., 2009)) Figura 34 Exemplo de migração entre 3 populações (Fonte: (ROSA, 2009)) Figura 35 Algoritmo de crossover uniforme Figura 36 Pseudo-código avaliação de indivíduos Figura 37 Pseudocódigo do algoritmo de cálculo de erros implementado para GPU

10 LISTA DE TABELAS Tabela 1 Exemplo de domínios de componentes eletrônicos Tabela 2 Desempenho das implementações Seq_CPU, Mult_CPU e Seq_c_GPU Tabela 3 Instância minimizada pelo Espresso Tabela 4 Parâmetros evolutivos Tabela 5 Resultados dos experimentos Tabela 6 Circuito sintetizado pelo algoritmo genético... 81

11 LISTA DE SIGLAS E ACRÔNIMOS AG - Algoritmo Genético API - Application Programming Interface CAD - Computer-Aided Design CMOS - Complementary Metal Oxide Semiconductor CORBA - Common Object Request Broker Architecture CPU - Central Processing Unit CUDA - Compute Unified Device Architecture DNA - Deoxyribonucleic Acid EHW - Evolvable Hardware FFT - Fast Fourier Transform FPGA - Field-Programmable Gate Array GPGPU - General Purpose Graphics Processing Unit GPU - Graphics Processing Unit MinGW - Minimalistic GNU for Windows MPI - Message Parsing Interface Mult_CPU - Multithreading na CPU OLG - Oscillating Length Genotypes OpenCL - Open Computing Language OpenMP - Open Multi-Processing PAMA - Programmable Analog Multiplexer Array RAM - Random Access Memory RMI - Remote Method Invocation RNA - Ribonucleic Acid Seq_CPU - Sequencial na CPU Seq_c_GPU - Sequencial na CPU com GPU SGA - Simple Genetic Algorithm SPICE - Simulated Program with Integrated Circuits Emphasis ULA - Unidade Lógica e Aritmética VLSI - Very-Large-Scale Integration XOR - Exclusive Or

12 SUMÁRIO 1 INTRODUÇÃO Contextualização Objetivos Estrutura do Trabalho REFERENCIAL TEÓRICO Algoritmos Genéticos Eletrônica Evolutiva Estado da Arte Plataforma Evolutiva Eletrônica Analógica Eletrônica Digital Plataformas de Programação Paralela Message Parsing Interface (MPI) Compute Unified Device Architecture (CUDA) Linguagem de Programação C Algoritmos Genéticos em Programação Paralela SÍNTESE DE CIRCUITOS ANALÓGICOS Metodologia de Representação em Eletrônica Analógica Genes Indivíduos Metodologia Evolutiva em Eletrônica Analógica Cruzamento Mutação Operador de Renovação Operador de Minimização Utilização de Componentes Comerciais Evolução da População Programação Paralela Aplicada no Projeto de Circuitos Analógicos Padrão MPI Modelo Mestre-Escravo O Sistema Evolutivo Paralelo Desempenho do Sistema Paralelizado Síntese de Detector de Nível de Tensão... 53

13 3.4.1 Procedimentos e Avaliação Resultados Síntese de Portas Lógicas Procedimentos e Avaliação Resultados Conclusão Propostas de Continuidade SÍNTESE DE CIRCUITOS DIGITAIS Metodologia de Representação em Eletrônica Digital Representação em Nível de Funções Genes Indivíduos População Estruturada em Hierarquia Metodologia Evolutiva em Eletrônica Digital Algoritmo Evolutivo Multi-Populacional Cruzamento e Mutação Implementação Utilizando CUDA Algoritmo Paralelo de Cálculo de Fitness Resultados e Discussão Desempenho Utilizando CUDA Síntese de Comparador Digital de 8 Entradas Conclusão Propostas de Continuidade CONCLUSÃO GERAL REFERÊNCIAS BIBLIOGRÁFICAS... 86

14 13 1 INTRODUÇÃO Neste capítulo é apresentado uma pequena contextualização do presente trabalho e seus objetivos, além de descrever toda a estrutura do mesmo. 1.1 Contextualização Nos últimos anos, abriu-se uma nova possibilidade na aplicação de conceitos biológicos à tecnologia: a construção de dispositivos capazes de evoluir, definidos como máquinas darwinianas ou, mais comumente, Hardware Evolutivo (De Garis, 1993). A implementação de tais dispositivos envolve conceitos e técnicas de Computação Evolucionária, vida artificial e eletrônica de circuitos reconfiguráveis, voltados para a construção de sistemas autônomos, auto-adaptáveis e tolerantes a falhas. O grande incremento dos recursos computacionais e, mais recentemente, a disponibilização de uma nova geração de dispositivos lógico-programáveis mais robustos a alterações, permitiram um avanço significativo do Hardware Evolutivo nos últimos anos. Com este avanço as técnicas de Hardware Evolutivo vem sendo construídas ao longo dos anos devido principalmente a sua aplicabilidade na síntese e projeto de circuitos eletrônicos. Um conceito fundamental instituído por De Garis (1993) diz que o conceito de Hardware Evolutivo deve satisfazer ao menos duas condições para justificar sua utilidade: Os circuitos que evoluem devem ser, simultaneamente, funcionais e muito complexos para a compreensão humana, caso contrário poderiam ser projetados através das técnicas tradicionais;

15 14 Os circuitos devem evoluir mais rápido que a evolução simulada em software, caso contrário seria mais fácil realizar apenas simulações. Os Algoritmos Genéticos (AG) têm ganhado popularidade por serem bem eficientes. Como a busca pela solução usa regras de probabilidade, a chance de se encontrar uma solução global é grande. Também não é necessário conhecer exatamente o comportamento do problema, o que representa uma grande vantagem, por exemplo, com relação aos métodos Determinísticos. A idéia base para os Algoritmos Evolucionários, no qual se enquadram os AGs, é a Teoria da Evolução da Espécies, elaborada por Charles Darwin. Segundo essa teoria, os seres vivos sofrem uma seleção natural, provocada pelo ambiente onde estão inseridos. Os indivíduos mais aptos conseguem sobreviver e reproduzir, passando para as próximas gerações suas características. Esse é o princípio da Evolução. Cada vez mais os AGs são aplicados em problemas complexos de custo computacional elevado. Devido a isto, cada vez mais é difundido o conceito de algoritmos genéticos paralelos que normalmente chegam a um resultado satisfatório em tempo reduzido em relação ao sequencial. Para implementação destes algoritmos normalmente é utilizado processamento multinúcleo, processamento em cluster de computadores e também mais recentemente processamento em placas gráficas de propósito geral conhecidas como GPGPU (General-purpose computing on graphics processing units).

16 Objetivos O objetivo principal deste trabalho é investigar métodos de geração de circuitos eletrônicos utilizando a técnica de evolução do hardware implementado na forma de simulação em uma plataforma de processamento paralelo/distribuído de alto desempenho utilizando cluster de processadores, processamento multinúcleo ou GPGPU. Caso a síntese tenha como objetivo circuitos de natureza digital, estes circuitos devem atuar como circuitos combinacionais digitais. Utilizando como entrada uma tabela verdade, o algoritmo evolutivo deve encontrar um circuito que consiga atender todas as suas linhas e também possua o menor tamanho possível. Quando a síntese tiver como objetivo circuitos de natureza analógica, estes devem ter um comportamento de bloco possuindo uma ou mais entradas de tensão, corrente ou frequência, onde deve ter na saída um resultado relativo à entrada. O presente projeto de pesquisa visa atender também aos seguintes objetivos secundários: Aplicar Hardware Evolutivo na solução de problemas reais. Alguns problemas podem ser mais adequados para serem solucionados por esta técnica. Implementação das técnicas de evolução de circuitos em software (simulação). Desta forma a plataforma evolutiva irá utilizar os softwares de CAD (Computer-aided Design) para projetos de circuitos eletrônicos existentes, em conjunto com as técnicas de Computação Evolutiva.

17 16 Implementação das técnicas de evolução de circuitos eletrônicos analógicos utilizando processamento paralelo multinúcleo ou em cluster de computadores com a finalidade de reduzir o tempo de síntese destes circuitos. Implementação de partes do AG em GPGPU para reduzir o tempo de síntese de circuitos digitais. 1.3 Estrutura do Trabalho Capítulo 1: Fornece uma introdução dos temas estudados, contextualizando o assunto de acordo com os objetivos do presente trabalho. Capítulo 2: Neste capítulo é feito uma compilação dos tópicos teóricos necessários para entendimento das teorias, metodologias e tecnologias abordadas nos capítulos posteriores, utilizando trabalhos de pesquisa, acadêmicos e manuais referentes aos assuntos. Capítulo 3: Neste capítulo são apresentados conceitos, metodologias, tecnologias, resultados, discussões e conclusões referentes a síntese de circuitos analógicos utilizando algoritmos evolutivos implementados em plataforma de computação paralela. Também são propostos alguns operadores e técnicas não encontrados na literatura, que ajudam a resolver problemas encontrados em experimentos. Capítulo 4: Neste capítulo são apresentados conceitos, metodologias, tecnologias, resultados, discussões e conclusões referentes a síntese de circuitos digitais na forma funcional, utilizando algoritmos evolutivos multi-populacionais, implementados em plataforma de computação paralela utilizando GPGPU. Capítulo 5: Neste capítulo é apresentada a consideração final do trabalho.

18 17 2 REFERENCIAL TEÓRICO Este capítulo apresenta uma revisão literária relacionada a algoritmos genéticos, eletrônica evolutiva aplicada em eletrônica analógica e digital, linguagem de programação C++, algumas plataformas paralelas e técnicas de programação paralela e distribuída em Computação Evolutiva. 2.1 Algoritmos Genéticos Segundo Cantu-Paz (1998), algoritmos genéticos são algoritmos de busca estocástica baseados nos princípios de seleção natural e recombinação. Tais algoritmos buscam encontrar uma solução ótima para o problema tratado manipulando uma população de soluções candidatas. A população é avaliada e as melhores soluções são selecionadas para reproduzir e formar a próxima geração. Acima de um número de gerações, boas características dominam a população, resultando em um aumento na qualidade das soluções. Um indivíduo geralmente é uma codificação (representação) de uma possível solução para o problema tratado. Os indivíduos são classificados de acordo com uma medida de desempenho. Essa medida é determinada pela função de avaliação ou fitness. Diferentes critérios de seleção podem ser utilizados para se determinar os indivíduos que participarão do processo reprodutivo ou que integrarão a próxima geração. Em geral, dois tipos de operadores genéticos são utilizados: cruzamento e mutação. O operador cruzamento escolhe dois indivíduos (pais) aleatórios cujas informações codificadas serão combinadas gerando novos indivíduos (filhos). O operador de mutação busca restaurar a diversidade que pode ter sido perdida pela aplicação repetida da seleção e do

19 18 cruzamento. Para isso, a mutação modifica informações codificadas em um indivíduo, visando alterar um padrão estabelecido. O que foi informalmente descrito acima é o funcionamento básico de um Algoritmo Genético (fluxograma na Figura 1) proposto por Holland e popularizado por Goldberg, e é chamado de Algoritmo Genético Simples (SGA, do inglês Simple Genetic Algorithm). Este modelo normalmente serve apenas como base teórica para iniciantes em Computação Evolutiva, sendo muito bem apresentado em Linden (2006). Porém, SGA não costuma ser aplicado em problemas reais, porque estes normalmente exigem outros tipos de representação dos indivíduos e modelagem diferenciada a nível populacional como utilizada em Toledo et al. (2009), que representa a população em árvore onde os indivíduos mais bem conceituados estão mais próximos da raiz. Além das representações diferenciadas, dependendo do problema em que se aplica AGs, novos operadores, além dos clássicos são necessários para aperfeiçoar a busca como em Lacerda, Silva e Toledo (2010), que sugere um novo operador, denominado Epidemia, que elimina todos os indivíduos da população exceto a melhor solução e com isso combate a convergência prematura quando ocorre estagnação da população. Existem diversos critérios de parada que podem ser adotados para um algoritmo genético. Pode-se parar o algoritmo genético após um número pré-determinado de gerações ou pela função de avaliação. Uma alternativa é parar quando a qualidade média da população não melhora após algum número de gerações. Uma terceira alternativa é parar o algoritmo genético quando todos os indivíduos forem idênticos (isto ocorre quando não é utilizada a mutação).

20 19 Figura 1: Fluxograma do Algoritmo Genético Simples. Um algoritmo evolutivo depende da criatividade e da experiência de seu utilizador, sendo muito importante executar vários experimentos para determinar de forma empírica qual o melhor modelo e os melhores parâmetros do AG. 2.2 Eletrônica Evolutiva De acordo com Peixoto, Lacerda e Toledo (2010), o uso de Computação Evolutiva aplicada à síntese de circuitos eletrônicos, é denominada Eletrônica Evolutiva, e de acordo com Zebulum, Pacheco e Vellasco (2002), esta ferramenta

21 20 tem como maior objetivo oferecer uma metodologia para ferramenta de Computeraided Design (CAD) de circuitos eletrônicos. Para que a utilização de Eletrônica Evolutiva seja viável, é necessário satisfazer ao menos duas condições. Uma é que os circuitos que evoluem sejam, simultaneamente, funcionais e muito complexos para a compreensão humana, caso contrário poderiam ser projetados através das técnicas tradicionais. A outra condição é que os circuitos evoluam rapidamente, mais rápido do que a evolução simulada em software, caso contrário seria mais fácil e prático realizar apenas simulações (De Garis, 1993). De Garis (1993) definiu classificações dentro da área de acordo com as seguintes propriedades: tipo de projeto, natureza de projeto e plataforma evolutiva. Quanto à natureza do projeto, as aplicações podem ser classificadas em analógica e digital; quanto à plataforma evolutiva, uma aplicação pode ser classificada em extrínseca e intrínseca. Aplicações extrínsecas são aquelas em que os circuitos são avaliados através de simuladores; por outro lado, nas aplicações intrínsecas, a avaliação é realizada com base no comportamento dos indivíduos ao serem carregados em circuitos integrados programáveis (ZEBULUM, 1999). Por último, de acordo com o tipo de projeto, este se divide em otimização e síntese de circuitos Estado da Arte Louis e Rawlins (1991) introduziu a idéia de algoritmos evolucionários como ferramenta para realizar projeto de estrutura de circuitos digitais, quando algoritmos evolucionários foram utilizados para interligar portas digitais que poderiam resolver um problema específico, tal como função de paridade. De Garis (1993) introduziu o conceito de Hardware Evolutivo. Higuchi et al. (1996) evoluíram

22 21 circuitos digitais para reconhecimento de padrões. Thompson (1996) evoluiu intrínsecamente um circuito em uma FPGA (Field-programmable gate array - hardware reconfigurável). Estes são alguns dos marcos importantes desta nova área, que desde então tem crescido consideravelmente Plataforma Evolutiva A taxonomia em Eletrônica Evolucionária que se refere ao uso de simuladores de circuitos ou chips reconfiguráveis como plataformas para o processo de busca, pode ser descrita como: Evolução extrínseca: evolução realizada por simulação e então a melhor solução é implementada em hardware reconfigurável, isto é, o hardware é configurado apenas uma vez. Esta metodologia gera apenas o modelo de circuito a ser implementado. Evolução intrínseca: evolução diretamente em hardware e em tempo real, isto é, todo cromossomo será usado para reconfigurar o hardware. O EHW (Evolvable hardware)será reconfigurado o mesmo número de vezes quanto o tamanho da população em cada geração (YAO; HIGUCHI, 1999). O termo Hardware Evolutivo é usado geralmente em aplicações envolvendo evolução em chips reconfiguráveis (ZHANG; SMITH; TYRRELL, 2004). De acordo com o nível da representação do cromossomo, a abordagem de projeto para EHW pode ser classificada em direto e indireto. A abordagem direta para EHW codifica bits da arquitetura de circuitos como cromossomos, o qual especifica a conectividade e funções de componentes diferentes de hardware (geralmente

23 22 a nível de porta) do circuito. Em contraste, a abordagem indireta não envolve bits de arquitetura diretamente. Ele usa uma representação de alto nível, tal como árvores ou gramática como cromossomos. Estas árvores ou gramáticas são então usadas para gerar circuitos (YAO; HIGUCHI, 1999) Eletrônica Analógica O projeto de circuitos analógicos é mais complexo do que projetos de natureza digital e depende mais da experiência e intuição do projetista (ZEBULUM; PACHECO; VELLASCO, 2002). Assim, a complexidade desta classe de projetos caracteriza uma motivação econômica para a automação nesta área que é carente de projetistas experientes. Em uma das primeiras aplicações divulgadas, Kruiskamp e Leenaerts (1995) apresentaram uma ferramenta de síntese e otimização de amplificadores operacionais CMOS (Complementary Metal Oxide Semiconductor) utilizando algoritmos genéticos. A partir disto, trabalhos como Koza et al. (1998) e Zebulum (1999), desenvolveram uma série de metodologias para síntese de circuitos analógicos. Os principais circuitos sintetizados desde meados da década de 90 são: amplificadores operacionais, filtros passivos, circuitos de controle, circuitos multiplicadores de tensão (PEIXOTO; LACERDA; TOLEDO, 2010), portas lógicas digitais, sintonizadores de radio frequência e outros. Em eletrônica analógica a utilização de plataforma intrínsica é pouco utilizada devido ao custo de aquisição de circuitos reconfiguráveis analógicos como a PAMA (Programmable Analog Multiplexer Array), o custo dos equipamentos de

24 23 medição envolvidos no projeto e também a complexidade das interfaces entre PC e PAMA (Conversores: analógico- digital e digital-analógico). Por estes motivos a utilização em eletrônica analógica normalmente é feita utilizando simuladores de circuitos eletrônicos baseados no SPICE de Berkley. Existem diversos simuladores de circuitos eletrônicos como por exemplo: LTSpice (LINEARTECHNOLOGY, 2011), SpiceOpus (SPICEOPUS, 2011), Ngspice (NGSPICE, 2011) e outros. A representação em eletrônica analógica é feita em nível de componentes eletrônicos, onde cada gene do cromossomo deve mapear um componente do circuito eletrônico como capacitor, indutor, resistor transistor e outros. Este mapeamento significa descrever a estrutura de dados do gene em seu componente eletrônico no arquivo de descrição de circuitos. Sendo que os parâmetros como pontos de conexão e tipos de componentes devem ser definidos pelo usuário ao início da execução da evolução (Figuras 2 e 3). Figura 2: Mapeamento de um gene em resistor (Fonte:(PEIXOTO; LACERDA; TOLEDO, 2010)). A função de avaliação em aplicações analógicas deve envolver parâmetros físicos como frequência, corrente, tensão, quantidade de componentes, custo dos componentes eletrônicos, entre outros. Sendo que o utilizador da técnica deve ter

25 24 Figura 3: Representação em nível de componentes (Fonte:(ZEBULUM, 1999)). em mente o que se deseja de um circuito analógico para estipular os parâmetros na função de fitness e as análises que serão feitas para obter estes parâmetros Eletrônica Digital A primeira proposta de usar algoritmos evolutivos para síntese de circuitos digitais foi de Louis e Rawlins (1991), e existem algumas razões importantes que demonstram a viabilidade deste tipo de aplicação: circuitos digitais têm maior fidelidade nas simulações que circuitos analógicos e são amplamente mais utilizados (ZEBULUM; PACHECO; VELLASCO, 2002); a evolução de circuitos digitais reconfiguráveis como FPGA s possibilitou que em 1996 fosse realizado o primeiro experimento intrínseco (THOMPSON, 1996); a partir deste, vários pesquisadores em várias partes do mundo realizaram experimentos de sínteses intrínsecas como Koza, Zebulum, Stoica, Higuchi, Yao, Tyrrel, entre outros.

26 25 De acordo com (DELAI, 2008), sistemas digitais podem ser classificados em quatro níveis de abstração: nível de componentes, como por exemplo, transistores e resistores, nível de portas lógicas, equações booleanas, utilizando, por exemplo, a forma normal disjuntiva ou soma de produtos e em nível arquitetural utilizando ULA s (Unidade lógica e aritmética), multiplexadores, memórias e outros. A representação dos circuitos em nível de componentes é idêntico ao mostrado na Figura 3, e normalmente este tipo de representação só é utilizada em eletrônica digital para síntese e otimização de portas lógicas. A representação em nível de portas lógicas é considerada de baixo nível de abstração, pois cada gene é responsável por mapear uma porta lógica e suas conexões dentro do circuito (Figura 4). Sua aplicação é interessante quando a síntese é direcionada para um circuito sequencial que pode exigir realimentação de sinais, o que é inviável dentro da representação por funções booleanas. Figura 4: Representação em nível de portas lógicas (Fonte:(ZEBULUM; PACHECO; VELLASCO, 2002)).

27 26 A representação por funções booleanas é amplamente utilizada neste tipo de projeto porque traz para a aplicação um alto nível de abstração, o que é interessante dentro do contexto de Computação Evolutiva. Além disso, esta representação se encaixa no contexto de circuitos combinacionais, ou seja, circuitos que dependem apenas da sua entrada para combinar a resposta da saída. Figura 5: Representação a nível de funções booleanas (Adaptado de:(zebulum; PACHECO; VELLASCO, 2002)). A Figura 5 mostra uma função hipotética traduzida em um vetor ternário, onde cada gene representa um mintermo da expressão e é necessário saber a quantidade de literais (entradas) que possui o circuito. Esta representação identifica 0 como um literal negado, 1 como um literal em nível lógico verdadeiro e 2 como um literal ausente. A representação arquitetural (Figura 6) é um dos tipos de representação em sistemas digitais. É bastante utilizada quando a evolução é feita em plataforma intrínseca em FPGA s, pois as mesmas já possuem implementados ULA s, mul-

28 27 tiplexadores, entre outros, o que facilita a evolução de circuitos mais complexos. Outro tipo de representação em sistemas digitais, citado por Delai (2008), compreende a abstração no nível sistêmico representado por processadores, memórias e afins. Figura 6: Exemplo da representação em blocos multiplexadores (Fonte:(ZEBULUM; PACHECO; VELLASCO, 2002)) Ao longo dos últimos anos pesquisadores criaram circuitos digitais de aplicações evolutivas, como por exemplo: Delai (2008) faz síntese de um controlador digital para controle de pêndulo servo acionado; Zebulum, Pacheco e Vellasco (2002) traz metodologias para o projeto e otimização de layout em chips VLSI (Very-large-scale integration), e Higuchi et al. (1999) utiliza Eletrônica Evolutiva para adaptação de uma mão artificial ao braço humano.

29 Plataformas de Programação Paralela A computação paralela e distribuída busca alcançar alto desempenho otimizando a capacidade de processamento das máquinas disponíveis, explorando de forma eficiente o paralelismo nos algoritmos desenvolvidos. Existem diferentes middlewares que permitem tanto a programação paralela quanto a programação distribuída de aplicações. Estas técnicas podem ser combinadas de forma a explorar melhor os níveis de paralelismo de uma aplicação de acordo com a arquitetura disponível. Para o desenvolvimento de aplicações paralelas e distribuídas existem middlewares que dão suporte às linguagens de programação sequencial. Destacam-se: MPI (PACHECO, 1997), OpenMP (QUINN, 2004), RMI (COULOURIS; DOLLIMORE; KINDBERG, 2007), CORBA (COULOURIS; DOL- LIMORE; KINDBERG, 2007), CUDA (NVIDIA, 2011), entre outras. Nesta seção são apresentadas algumas características de duas plataformas: MPI e CUDA; utilizadas para obter desempenho por meio de paralelismo Message Parsing Interface (MPI) MPI (Message Passing Interface) é um padrão largamente utilizado no meio científico para comunicação de dados em computação paralela, porque fornece uma plataforma para escrita de programas com passagem de mensagens de forma prática, portátil e eficiente. É ideal para aplicações em que há necessidade de obter alto desempenho tanto para processamento multinúcleo quanto para clusters de processadores. De acordo com Pacheco (1997) e Quinn (2004), MPI é bastante utilizado para realizar a troca de mensagens entre tarefas de uma aplicação paralela desenvolvida para um ambiente distribuído. Tal padrão foi implementado

30 29 para as linguagens C, C++, Fortran e Java (possui uma versão inicial pouco eficiente). Com MPI é possível fazer uma separação natural e fácil do problema, tendo como características principais a portabilidade e a eficiência; sendo que desta forma o padrão MPI possui grande aceitação da comunidade acadêmica e da industria (KARNIADAKIS; KIRBII, 2003) Compute Unified Device Architecture (CUDA) Com o avanço da tecnologia das placas gráficas, GPUs (Graphics Processing Unit), a possibilidade de explorar paralelismo nestas placas também se tornou real. GPUs apresentam um alto poder de processamento a um baixo custo financeiro. Aplicações que envolvem multiplicação de matrizes, matriz transposta, simulação de Monte Carlo, transformada rápida de Fourier (FFT), entre outras, podem ser paralelizadas para GPUs, obtendo bom desempenho (NVIDIA, 2011). CUDA é a arquitetura de computação paralela da NVIDIA que utiliza linguagens de programação como CUDA C, OpenCL, DirectCompute e CUDA Fortran (NVIDIA, 2010b) com o objetivo de explorar o processamento paralelo de GPGPU NVIDIA. Para usuários familiarizados com a linguagem de programação C, o modelo de programação paralelo CUDA foi desenvolvido com o intuito de oferecer um rápido aprendizado (NVIDIA, 2010b). As três principais abstrações do modelo são: hierarquia de grupos de threads, memória compartilhada e sincronização. Baseado nestas abstrações o programador decompõe o seu problema em blocos de processamento independentes que são divididos em segmentos de processamento ou threads (Figura 7), além disso os dados deste problema devem estar modelados em uma hierarquia de memória.

31 30 Figura 7: Bloco de threads (Fonte:(NVIDIA, 2010b)). A hierarquia de memória em CUDA é dividida em seis níveis onde pode-se destacar: Memória global: manipulada por todos os blocos e threads instanciadas. Possui a maior quantidade de memória disponível entre todos os níveis e seu acesso é bastante lento quando comparado com a memória shared; Memória local: manipulada apenas por um determinada thread, com sérias restrições de tamanho. O termo local não indica acesso rápido, pois tanto a memória local quanto a global estão fora do núcleo de processamento.

32 31 Memória shared: compartilhada e manipulada por todas as threads instanciadas em determinado bloco. É o nível mais rápido de manipulação após os registradores, pois reside dentro do chip de processamento; Todos os níveis de memória possuem suas limitações e é necessário destacar que tanto a memória global quanto a local podem ser alocadas em tempo de execução pela CPU e são mais lentas de serem acessadas. A memória shared não pode ser alocada em tempo de execução, sendo definida com tamanho estático, além de ter desempenho superior no acesso em comparação com a global e a local. Na maior parte dos problemas o desempenho é superior quando os dados são copiados da memória global ou local para a memória shared (NVIDIA, 2010a). O modelo de programação CUDA esconde a complexidade da GPU NVIDIA, pois os programadores não escrevem software diretamente para o harware e sim utilizando-se de funções pré-definidas na API do CUDA. A vantagem principal é que os programadores não precisam se preocupar com detalhes complexos do hardware e a outra vantagem é que mesmo que a NVIDIA faça alterações na arquitetura do hardware os sofwares escritos continuam funcionando, pois foram escritos utilizando a API. Dentro do modelo de programação CUDA é interessante destacar um conjunto de marcadores de função que definem qual código será executado na GPU e na CPU: global : Define que a função é um kernel, ou seja, será chamada pela CPU e executará dentro da GPU. Na Figura 8 o código da CPU faz uma chamada ao kernel instancializando 1 bloco e N threads.

33 32 Figura 8: Exemplo de utilização de kernel (Fonte: (NVIDIA, 2010b)). device : Este marcador define que a função será compilada para GPU e será invocada pela própria GPU. host : Este marcador define que a função será compilada para CPU e será invocada pela própria CPU. De acordo com (NVIDIA, 2010b) este marcador pode ser utilizado junto ao device e indica que um mesmo código pode ser executado tanto pela GPU quanto pela CPU. O modelo de programação CUDA assume que tanto a GPU quanto a CPU possuem memórias separadas (NVIDIA, 2010b), e neste contexto a GPU é referida como dispositivo e a CPU é referida como host. Basicamente todo programa com processamento envolvendo GPU tem os seguintes passos: 1. O host aloca memória no dispositivo; 2. O host transfere dados para o dispositivo na memória alocada; 3. O host invoca a execução de kernels passando como parâmetro os ponteiros para memória no dispositivo;

34 33 4. Os resultados são transferidos do dispositivo para o host; 5. A memória é desalocada no dispositivo. Neste modelo de processamento, o programador não precisa se preocupar com a ocupação dos núcleos de processamento, pois o escalonador CUDA seleciona os blocos de processamento para os núcleos ociosos e cuida da distribuição de carga entre eles para que o desempenho seja o melhor possível (Figura 9). Figura 9: Escalonamento dos blocos nos núcleos (Fonte:(NVIDIA, 2010b)). Com o aumento da aquisição desta tecnologia pelos pesquisadores, estes encontram cada vez mais aplicações como: processamento de vídeos e imagens, biologia e química computacionais, simulação de dinâmica de fluidos, reconstrução de imagens de tomografia computadorizada, análise sísmica, traçado de raios, entre outras (NVIDIA, 2010b).

35 Linguagem de Programação C++ A adoção da linguagem de programação C++ é uma excelente escolha para projetos de pesquisa, pois proporciona alto nível de abstração e elevado desempenho, além de ser largamente utilizada no meio acadêmico, o que facilita o entendimento entre pesquisadores, ocupando o lugar que antes pertencia ao FORTRAN (KARNIADAKIS; KIRBII, 2003), além disso, possui todas as vantagens de uma linguagem orientada a objetos. Ainda de acordo com Karniadakis e KirbII (2003), C++ é uma linguagem naturalmente compatível com os conceitos básicos de algoritmos de particionamento, de chamada de funções recursivas, de alocação dinâmica de memória e de encapsulamento. 2.5 Algoritmos Genéticos em Programação Paralela A paralelização de algoritmos genéticos é apresentada na literatura considerando tanto uma única população quanto múltiplas populações. As principais implementações de algoritmos genéticos paralelos apresentadas por Cantu-Paz (1998) são: a) algoritmo genético mestre-escravo global com uma única população; b) algoritmo genético fine-grained com uma única população; c) algoritmo genético coarse-grained multi-populacional; d) algoritmos genéticos híbridos. a) Algoritmo genético mestre-escravo global com uma única população: considera que há um processador mestre e um conjunto de processadores escravos. O processador mestre armazena a população, executa as operações do algoritmo

36 35 genético e distribui os indivíduos aos processadores escravos, que somente avaliam o fitness dos indivíduos. A avaliação dos indivíduos é paralelizada atribuindo uma fração da população a cada um dos processadores disponíveis. As comunicações ocorrem somente quando cada escravo recebe seu subconjunto de indivíduos para avaliar e quando os escravos retornam os valores de fitness ao mestre. Este tipo de algoritmo não altera a estrutura do algoritmo sequencial. Pode ser implementado para plataforma de memória compartilhada ou distribuída. A Figura 10 ilustra o funcionamento deste algoritmo, apresentando as ações executadas pelo processador mestre, pelos escravos e a comunicação entre mestre e escravos. Figura 10: Algoritmo genético mestre-escravo global com uma única população. b) Algoritmo genético fine-grained com uma única população (EKLUND, 2004): é também conhecido como modelo de difusão, algoritmo genético celular ou algoritmo genético missivamente paralelo. Pode ser interpretado como uma população global colocada em uma estrutura de elementos de processamento, onde a distribuição espacial dos indivíduos define as subpopulações ou vizinhanças.

37 36 Cada nó tem somente poucos indivíduos (um ou dois) e o número de nós é muito maior do que o número de subpopulações no modelo de ilha, tornando-se um modelo massivamente paralelo com potencial de alcançar melhores speedups. A migração no modelo de difusão está implícita, onde indivíduos são permitidos difundir através da população. Isto é possível porque as vizinhanças são definidas com maior proximidade em torno de cada nó sobre alguma topologia. Já que cada nó está no centro de exatamente uma vizinhança, estas vizinhanças irão se sobrepor, fazendo com que todo nó seja parte de diversas vizinhanças. A seleção é realizada em paralelo dentro destas vizinhanças locais e somente o nó central será atualizado em toda a vizinhança. Figura 11: Modelo de difusão com uma topologia linear 2D. A Figura 11 apresenta o modelo de difusão com uma topologia linear 2D. As vizinhanças consistem de 5 nós. Durante a avaliação, todos os nós avaliam seus indivíduos em paralelo. O segundo passo da seleção é então feito, em paralelo, em todas as vizinhanças. Isto significa que todo nó é parte dos processos de seleção em 5 diferentes vizinhanças. Entretanto, o indivíduo selecionado somente será atualizado no nó central daquela vizinhança. Finalmente, o terceiro passo das operações genéticas é também feito em paralelo em todos os nós.

38 37 c) Algoritmo genético coarse-grained multi-populacional: é também conhecido como modelo regional, modelo multideme ou modelo de ilha. Cria ilhas (ou subconjuntos da população) que são divididas entre os processadores. Um algoritmo genético é executado em cada processador sobre cada ilha e alguma troca de informação pode ocorrer entre os processadores. A execução é realizada de forma assíncrona. A comunicação entre as subpopulações concentra-se na migração. Este tipo de algoritmo melhora a qualidade das soluções e reduz o tempo gasto para convergir. Figura 12: Modelo de ilha com topologia em anel sem controlador central. Figura 13: Modelo de ilha com topologia em anel com controlador central. As Figuras 12 e 13 apresentam um modelo de ilha com 8 subpopulações em uma topologia de anel. Os nós representam as subpopulações e as linhas representam os canais de comunicação. A Figura 12 apresenta o modelo sem um controlador central. É preciso haver algum tipo de protocolo de comunicação entre os nós de forma a garantir a terminação do algoritmo. Na Figura 13 há um nó

39 38 mestre que controla comunicação entre as populações e determina a terminação do algoritmo. As subpopulações possuem um grande número de indivíduos. Como resultado, a frequência de migração entre as subpopulações é tipicamente menor e o efeito de interação entre subpopulações é menor devido às subpopulações maiores. Pode ser categorizado quanto ao método de migração, esquema de conexão e homogeneidade do nó processador. d) Algoritmo genético híbrido: combina mais de uma estratégia paralela. Por exemplo, pode combinar o modelo de difusão com o modelo de ilha, onde cada subpopulação é uma arquitetura de difusão (Figura 14). Outra possibilidade é o modelo mestre-escravo com o modelo de ilha (Figura 15). Figura 14: Modelo mestre-escravo dentro dos nós e modelo de ilha interligando os nós. Figura 15: Modelo mestre-escravo dentro dos nós e modelo de ilha interligando os nós.

40 39 A combinação de diferentes modelos de algoritmos genéticos paralelos, associados à arquitetura computacional utilizada poderá gerar bons resultados em termos de qualidade da solução e desempenho computacional. Na literatura existem trabalhos que exploram diferentes técnicas de programação paralela e distribuída para alcançar melhor desempenho de algoritmos genéticos. Zhang et al. (2007) propõem uma implementação paralela de algoritmos genéticos usando um programa em C e um modelo MPI do tipo mestre-escravo na otimização de parâmetros em um flexible multi-body model. Berger e Barkaoui (2004) também propuseram uma implementação paralela para um algoritmo genético híbrido aplicado ao problema de roteamento de veículos com janelas de tempo, onde duas populações evoluem de forma concorrente utilizando diferentes objetivos. Uma revisão da literatura envolvendo computação paralela e algoritmos evolutivos é apresentada por Alba e Tomassini (2002).

41 40 3 SÍNTESE DE CIRCUITOS ANALÓGICOS Este capítulo investiga a utilização de algoritmos evolutivos como ferramenta empregada na construção de blocos básicos de circuitos eletrônicos em nível de transistores, onde é apresentada uma metodologia de projeto extrínseco utilizando o simulador ngspice (NGSPICE, 2011), aplicado na síntese de algumas classes de circuitos. Devido a complexidade computacional da técnica, é investigado também a utilização de computação paralela com MPI como forma de reduzir o tempo gasto na tarefa. 3.1 Metodologia de Representação em Eletrônica Analógica A representação é uma das escolhas cruciais dentro de um projeto evolutivo, pois é a partir dela que são definidos posteriormente os operadores evolutivos. E em Eletrônica Evolutiva os operadores devem ser capazes de modificar arranjos dos circuitos, alterarem as características dos componentes eletrônicos e atuar aumentando ou diminuindo o tamanho dos circuitos, além disso, a representação deve ser intuitiva e facilitar o mapeamento genótipo-fenótipo Genes O gene é a estrutura mais simples em um projeto evolutivo. Neste trabalho um gene deve mapear um componente eletrônico e suas características como tipo, nós de conexão e valor (quando o tipo exigir). A Figura 2 mostra como é feito o mapeamento do genótipo descrito por uma estrutura de dados em seu fenótipo descrito dentro do arquivo de descrição do circuito.

42 41 A Tabela 1 mostra um exemplo de como pode ser feito o mapeamento dos genes em resistores, capacitores, indutores, diodos e transistores npn/pnp. Sendo que o valor físico do componente e a conexão de seus terminais deverão ser mapeados dentro de um domínio pré-estabelecido de valores. Tabela 1: Exemplo de domínios de componentes eletrônicos. Tipo (inteiro) Componente Faixa de valor 0 Resistor 1-10k ohm 1 Capacitor 1nF - 1mF 2 Indutor 1uH - 1H 3 Diodo S/Valor 4 Transistor npn - pnp O número de nós de um circuito é estipulado de tal forma que o circuito possa adquirir qualquer arranjo, desde todos os componentes em paralelo até todos os componentes em série, para isso o terminal do componente pode conectar desde o nó 0 até o nó N, onde N é o número máximo de componentes que um circuito pode conter Indivíduos Em Computação Evolutiva o indivíduo é a representação de uma possível solução que em Eletrônica Evolutiva se traduz em um circuito eletrônico, e os atributos deste indivíduo são: Um vetor de genes, ou cromossomo, representando o conjunto de componentes eletrônicos que constituem um circuito; Fitness, ou aptidão, que representa a qualidade da solução que o circuito representa;

43 Máscara de ativação, ou vetor de binários, que atuam como chaves de ligadesliga dos genes. 42 Figura 16: Mapeamento genótipo-fenótipo no indivíduo Este último atributo tem a mesma função que o microrna têm nos cromossomos dos seres vivos, ativando ou desativando os genes (Figura 16). E nesta aplicação sua principal utilidade é oscilar o tamanho dos circuitos eletrônicos entre os genes que produzem fenótipo e os que não produzem, conhecido na biologia como DNA codificante e não codificante (ZEBULUM, 1999). Além do mais, é um ótimo aliado em manter a variabilidade genética na população. A Figura 16 demonstra como é feito o mapeamento genótipo-fenótipo no nível de indivíduo, onde o algoritmo verifica todos os genes que estão ativos e descreve a sua estrutura de dados em um arquivo de descrição de circuitos para simulação. Este processo é conhecido como mapeamento genótipo-fenótipo.

44 Metodologia Evolutiva em Eletrônica Analógica O projeto de circuitos em nível de transistores é complexo, tem custo elevado de tempo e exige estratégias bem elaboradas que surgem para solucionar problemas encontrados nos experimentos. As estratégias vêm principalmente minimizar os problemas relacionados ao numero de circuitos não simuláveis, o tempo de simulação, a convergência prematura da população, minimizar o número de componentes nos circuitos viáveis, aumentar a variabilidade genética da população de circuitos eletrônicos e também tratar adversidades que por ventura possam ocorrer durante o processo evolutivo Cruzamento Neste trabalho o tipo de cruzamento adotado é conhecido como cruzamento dois pontos, onde é feito o sorteio de dois pontos de corte no cromossomo dos pais selecionados e é feito um entrelaçamento entre esses cortes cromossomiais (Figura 17). Figura 17: Cruzamento em dois pontos.

45 Mutação O operador de mutação atua percorrendo todos os atributos do indivíduo selecionado, e com uma pequena probabilidade poderá modificar valores como nós de conexão, valores físicos, tipo de componente ou bits da máscara de ativação. A Figura 18 mostra o operador modificando o tipo de componente em nível de gene e em nível de indivíduo ativando um gene desativado pela máscara. Figura 18: Operador de Mutação Operador de Renovação Para combater a convergência prematura e estimular a variabilidade genética da população durante a evolução é interessante a adoção de um método que faz

46 45 a renovação em todas as gerações de parte da população injetando carga genética diferenciada por meio de indivíduos aleatórios. Os circuitos que possuem zero de aptidão, por não possuir características básicas para simulação são substituídos na geração seguinte por circuitos aleatórios. Este critério se mostrou bem eficiente, porque um indivíduo sem aptidão que não possui chances de reproduzir, não deixa que a sua vaga seja preenchida na próxima geração por um descendente de outro individuo com aptidão. O critério que determina em qual faixa da população que o operador de renovação irá atuar é a quantidade de indivíduos sem aptidão da geração anterior. Com isso é possível combater a dominância de poucos indivíduos que pode ocorrer principalmente nas gerações iniciais Operador de Minimização É comum na literatura de algoritmos evolutivos a utilização de funções de fitness multiobjetivo que utilizam múltiplas variáveis para gerar a aptidão do indivíduo. O projeto de circuitos analógicos por Computação Evolutiva deve-se preocupar com a viabilidade do circuito, ou seja, este deve atender as especificações dentro de uma margem de tolerância, e também deve possuir o menor número de componentes possíveis, ou então componentes com menor custo. Neste trabalho o custo dos componentes não foi contabilizado na função de fitness. O operador de minimização é uma rotina ativada dentro da aplicação quando o melhor circuito já atende as especificações. Esta rotina faz com que esta aplicação possua avaliação em duas etapas, sendo a primeira com o objetivo de obter o circuito viável e a segunda reduzir o seu fenótipo de forma que este mantenha a sua viabilidade. O

47 46 algoritmo quando ativado atribui penalidades a todos os circuitos maiores que o menor circuito viável. Este é proporcional a diferença entre os tamanhos e também ao fitness obtido por este circuito na simulação. A equação 1 descreve uma penalidade de 1% ao fitness por componente em excesso. Fitness = F (F (Tam T ) 0.01) (1) Onde: F é o fitness obtido na simulação, Tam é o tamanho do indivíduo a ser penalizado e T é o tamanho do menor circuito viável Utilização de Componentes Comerciais A viabilidade de implantação de um circuito sintetizado por um método inteligente utilizando simuladores está condicionada a utilização de parâmetros comerciais, pois em eletrônica não existe dispositivo genérico como nos simuladores. Para implementação dos circuitos sintetizados, este trabalho utilizou de padrões de componentes comerciais durante as simulações da evolução. No caso de resistores o gene pode apenas mapear valores da série E24, enquanto que no mapeamento de transistores foram utilizados os parâmetros dos transistores Philips R modelo BC547B NPN e BC557B PNP. Na seção de resultados não é abordado a utilização de diodos, porém quando necessário foi utilizado o modelo 1N Evolução da População A população é representada por um vetor de tamanho fixo contendo todos os circuitos de determinada geração. Ela possui os métodos responsáveis pela execução da evolução como avaliação geral, seleção para reprodução (utilizando

48 o método da roleta), seleção dos circuitos considerados elites e coordenação dos operadores genéticos. 47 Figura 19: Fluxograma da execução. O fluxograma da Figura 19 traz os processos utilizados neste trabalho para a síntese de circuitos analógicos em plataforma extrínseca sob coordenação da entidade população, a partir de uma população inicial aleatória, permitindo através de várias gerações, o surgimento de soluções melhores que as anteriores. A quantidade de indivíduos sem aptidão no decorrer das gerações é variável e faz com que a parcela de renovação também seja. Devido a isso, a taxa de cruzamento e mutação só é calculada depois de inserido os indivíduos elites e os aleatórios. A Figura 20 mostra uma taxa fixa de 80% de cruzamentos e 20% de mutações. Experimentalmente a utilização de um percentual fixo para cruzamento e mutação mostrou-se mais eficiente que a utilização de taxas variáveis que utilizam, por exemplo, métricas como o desvio padrão da população para determinar qual a parcela será obtida por cruzamento e qual será por mutação.

49 48 Figura 20: Faixas de divisão da População. A etapa de minimização pode ser feita atribuindo pesos maiores para componentes de maior custo financeiro, incentivando, por exemplo, o algoritmo evolutivo a buscar circuitos de menor custo ou visar apenas a redução da quantidade de componentes. 3.3 Programação Paralela Aplicada no Projeto de Circuitos Analógicos Padrão MPI Neste trabalho o uso de Computação Evolutiva aplicada à síntese de circuitos eletrônicos analógicos de forma autônoma é feita utilizando processamento paralelo de alto desempenho com MPI (Message Passing Interface). MPI é um padrão largamente utilizado no meio científico para comunicação de dados em computação paralela, porque fornece uma plataforma para escrita de programas com passagem de mensagens de forma prática, portátil e eficiente. É

50 ideal para aplicações em que há necessidade de obter alto desempenho tanto para processamento multinúcleo quanto para clusters de processadores Modelo Mestre-Escravo O projeto de circuitos por Eletrônica Evolutiva demanda simulações de alta complexidade por muitas gerações, apresentando custo computacional elevado, o que justifica a utilização de processamento paralelo. Para implementação da plataforma evolutiva em paralelo foi feito um levantamento que se constatou a avaliação como a etapa de maior custo computacional da aplicação, na proporção de aproximadamente 90% do tempo total da execução. Figura 21: Algoritmo evolutivo mestre-escravo com população única. Devido ao custo nesta etapa, o modelo adotado foi o mestre-escravo com uma única população (Figura 21), onde se considera que há um processador mestre e um conjunto de processadores escravos. O processador mestre armazena a população, executa as operações do algoritmo evolutivo e distribui os indivíduos por

Luiz H. R. Peixoto, Wilian S. Lacerda Departamento de Ciência da Computação Universidade Federal de Lavras C.P Lavras, Minas Gerais, Brasil

Luiz H. R. Peixoto, Wilian S. Lacerda Departamento de Ciência da Computação Universidade Federal de Lavras C.P Lavras, Minas Gerais, Brasil COMPUTAÇÃO EVOLUTIVA APLICADA NO PROJETO AUTOMÁTICO DE CIRCUITOS ELETRÔNICOS Luiz H. R. Peixoto, Wilian S. Lacerda Departamento de Ciência da Computação Universidade Federal de Lavras C.P. 3037 Lavras,

Leia mais

DESENVOLVIMENTO DE UM ALGORITMO PARALELO PARA APLICAÇÃO EM CLUSTER DE COMPUTADORES

DESENVOLVIMENTO DE UM ALGORITMO PARALELO PARA APLICAÇÃO EM CLUSTER DE COMPUTADORES DESENVOLVIMENTO DE UM ALGORITMO PARALELO PARA APLICAÇÃO EM CLUSTER DE COMPUTADORES João Ricardo Kohler Abramoski (PAIC/FUNDAÇÃO ARAUCÁRIA), Sandra Mara Guse Scós Venske (Orientadora), e-mail: ssvenske@unicentro.br

Leia mais

Técnicas de Processamento Paralelo na Geração do Fractal de Mandelbrot

Técnicas de Processamento Paralelo na Geração do Fractal de Mandelbrot Técnicas de Processamento Paralelo na Geração do Fractal de Mandelbrot Bruno Pereira dos Santos Dany Sanchez Dominguez Esbel Tomás Evalero Orellana Universidade Estadual de Santa Cruz Roteiro Breve introdução

Leia mais

de petróleo. Um novo domínio chamado computação de propósito geral em processadores gráficos (GPGPU) surgiu quando os pipelines de gráficos de

de petróleo. Um novo domínio chamado computação de propósito geral em processadores gráficos (GPGPU) surgiu quando os pipelines de gráficos de 12 1 1.1. Motivações Dentre os tipos de técnicas de Inteligência Artificial existentes, as técnicas de Programação Genética (PG) continuam mudando rapidamente conforme os pesquisadores e profissionais

Leia mais

1.1 Descrição do problema A programação genética (PG) é uma meta-heurística utilizada para gerar programas de computadores, de modo que o computador

1.1 Descrição do problema A programação genética (PG) é uma meta-heurística utilizada para gerar programas de computadores, de modo que o computador 1 Introdução 1.1 Descrição do problema A programação genética (PG) é uma meta-heurística utilizada para gerar programas de computadores, de modo que o computador possa resolver problemas de forma automática

Leia mais

Inteligência Artificial. Algoritmos Genéticos. Aula I Introdução

Inteligência Artificial. Algoritmos Genéticos. Aula I Introdução Universidade Estadual do Oeste do Paraná Curso de Bacharelado em Ciência da Computação Inteligência Artificial Algoritmos Genéticos Aula I Introdução Roteiro Introdução Computação Evolutiva Algoritmos

Leia mais

Introdução aos Algoritmos Genéticos

Introdução aos Algoritmos Genéticos Introdução aos Algoritmos Genéticos Prof. Matheus Giovanni Pires EXA 868 Inteligência Artificial Não-Simbólica B Universidade Estadual de Feira de Santana 2 Algoritmos Genéticos: Introdução Introduzidos

Leia mais

Aluno de Pós-Graduação em Engenharia de Software para Dispositivos Móveis pela UNINTER

Aluno de Pós-Graduação em Engenharia de Software para Dispositivos Móveis pela UNINTER COMPARAÇÃO DE DESEMPENHO NA PROGRAMAÇÃO PARALELA HÍBRIDA (MPI + OPENMP) NA BUSCA DE TEXTO EM ARQUIVOS 1 COMPARISON OF PERFORMANCE IN HYBRID PARALLEL PROGRAMMING (MPI + OPENMP) IN SEARCH OF TEXT IN FILES

Leia mais

SÍNTESE DE CIRCUITOS ELETRÔNICOS ANALÓGICOS POR COMPUTAÇÃO EVOLUTIVA

SÍNTESE DE CIRCUITOS ELETRÔNICOS ANALÓGICOS POR COMPUTAÇÃO EVOLUTIVA SÍNTESE DE CIRCUITOS ELETRÔNICOS ANALÓGICOS POR COMPUTAÇÃO EVOLUTIVA LUIZ H. R. PEIXOTO, WILIAN S. LACERDA, CLAUDIO F. M. TOLEDO Departamento de Ciência da Computação - Universidade Federal de Lavras C.P.

Leia mais

INSTITUTO DE PÓS GRADUAÇÃO ICPG GESTÃO DA TECNOLOGIA DA INFORMAÇÃO

INSTITUTO DE PÓS GRADUAÇÃO ICPG GESTÃO DA TECNOLOGIA DA INFORMAÇÃO INSTITUTO DE PÓS GRADUAÇÃO ICPG GESTÃO DA TECNOLOGIA DA INFORMAÇÃO Prof. Msc. Saulo Popov Zambiasi (saulopz@gmail.com) Informação - ICPG - Criciuma - SC 1 Características Gerais, operadores, algoritmo.

Leia mais

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar - Aula 1 - O NÍVEL DA LÓGICA DIGITAL 1. INTRODUÇÃO Na parte inferior da hierarquia da figura abaixo encontramos o nível da lógica digital, o verdadeiro hardware do computador. Este nível situa-se na fronteira

Leia mais

3 Algoritmos Genéticos

3 Algoritmos Genéticos Técnicas de Inteligência Computacional 33 3 Algoritmos Genéticos Este capítulo resume os principais conceitos sobre o algoritmo evolucionário empregado nesta dissertação. É apresentada uma breve explicação

Leia mais

Computação Evolutiva Eduardo do Valle Simões Renato Tinós ICMC - USP

Computação Evolutiva Eduardo do Valle Simões Renato Tinós ICMC - USP Computação Evolutiva Eduardo do Valle Simões Renato Tinós ICMC - USP 1 Principais Tópicos Introdução Evolução Natural Algoritmos Genéticos Aplicações Conclusão 2 Introdução http://www.formula-um.com/ Como

Leia mais

Computação Evolutiva. Computação Evolutiva. Principais Tópicos. Evolução natural. Introdução. Evolução natural

Computação Evolutiva. Computação Evolutiva. Principais Tópicos. Evolução natural. Introdução. Evolução natural Computação Evolutiva Eduardo do Valle Simões Renato Tinós ICMC - USP Principais Tópicos Introdução Evolução Natural Algoritmos Genéticos Aplicações Conclusão 1 2 Introdução Evolução natural http://www.formula-um.com/

Leia mais

Introdução a Algoritmos Genéticos

Introdução a Algoritmos Genéticos Introdução a Algoritmos Genéticos Tiago da Conceição Mota Laboratório de Inteligência Computacional Núcleo de Computação Eletrônica Universidade Federal do Rio de Janeiro Outubro de 2007 O Que São? Busca

Leia mais

Algoritmo Genético. Inteligência Artificial. Professor: Rosalvo Ferreira de Oliveira Neto

Algoritmo Genético. Inteligência Artificial. Professor: Rosalvo Ferreira de Oliveira Neto Algoritmo Genético Inteligência Artificial Professor: Rosalvo Ferreira de Oliveira Neto Estrutura 1. Introdução 2. Conceitos Básicos 3. Aplicações 4. Algoritmo 5. Exemplo Introdução São técnicas de busca

Leia mais

Algoritmos Genéticos. Estéfane G. M. de Lacerda DCA/UFRN Outubro/2008

Algoritmos Genéticos. Estéfane G. M. de Lacerda DCA/UFRN Outubro/2008 Estéfane G. M. de Lacerda DCA/UFRN Outubro/2008 Introdução São técnicas de busca e otimização. É a metáfora da teoria da evolução das espécies iniciada pelo Fisiologista e Naturalista inglês Charles Darwin.

Leia mais

Algoritmos Genéticos. Princípio de Seleção Natural. Sub-áreas da Computação Evolutiva. Idéias básicas da CE. Computação Evolutiva

Algoritmos Genéticos. Princípio de Seleção Natural. Sub-áreas da Computação Evolutiva. Idéias básicas da CE. Computação Evolutiva Computação Evolutiva Algoritmos Genéticos A computação evolutiva (CE) é uma área da ciência da computação que abrange modelos computacionais inspirados na Teoria da Evolução das Espécies, essencialmente

Leia mais

3. Resolução de problemas por meio de busca

3. Resolução de problemas por meio de busca Inteligência Artificial - IBM1024 3. Resolução de problemas por meio de busca Prof. Renato Tinós Local: Depto. de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3. Resolução de problemas por

Leia mais

OpenMP: Variáveis de Ambiente

OpenMP: Variáveis de Ambiente Treinamento OpenMP C/C++ 1 TREINAMENTO OpenMP C/C++ Módulo 1 Computação de Alto Desempenho Módulo 2 OpenMP: Construtores Paralelos Módulo 3 OpenMP: Diretivas de sincronização Módulo 4 OpenMP: Funções de

Leia mais

6 Estudos de Casos Porta Lógica OU de 4 Entradas

6 Estudos de Casos Porta Lógica OU de 4 Entradas 6 Estudos de Casos Com o objetivo de avaliar a síntese automática de circuitos de QCA usando técnicas de Hardware Evolucionário (EHW), alguns circuitos foram sintetizados e serão apresentados a seguir.

Leia mais

Figura 3.1: Fluxograma do algoritmo da Programação Genética.

Figura 3.1: Fluxograma do algoritmo da Programação Genética. 3 Programação Genética O termo Programação Genética passou a ser utilizado em 1990 nos trabalhos publicados por Koza [30] e De Garis [31]. A definição de Koza para este termo passou a predominar após a

Leia mais

Estratégias Evolutivas EEs. Prof. Juan Moisés Mauricio Villanueva

Estratégias Evolutivas EEs. Prof. Juan Moisés Mauricio Villanueva Estratégias Evolutivas EEs Prof. Juan Moisés Mauricio Villanueva jmauricio@cear.ufpb.br www.cear.ufpb.br/juan Estratégias Evolutivas Desenvolvidas por Rechenberg e Schwefel, e estendida por Herdy, Kursawe

Leia mais

Processamento de áudio em tempo real utilizando dispositivos não convencionais:

Processamento de áudio em tempo real utilizando dispositivos não convencionais: Processamento de áudio em tempo real utilizando dispositivos não convencionais: Processamento paralelo com Pure Data e GPU. André Jucovsky Bianchi ajb@ime.usp.br Departamento de Ciência da Computação Instituto

Leia mais

Algoritmos genéticos Abordagem unificada de algoritmos evolutivos simples

Algoritmos genéticos Abordagem unificada de algoritmos evolutivos simples Introdução Inspiração biológica Histórico da computação evolutiva Algoritmo evolutivo simples Programação evolutiva Estratégias evolutivas Algoritmos genéticos Abordagem unificada de algoritmos evolutivos

Leia mais

Aprendizado Evolutivo: Introdução aos Algoritmos Genéticos

Aprendizado Evolutivo: Introdução aos Algoritmos Genéticos Aprendizado Evolutivo: Introdução aos Algoritmos Genéticos SCC-230 Inteligência Artificial Thiago A. S. Pardo Solange O. Rezende 1 Computação Evolutiva (CE) Trata de sistemas para a resolução de problemas

Leia mais

AULA 03: FUNCIONAMENTO DE UM COMPUTADOR

AULA 03: FUNCIONAMENTO DE UM COMPUTADOR ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I AULA 03: FUNCIONAMENTO DE UM COMPUTADOR Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação O QUE É UM COMPUTADOR?

Leia mais

Técnicas de Inteligência Artificial

Técnicas de Inteligência Artificial Universidade do Sul de Santa Catarina Ciência da Computação Técnicas de Inteligência Artificial Aula 9 Algoritmos Genéticos Max Pereira Algoritmos Genéticos Algoritmos Genéticos São técnicas de busca e

Leia mais

Algoritmos Genéticos em Ambientes Paralelos

Algoritmos Genéticos em Ambientes Paralelos Algoritmos Genéticos em Ambientes Paralelos Michele Alves de Freitas Batista Instituto Nacional de Pesquisas Espaciais michele.afreitas@gmail.com Lamartine Nogueira Frutuoso Guimarães Instituto Nacional

Leia mais

Técnicas de Inteligência Artificial

Técnicas de Inteligência Artificial Universidade do Sul de Santa Catarina Ciência da Computação Técnicas de Inteligência Artificial Aula 9 Algoritmos Genéticos Max Pereira Algoritmos Genéticos São técnicas de busca e otimização. Uma metáfora

Leia mais

Fabrício Gomes Vilasbôas

Fabrício Gomes Vilasbôas Fabrício Gomes Vilasbôas Apresentação Placas Arquitetura Toolkit e Ferramentas de Debug Pensando em CUDA Programação CUDA Python Programação PyCUDA 1) Grids( padrão Globus) 2) Clusters ( padrão MPI) 3)

Leia mais

What is? Eduardo Viola Nicola Disciplina de IPPD

What is? Eduardo Viola Nicola Disciplina de IPPD What is? Eduardo Viola Nicola evnicola@inf.ufpel.edu.br Disciplina de IPPD Sumário 1)Introdução 2)Princípio Geral de Funcionamento 3)Exemplos de Aplicações 4)Modelo de Programação 5)Linguagens Suportadas

Leia mais

Max Pereira. Inteligência Artificial

Max Pereira. Inteligência Artificial Max Pereira Inteligência Artificial Algoritmos Genéticos Algoritmos Genéticos São técnicas de busca e otimização. Uma metáfora da teoria da evolução das espécies iniciada pelo Naturalista inglês Charles

Leia mais

Paradigmas de Processamento Paralelo na Resolução do Fractal de Mandelbrot

Paradigmas de Processamento Paralelo na Resolução do Fractal de Mandelbrot Paradigmas de Processamento Paralelo na Resolução do Fractal de Mandelbrot Bruno Pereira dos Santos Dany Sanchez Dominguez Universidade Estadual de Santa Cruz Cronograma Introdução Serial vs Processamento

Leia mais

Modelos Evolucionários e Tratamento de Incertezas

Modelos Evolucionários e Tratamento de Incertezas Ciência da Computação Modelos Evolucionários e Tratamento de Incertezas Aula 01 Computação Evolucionária Max Pereira Motivação Se há uma multiplicidade impressionante de algoritmos para solução de problemas,

Leia mais

Computação Paralela (CUDA)

Computação Paralela (CUDA) Universidade Federal do Amazonas Faculdade de Tecnologia Departamento de Eletrônica e Computação Computação Paralela (CUDA) Hussama Ibrahim hussamaibrahim@ufam.edu.br Notas de Aula Baseado nas Notas de

Leia mais

Hardware Evolucionário

Hardware Evolucionário Hardware Evolucionário EVOLVABLE HARDWARE Aplicação de Computação Evolucionária no Projeto, Otimização e Síntese de Sistemas Sumário O que é Evolvable Hardware? Taxonomia Exemplos de Aplicação; Projeto

Leia mais

1 Introdução. I know because I must know. It's my purpose. It's the reason I'm here. (The Matrix) 1.1 Objetivos do trabalho

1 Introdução. I know because I must know. It's my purpose. It's the reason I'm here. (The Matrix) 1.1 Objetivos do trabalho 1 Introdução I know because I must know. It's my purpose. It's the reason I'm here. (The Matrix) 1.1 Objetivos do trabalho Os hardwares gráficos atualmente podem ser considerados como verdadeiros processadores

Leia mais

Hardware Reconfigurável

Hardware Reconfigurável Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Hardware Reconfigurável DCA0119 Sistemas Digitais Heitor Medeiros Florencio Tópicos Alternativas de projeto

Leia mais

Algoritmos Genéticos. Pontos fracos dos métodos tradicionais. Características de alguns problemas. Tamanho do espaço de busca- Ex. caixeiro viajante:

Algoritmos Genéticos. Pontos fracos dos métodos tradicionais. Características de alguns problemas. Tamanho do espaço de busca- Ex. caixeiro viajante: Algoritmos Genéticos Prof. Luis Otavio Alvares INE/UFSC Características de alguns problemas Tamanho do espaço de busca- Ex. caixeiro viajante: 10 cidades: 181.000 soluções 20 cidades: 10.000.000.000.000

Leia mais

Programação de Alto Desempenho - 2. Prof: Carla Osthoff

Programação de Alto Desempenho - 2. Prof: Carla Osthoff Programação de Alto Desempenho - 2 Prof: Carla Osthoff E-mail: osthoff@lncc.br 3- Modelos de programação paralela Shared Memory/Threads Posix Win32 treads OpenMP Message Passing MPI Data Parallel OpenCL/Cuda

Leia mais

Introdução OpenMP. Nielsen Castelo Damasceno

Introdução OpenMP. Nielsen Castelo Damasceno Introdução OpenMP Nielsen Castelo Damasceno Computação de auto desempenho Processamento Paralelo Memória Distribuída e Compartilhada Modelo de programação OpenMP Métricas de Desempenho Computação de auto

Leia mais

3 Computação Evolucionária

3 Computação Evolucionária 34 3 Computação Evolucionária Computação Evolucionária compreende diversos algoritmos inspirados no princípio Darwiniano da evolução das espécies e na genética. São algoritmos probabilísticos, que fornecem

Leia mais

1. Computação Evolutiva

1. Computação Evolutiva Computação Bioinspirada - 5955010-1 1. Computação Evolutiva Prof. Renato Tinós Programa de Pós-Graduação Em Computação Aplicada Depto. de Computação e Matemática (FFCLRP/USP) 2 Computação Bioinspirada

Leia mais

Implementação de um escalonador de processos em GPU

Implementação de um escalonador de processos em GPU Implementação de um escalonador de processos em GPU Guilherme Martins guilhermemartins@usp.br 6 de abril de 2017 Guilherme Martins (guilhermemartins@usp.br) Implementação de um escalonador de processos

Leia mais

IF-705 Automação Inteligente Algoritmos Evolucionários

IF-705 Automação Inteligente Algoritmos Evolucionários IF-705 Automação Inteligente Algoritmos Evolucionários Aluizio Fausto Ribeiro Araújo Universidade Federal de Pernambuco Centro de Informática - CIn Departamento de Sistemas da Computação aluizioa@cin.ufpe.br

Leia mais

FPGA & VHDL. Tutorial

FPGA & VHDL. Tutorial FPGA & VHDL Tutorial 2009-2 FPGA FieldProgrammableGateArray Dispositivo lógico contendo uma matriz de: Células lógicas genéricas Configuráveis ( programadas ) para desempenhar uma função simples Chaves

Leia mais

Dispositivo Lógico Programável(PLD)

Dispositivo Lógico Programável(PLD) Dispositivo Lógico Programável(PLD) Para reduzir o número de CI's(Circuitos Integrados) a serem usados num projeto digital, é necessário colocar mais funções em um mesmo chip. Isso tem sido feito com evolução

Leia mais

Comparação de eficiência entre OpenCL e CUDA

Comparação de eficiência entre OpenCL e CUDA Aluno: Thiago de Gouveia Nunes Orientador: Prof. Marcel P. Jackowski GPGPU O que é GPGPU? É programação de propósito geral em GPUs. =D GPGPU Existem 2 linguagens populares no mercado para GPGPU, o CUDA

Leia mais

Introdução à Computação

Introdução à Computação Universidade Federal de Campina Grande Departamento de Sistemas e Computação Introdução à Computação Conceitos Básicos de Eletrônica Digital (Parte IV) Prof. a Joseana Macêdo Fechine Régis de Araújo joseana@computacao.ufcg.edu.br

Leia mais

Computação científica utilizando placas gráficas

Computação científica utilizando placas gráficas Brasília, dezembro de 2008 Universidade de Brasília - Faculdade do Gama Sumário Introdução Sumário Introdução Arquitetura da GPU Sumário Introdução Arquitetura da GPU Modelo de programação Sumário Introdução

Leia mais

Aplicações em CUDA. Medialab Instituto de Computação Universidade Federal Fluminense NVIDIA CUDA Research Center

Aplicações em CUDA. Medialab Instituto de Computação Universidade Federal Fluminense NVIDIA CUDA Research Center Aplicações em CUDA Medialab Instituto de Computação Universidade Federal Fluminense NVIDIA CUDA Research Center Roteiro l Introdução l Eventos l Aspectos históricos l Operações atômicas l Introdução sobre

Leia mais

Paralelismo de dados. (execução de simultaneidade) Tipo de arquitetura paralela SIMD. SIMD (Single Instruction Multiple Data)

Paralelismo de dados. (execução de simultaneidade) Tipo de arquitetura paralela SIMD. SIMD (Single Instruction Multiple Data) Paralelismo de dados (execução de simultaneidade) Em métodos tradicionais de programação (processamento sequencial), uma grande quantidade de dados é processada em um único núcleo de uma CPU, enquanto

Leia mais

Parte # 2 - Circuitos Combinatórios

Parte # 2 - Circuitos Combinatórios CEFET Departamento de Engenharia Elétrica - DEPEL GELE 7163 Eletrônica Digital Parte # 2 - Circuitos Combinatórios 1 GELE 7163 Eletrônica Digital 2 Referências : Notas de Aula. Mendonça, Alexandre e Zelenovsky,

Leia mais

Algoritmos Genéticos. Texto base: Stuart Russel e Peter Norving - Inteligência Artificial

Algoritmos Genéticos. Texto base: Stuart Russel e Peter Norving - Inteligência Artificial Algoritmos Genéticos Texto base: Stuart Russel e Peter Norving - Inteligência Artificial junho/2007 Algoritmo Genético Uma variante da busca em feixe estocástica Estado sucessor gerado pela combinação

Leia mais

Sistema Computacional

Sistema Computacional Algoritmos e Lógica de Programação Conceitos Básicos Abstração Reinaldo Gomes reinaldo@cefet-al.br O que é um? Integração de componentes atuando como uma entidade, com o propósito de processar dados, i.e.

Leia mais

ALGORITMO GENÉTICO COMO REPRESENTAÇÃO DAS MUTAÇÕES NA BIOLOGIA

ALGORITMO GENÉTICO COMO REPRESENTAÇÃO DAS MUTAÇÕES NA BIOLOGIA Patrocínio, MG, outubro de 2016 ENCONTRO DE PESQUISA & EXTENSÃO, 3., 2016, Patrocínio. Anais... Patrocínio: IFTM, 2016. ALGORITMO GENÉTICO COMO REPRESENTAÇÃO DAS MUTAÇÕES NA BIOLOGIA Igor Acassio Melo

Leia mais

Algoritmos evolutivos paralelos. Carlos Eduardo Cuzik Marcos Felipe Eipper Ramon Artner Rocha

Algoritmos evolutivos paralelos. Carlos Eduardo Cuzik Marcos Felipe Eipper Ramon Artner Rocha Algoritmos evolutivos paralelos Carlos Eduardo Cuzik Marcos Felipe Eipper Ramon Artner Rocha Introdução O mesmo de sempre mas com thread. Obrigado Fake news Introdução de verdade Era da informação - Big

Leia mais

Codificação das variáveis: binária Iniciação da população: aleatória Avaliação: função aptidão Operadores. Critério de parada: número de gerações

Codificação das variáveis: binária Iniciação da população: aleatória Avaliação: função aptidão Operadores. Critério de parada: número de gerações AG Simples/Canônico (AGS) AG introduzido por Holland Funciona bem para problemas de otimização simples e/ou de pequenas dimensões A maior parte da teoria dos AGs está baseada no AGS Utilidade didática

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I Memória Cache Slide 1 Introdução Tamanho Função de Mapeamento Política de Escrita Tamanho da Linha Número de Memórias Cache Cache em Níveis Slide 2 Introdução

Leia mais

Universidade Estadual de Mato Grosso do Sul UEMS Curso de Ciência da Computação Disciplina de Algoritmos Paralelos e Distribuídos

Universidade Estadual de Mato Grosso do Sul UEMS Curso de Ciência da Computação Disciplina de Algoritmos Paralelos e Distribuídos Universidade Estadual de Mato Grosso do Sul UEMS Curso de Ciência da Computação Disciplina de Algoritmos Paralelos e Distribuídos Pensando em Paralelo Pensar em paralelo é uma tarefa que exige disciplina

Leia mais

Pós-Graduação em Engenharia de Automação Industrial SISTEMAS INTELIGENTES PARA AUTOMAÇÃO

Pós-Graduação em Engenharia de Automação Industrial SISTEMAS INTELIGENTES PARA AUTOMAÇÃO Pós-Graduação em Engenharia de Automação Industrial SISTEMAS INTELIGENTES PARA AUTOMAÇÃO AULA 06 Algoritmos Genéticos Sumário Introdução Inteligência Artificial (IA) Algoritmos Genéticos Aplicações de

Leia mais

3 Algoritmos Genéticos

3 Algoritmos Genéticos Algoritmos Genéticos Algoritmos Genéticos (AGs) constituem um mecanismo de busca adaptativa que se baseia no princípio Darwiniano de seleção natural e reprodução genética [101]. AGs são tipicamente empregados

Leia mais

Algoritmos Evolutivos para Otimização

Algoritmos Evolutivos para Otimização Algoritmos Evolutivos para Otimização A área de aplicação que tem recebido mais atenção é a otimização. Uma das razões é que existem uma variedade de problemas de otimização e a maioria deles sem solução

Leia mais

Aplicação de Processamento Paralelo com GPU a Problemas de Escoamento Monofásico em Meios Porosos. Bruno Pereira dos Santos Dany Sanchez Dominguez

Aplicação de Processamento Paralelo com GPU a Problemas de Escoamento Monofásico em Meios Porosos. Bruno Pereira dos Santos Dany Sanchez Dominguez Aplicação de Processamento Paralelo com GPU a Problemas de Escoamento Monofásico em Meios Porosos Bruno Pereira dos Santos Dany Sanchez Dominguez 1 Roteiro 1. Introdução 2. Five-Spot Problem 3. Modelagem

Leia mais

Projeto e Implementação de um Fatorial em Hardware para Dispositivos Reconfiguráveis

Projeto e Implementação de um Fatorial em Hardware para Dispositivos Reconfiguráveis Projeto e Implementação de um Fatorial em Hardware para Dispositivos Reconfiguráveis Álamo G. Silva, Leonardo A. Casillo Departamento de Ciências Exatas e Naturais Universidade Federal Rural do Semi- Árido

Leia mais

AULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS

AULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação PROGRAMAÇÃO PARALELA

Leia mais

SIST706 Sistemas Distribuídos

SIST706 Sistemas Distribuídos Slide01 Introdução e Conceitos de Sistemas Distribuídos SIST706 Sistemas Distribuídos 2013/1 Prof. Jéfer Benedett Dörr @: prof.jefer@gmail.com profjefer.wordpress.com Sistema Distribuído Definição de Andrew

Leia mais

Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 02

Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 02 Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 02 Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação POR QUE APRENDER CONCEITOS

Leia mais

Introdução ao CUDA. Material elaborado por Davi Conte.

Introdução ao CUDA. Material elaborado por Davi Conte. Introdução ao CUDA Material elaborado por Davi Conte. O objetivo deste material é que o aluno possa iniciar seus conhecimentos em programação paralela, entendendo a diferença da execução de forma sequencial

Leia mais

PARALELIZAÇÃO DE ALGORITMO DE INSPEÇÃO DE ROTAS UTILIZANDO PERMUTAÇÃO LEXICOGRÁFICA 1

PARALELIZAÇÃO DE ALGORITMO DE INSPEÇÃO DE ROTAS UTILIZANDO PERMUTAÇÃO LEXICOGRÁFICA 1 PARALELIZAÇÃO DE ALGORITMO DE INSPEÇÃO DE ROTAS UTILIZANDO PERMUTAÇÃO LEXICOGRÁFICA 1 Jessica De Almeida Berlezi 2, Janiel Ceretta Foletto 3, Edson Luiz Padoin 4, Rogério S. M. Martins 5. 1 Trabalho realizado

Leia mais

Sistemas Digitais I LESI :: 2º ano. Introdução

Sistemas Digitais I LESI :: 2º ano. Introdução Sistemas Digitais I LESI :: 2º ano Introdução António Joaquim Esteves João Miguel Fernandes www.di.uminho.pt/~aje Bibliografia: capítulo 1, DDPP, Wakerly DEP. DE INFORMÁTICA ESCOLA DE ENGENHARIA UNIVERSIDADE

Leia mais

INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO ORGANIZAÇÃO COMPUTACIONAL

INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO ORGANIZAÇÃO COMPUTACIONAL INTRODUÇÃO À TECNOLOGIA DA ORGANIZAÇÃO COMPUTACIONAL PROFESSOR CARLOS MUNIZ ORGANIZAÇÃO DE UM COMPUTADOR TÍPICO Memória: Armazena dados e programas Processador (CPU - Central Processing Unit): Executa

Leia mais

GPU (Graphics Processing Unit) Bruno Padilha Gregory De Bonis Luciana Kayo

GPU (Graphics Processing Unit) Bruno Padilha Gregory De Bonis Luciana Kayo GPU (Graphics Processing Unit) Bruno Padilha - 5745282 Gregory De Bonis - 6431180 Luciana Kayo - 6430992 O que é? O que é? - Processador auxiliar responsável principalmente por operações de ponto flutuante

Leia mais

Sparse Matrix-Vector Multiplication on GPU: When Is Rows Reordering Worthwhile?

Sparse Matrix-Vector Multiplication on GPU: When Is Rows Reordering Worthwhile? Sparse Matrix-Vector Multiplication on GPU: When Is Rows Reordering Worthwhile? Paula Prata João Muranho Instituto de Telecomunicações Departamento de Informática Universidade da Beira Interior Instituto

Leia mais

Tecnólogo em Análise e Desenvolvimento de Sistemas. Sistemas Operacionais (SOP A2)

Tecnólogo em Análise e Desenvolvimento de Sistemas. Sistemas Operacionais (SOP A2) Tecnólogo em Análise e Desenvolvimento de Sistemas Sistemas Operacionais (SOP A2) Conceitos de Hardware e Software Referências: Arquitetura de Sistemas Operacionais. F. B. Machado, L. P. Maia. Editora

Leia mais

PUC-Rio. Dispositivos Lógicos Programáveis

PUC-Rio. Dispositivos Lógicos Programáveis Dispositivos Lógicos Programáveis 1 Dispositivos Lógicos Programáveis PLDs (Programmable Logic Devices) são circuitos integrados cujas conexões internas podem ser programadas pelo usuário de modo a realizar

Leia mais

3 Otimização Evolucionária de Problemas com Restrição

3 Otimização Evolucionária de Problemas com Restrição 3 Otimização Evolucionária de Problemas com Restrição 3.1. Introdução Este capítulo resume os principais conceitos sobre os algoritmos evolucionários empregados nesta dissertação. Primeiramente, se fornece

Leia mais

Metahuerísticas: Algoritmos Genéticos. Sistemas de Informação/Ciências da Computação UNISUL Aran Bey Tcholakian Morales, Dr. Eng.

Metahuerísticas: Algoritmos Genéticos. Sistemas de Informação/Ciências da Computação UNISUL Aran Bey Tcholakian Morales, Dr. Eng. Metahuerísticas: Algoritmos Genéticos Sistemas de Informação/Ciências da Computação UNISUL Aran Bey Tcholakian Morales, Dr. Eng. (Apostila 8) Meta-heurísticas Classificação de métodos heurísticos: os métodos

Leia mais

Visões Arquiteturais. Visões Arquiteturais

Visões Arquiteturais. Visões Arquiteturais Visões Arquiteturais Separar diferentes aspectos em visões separadas com o objetivo de gerenciar complexidade. Cada visão descreve diferentes conceitos da Engenharia. Visões permitem reduzir a quantidade

Leia mais

INTRODUÇÃO À ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES. Função e Estrutura. Introdução Organização e Arquitetura. Organização e Arquitetura

INTRODUÇÃO À ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES. Função e Estrutura. Introdução Organização e Arquitetura. Organização e Arquitetura Introdução Organização e Arquitetura INTRODUÇÃO À ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES Eduardo Max Amaro Amaral Arquitetura são os atributos visíveis ao programador. Conjunto de instruções, número

Leia mais

Tópicos Especiais em Informática Fatec Indaiatuba

Tópicos Especiais em Informática Fatec Indaiatuba Prof. Dilermando Piva Jr. ((Compilação de diversas fontes na Internet)) Principal motivação para o estudo da computação evolutiva Otimização de processos complexo e que possuem um grande número de variáveis

Leia mais

Modelo de Programação Paralela

Modelo de Programação Paralela Modelo de Programação Paralela As arquiteturas paralelas e distribuídas possuem muitos detalhes Como especificar uma solução paralela pensando em todos esses detalhes? O que queremos? Eecutar a solução

Leia mais

Características de Sistemas Distribuídos

Características de Sistemas Distribuídos Tópicos O conceito de Características de Carlos Ferraz cagf@cin.ufpe.br Infra-estrutura básica Exemplos Vantagens e desvantagens Convergência digital Características 2002-2003 Carlos A. G. Ferraz 2 O Conceito

Leia mais

ESTRATÉGIAS DE OTIMIZAÇÃO DE CÓDIGO EM OPENCL

ESTRATÉGIAS DE OTIMIZAÇÃO DE CÓDIGO EM OPENCL 6ª Jornada Científica e Tecnológica e 3º Simpósio de Pós-Graduação do IFSULDEMINAS 04 e 05 de novembro de 2014, Pouso Alegre/MG ESTRATÉGIAS DE OTIMIZAÇÃO DE CÓDIGO EM OPENCL Claudio André da SILVA JUNIOR

Leia mais

Projeto com Linguagens de Descrição de Hardware

Projeto com Linguagens de Descrição de Hardware Projeto com Linguagens de Descrição de Hardware Versão 2012 RESUMO Esta experiência consiste no projeto e implementação de um circuito digital simples com o uso de uma linguagem de descrição de hardware.

Leia mais

Síntese Evolucionária em Nanotecnologia

Síntese Evolucionária em Nanotecnologia Síntese Evolucionária em Nanotecnologia Cristina Costa Santini, Marco Aurélio C. Pacheco ICA : Laboratório de Inteligência Computacional Aplicada Departamento de Engenharia Elétrica, PUC-Rio [santini,

Leia mais

Arquitetura de Computadores. Conjunto de Instruções

Arquitetura de Computadores. Conjunto de Instruções Arquitetura de Computadores Conjunto de Instruções Arquitetura do Conjunto das Instruções ISA (Instruction Set Architecture) Traduz para uma linguagem intermediária (ISA) os vários programas em diversas

Leia mais

5 Conclusões e Trabalhos Futuros

5 Conclusões e Trabalhos Futuros 5 Conclusões e Trabalhos Futuros Este trabalho apresentou a proposta de um novo modelo de programação genética linear (PGLIQ), inspirado no conceito da física quântica de superposição de estados, capaz

Leia mais

Estruturas de Sistemas Operacionais

Estruturas de Sistemas Operacionais Estruturas de Sistemas Operacionais Sistemas Operacionais - Tópicos Componentes do Sistema Serviços de Sistemas Operacionais Chamadas ao Sistema Estrutura do Sistema Máquinas Virtuais Chamadas ao Sistema

Leia mais

Inteligência Artificial

Inteligência Artificial Inteligência Artificial Prof. Kléber de Oliveira Andrade pdjkleber@gmail.com Algoritmos Genéticos Conteúdo Introdução O Algoritmo Genético Binário Noções de Otimização O Algoritmo Genético com Parâmetros

Leia mais

Escalonador de Ordens de Produção Utilizando Algoritmos Genéticos

Escalonador de Ordens de Produção Utilizando Algoritmos Genéticos Escalonador de Ordens de Produção Utilizando Algoritmos Genéticos Nome: Wilian Kohler Supervisor na FURB: Prof. Jomi Fred Hübner Orientador na Empresa: Evaldo Moresco Jr. Empresa: Metalúrgica Siemsen Ltda.

Leia mais

Aula 06 - Máquina Multinível e Von Neumann

Aula 06 - Máquina Multinível e Von Neumann Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte Campus Currais Novos Instalação e Organização de Computadores Aula 06 - Máquina Multinível e Von Neumann Prof. Diego Pereira

Leia mais

TECNÓLOGO EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PROGRAMAÇÃO DE COMPUTADORES I

TECNÓLOGO EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PROGRAMAÇÃO DE COMPUTADORES I TECNÓLOGO EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PROGRAMAÇÃO DE COMPUTADORES I Aula 02: Organização e Arquitetura de Computadores / Lógica Digital (Parte I) O conteúdo deste documento tem por objetivo

Leia mais

Bacharelado em Sistemas de Informação Sistemas Operacionais. Prof. Filipo Mór

Bacharelado em Sistemas de Informação Sistemas Operacionais. Prof. Filipo Mór Bacharelado em Sistemas de Informação Sistemas Operacionais Prof. Filipo Mór WWW.FILIPOMOR.COM - REVISÃO ARQUITETURAS PARALELAS Evolução das Arquiteturas Evolução das Arquiteturas Entrada CPU Saída von

Leia mais

ESTUDO DOS PARAMETROS DE UM ALGORITMO GENÉTICO PARA POSTERIOR USO NA SOLUÇÃO DE PROBLEMAS DO TIPO JOB-SHOP

ESTUDO DOS PARAMETROS DE UM ALGORITMO GENÉTICO PARA POSTERIOR USO NA SOLUÇÃO DE PROBLEMAS DO TIPO JOB-SHOP ESTUDO DOS PARAMETROS DE UM ALGORITMO GENÉTICO PARA POSTERIOR USO NA SOLUÇÃO DE PROBLEMAS DO TIPO JOB-SHOP Gilson Rogério Batista, Gideon Villar Leandro Universidade Regional do Noroeste do Estado do Rio

Leia mais

PLANEJAMENTO DAS DISCIPLINAS DE SISTEMAS DIGITAIS NA EC3. Workshop de Graduação do PCS Prof. Edson S. Gomi 31 de julho de 2018

PLANEJAMENTO DAS DISCIPLINAS DE SISTEMAS DIGITAIS NA EC3. Workshop de Graduação do PCS Prof. Edson S. Gomi 31 de julho de 2018 PLANEJAMENTO DAS DISCIPLINAS DE SISTEMAS DIGITAIS NA EC3 Workshop de Graduação do PCS Prof. Edson S. Gomi 31 de julho de 2018 Disciplina PréRequisito Semestral Quadrimestral PCS3115 Sistemas Digitais I

Leia mais

Algoritmos Genéticos e Evolucionários

Algoritmos Genéticos e Evolucionários Algoritmos Genéticos e Evolucionários Djalma M. Falcão COPPE/UFRJ PEE e NACAD falcao@nacad.ufrj.br http://www.nacad.ufrj.br/~falcao/ http://www.nacad.ufrj.br/~falcao/ag/ag.htm Resumo do Curso Introdução

Leia mais

ALGORITMOS GENÉTICOS. Adair Santa Catarina Curso de Ciência da Computação Unioeste Campus de Cascavel PR

ALGORITMOS GENÉTICOS. Adair Santa Catarina Curso de Ciência da Computação Unioeste Campus de Cascavel PR ALGORITMOS GENÉTICOS Adair Santa Catarina Curso de Ciência da Computação Unioeste Campus de Cascavel PR Fev/2018 Introdução Algoritmos Genéticos são algoritmos heurísticos de busca, que utilizam regras

Leia mais

FPGA & VHDL. Tutorial Aula 1. Computação Digital

FPGA & VHDL. Tutorial Aula 1. Computação Digital FPGA & VHDL Tutorial Aula 1 Computação Digital FPGA Field Programmable Gate Array Dispositivo lógico contendo uma matriz de: Células lógicas genéricas Configuráveis ( programáveis ) para desempenhar uma

Leia mais