UNIVERSIDADE CATÓLICA DE PELOTAS CENTRO POLITÉCNICO PROGRAMA DE PÓS-GRADUAÇÃO EM INFORMÁTICA



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

Complemento IV Introdução aos Algoritmos Genéticos

Algoritmos Genéticos

A Otimização Colônia de Formigas

1 Problemas de transmissão

PROJETO DE REDES

DECODIFICADOR DE DISPLAY DE 7 SEGMENTOS COM LATCH

Inteligência Computacional Aplicada a Engenharia de Software

Organização e Arquitetura de Computadores I

Filtros Digitais. Capítulo 6.0 PDS Prof. César Janeczko (2 o semestre 2009) 10 A

Cálculo Numérico Aula 1: Computação numérica. Tipos de Erros. Aritmética de ponto flutuante

Sistemas Computacionais II Professor Frederico Sauer

1. Sistemas de numeração

Projeto e Análise de Algoritmos Projeto de Algoritmos Heurísticas e Algoritmos Aproximados

3. Arquitetura Básica do Computador

4 Segmentação Algoritmo proposto

Filtros de sinais. Conhecendo os filtros de sinais.

UNIVERSIDADE CATÓLICA DE PETRÓPOLIS CENTRO DE ENGENHARIA E COMPUTAÇÃO

1 Transmissão digital em banda base

ARQUITETURA DE COMPUTADORES

CONTROLE DIGITAL DE VOLUME

Arquitetura de Rede de Computadores

Caracterização temporal de circuitos: análise de transientes e regime permanente. Condições iniciais e finais e resolução de exercícios.

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

Sinal analógico x sinal digital. Sinal analógico. Exemplos de variações nas grandezas básicas. Grandezas básicas em sinais periódicos

PROJETO DE REDES

Inteligência de Enxame: ACO

Figura 5.1.Modelo não linear de um neurônio j da camada k+1. Fonte: HAYKIN, 2001

Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores.

Disciplina: Introdução à Informática Profª Érica Barcelos

CAP. I ERROS EM CÁLCULO NUMÉRICO

Meta-heurísticas. Métodos Heurísticos José António Oliveira meta-heurísticas

2. Representação Numérica

INF 1771 Inteligência Artificial

MODULAÇÃO AM E DEMODULADOR DE ENVELOPE

Faculdade de Engenharia Optimização. Prof. Doutor Engº Jorge Nhambiu

As fases na resolução de um problema real podem, de modo geral, ser colocadas na seguinte ordem:

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

ALGORITMOS GENÉTICOS: UMA VISÃO EXPLANATÓRIA

ULA Sinais de Controle enviados pela UC

IA Colônia de Formigas. Prof. Ricardo Britto DIE-UFPI

Universidade Federal do Rio de Janeiro. Princípios de Instrumentação Biomédica. Módulo 4

INSTRUMENTAÇÃO INDUSTRIAL 1. INTRODUÇÃO / DEFINIÇÕES

Capacidade = 512 x 300 x x 2 x 5 = ,72 GB

28/9/2010. Paralelismo no nível de instruções Processadores superescalares

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

Notas da Aula 17 - Fundamentos de Sistemas Operacionais

Módulo 4. Construindo uma solução OLAP

Modelagem no Domínio do Tempo. Carlos Alexandre Mello. Carlos Alexandre Mello 1

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

Sistemas Operacionais

4 Arquitetura básica de um analisador de elementos de redes

Márcio Leandro Moraes Rodrigues. Frame Relay

IW10. Rev.: 02. Especificações Técnicas

5 A Utilização da Técnica do Espaço Nulo e dos Atributos Baseados na Escolha de Coeficientes de Autocorrelações

Relatório Trabalho Prático 2 : Colônia de Formigas para Otimização e Agrupamento

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

Multiplexação. Multiplexação. Multiplexação - FDM. Multiplexação - FDM. Multiplexação - FDM. Sistema FDM

Computadores de Programação (MAB353)

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES

Memórias Prof. Galvez Gonçalves

Representação de Dados

Introdução. A Informação e sua Representação (Parte III) Universidade Federal de Campina Grande Departamento de Sistemas e Computação

O ESPAÇO NULO DE A: RESOLVENDO AX = 0 3.2

Aula 8 Circuitos Integrados

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

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

Escola Secundária c/3º CEB José Macedo Fragateiro. Curso Profissional de Nível Secundário. Componente Técnica. Disciplina de

Sistemas Operacionais

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

Minicurso SBSE 2012:

3 Sistemas de Numeração:

Tecnologia de faixa para falha

:: Telefonia pela Internet

Arquiteturas RISC. (Reduced Instructions Set Computers)

Memória Cache. Prof. Leonardo Barreto Campos 1

dv dt Fig.19 Pulso de tensão típico nos terminais do motor

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

ARQUITETURA DE COMPUTADORES. Sistemas de Numeração. 1 Arquitetura de Computadores

Curso: Técnico de Informática Disciplina: Redes de Computadores. 1- Apresentação Binária

Tabela de roteamento

Problema de Otimização Combinatória

ALGORITMOS GENÉTICOS

Quadro de consulta (solicitação do mestre)

3 ALGORITMOS GENÉTICOS : CONCEITOS BÁSICOS E EXTENSÕES VINCULADAS AO PROBLEMA DE MINIMIZAÇÃO DE PERDAS

computador-cálculo numérico perfeita. As fases na resolução de um problema real podem, de modo geral, ser colocadas na seguinte ordem:

Em um sistema de numeração de base b qualquer, um número positivo é representado pelo polinômio:

Erros. Número Aproximado. Erros Absolutos erelativos. Erro Absoluto

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

Introdução à Organização e Arquitetura de Computadores. Prof. Leonardo Barreto Campos 1

Capítulo 4 - Roteamento e Roteadores

Manual AGENDA DE BACKUP

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

Modelo Cascata ou Clássico

5. EXPERIÊNCIAS E ANÁLISE DOS RESULTADOS Os Programas de Avaliação

Sistemas de Numeração

BARRAMENTO DO SISTEMA

APLICAÇÕES DA DERIVADA

Transcrição:

UNIVERSIDADE CATÓLICA DE PELOTAS CENTRO POLITÉCNICO PROGRAMA DE PÓS-GRADUAÇÃO EM INFORMÁTICA Aplicação de Algoritmos Heurísticos na Ordenação e Particionamento de Coeficientes em Arquiteturas de Filtros FIR por Angelo Gonçalves da Luz Trabalho Individual I TI-2009/2-002 Orientador: Prof. Dr. Eduardo Antonio César Costa Co-Orientador: Prof. Dr. Marilton Sanchotene de Aguiar Pelotas, Fevereiro de 2010

SUMÁRIO LISTA DE FIGURAS... 4 LISTA DE TABELAS... 5 LISTA DE ABREVIATURAS E SIGLAS... 6 RESUMO... 7 ABSTRACT... 8 1 Introdução... 9 2 Consumo de Potência em Circuitos CMOS... 11 2.1 Consumo de Potência Dinâmica... 11 3 Codificação para Baixo Consumo de Potência... 14 3.1 Codificação Bus-Invert... 14 3.2 Codificação Gray... 15 3.3 Codificação Híbrida... 15 4 FILTROS DE RESPOSTA FINITA AO IMPULSO - FIR... 17 4.1 Características... 17 4.2 Tipos de Filtros... 19 5 Heurísticas... 23 5.1 Heurísticas Construtivas... 23 5.1.1 Heurística do Vizinho mais Próximo... 23 5.1.2 Heurística de Bellmore e Nemhauser... 24 5.2 Metaheurísticas... 25 5.2.1 Algoritmos Genéticos... 26 5.2.1.1 Representação... 27 5.2.1.2 Decodificação... 27 5.2.1.3 Avaliação da População... 27 5.2.1.4 Operadores Genéticos... 28 5.2.1.4 Substituição da população... 29 5.2.1.5 Critério de Parada... 29 5.2.2 GRASP... 30 5.2.2.1 Fase de Construção... 30 5.2.2.2 Fase de Busca Local... 32 5.2.2.3 Critério de Parada... 32 5.2.3 Outras Metaheurísticas... 33 5.2.3.1 Multi-Start... 33 5.2.3.2 Simulated Annealing... 33 5.2.3.3 Busca Tabu... 34 5.2.3.4 Colônia de Formigas... 35 6 Resultados... 37 6.1 Resultados Obtidos com os Coeficientes Originais... 38 6.2 Resultados obtidos através da Codificação... 39 7 Trabalhos Relacionados... 41 2

8 Conclusões... 43 Referências... 44 3

LISTA DE FIGURAS Figura 1. Caracterização da potência dinâmica de uma porta CMOS...12 Figura 2. Gráfico da variação das correntes dinâmicas com capacitâncias de carga e rampas...13 Figura 3. Codificação Bus-Invert...15 Figura 4. Codificação Gray...15 Figura 5. Conversão entre codificação Binária e Híbrida...16 Figura 6. Exemplo de número de transições em codificação Binária e Híbrida...16 Figura 7. Arquitetura do Filtro FIR totalmente paralelo...18 Figura 8. Arquitetura do filtro FIR totalmente sequencial...19 Figura 9. Arquitetura do filtro FIR Semi-paralelo...19 Figura 10. Filtro FIR passa baixa com 40 coeficientes...20 Figura 11. Filtro FIR passa baixa com 11 coeficientes...21 Figura 12. Filtro FIR passa alta...21 Figura 13. Filtro Passa Faixa...22 Figura 14. Filtro Rejeita faixa...22 Figura 15. Exemplo de aplicação do operador crossover...28 Figura 16. Exemplo de aplicação do operador de mutação...29 Figura 17. Pseudocódigo do procedimento GRASP...30 Figura 18. Pseudocódigo da fase de construção....32 Figura 19. Pseudocódigo da fase de busca local....32 Figura 20. Relação entre temperatura e aceitação de movimentos...34 Figura 21. Ferramenta automática para ordenação e particionamento de coeficientes...38 4

LISTA DE TABELAS Tabela 1. Representação do código Híbrido (m=2)...16 Tabela 2. Vizinhança de Elementos...23 Tabela 3. Natureza e Algoritmos Genéticos...26 Tabela 4. Etapas de Algoritmos genéticos...26 Tabela 5. Tipos de representação dos cromossomos...27 Tabela 6. Avaliação de aptidão...28 Tabela 7. Especificações dos Filtros FIR...37 Tabela 8. Número de transições dos coeficientes originais...38 Tabela 9. Número de transições dos coeficientes originais e codificados...39 Tabela 10. Número de transições dos coeficientes originais e codificados com a aplicação de Heurísticas...40 5

LISTA DE ABREVIATURAS E SIGLAS FIR Finite Impulse Response. DSP Digital Signal Processing. PMOS P-type Metal Oxide Semiconductor. CMOS Complementary Metal Oxide Semiconductor. NMOS N-type Metal Oxide Semiconductor. VLSI Very Large Scale Integration. IIR Infinity Impulse Response. DFT Transformada Discreta de Fourier GRASP Greedy Randomized Adaptive Search Procedure LRC Lista Restrita de Candidatos. ASIC Application-Specific Integrated Circuit TDF Transposed Direct-Forms DF Direct Form 6

RESUMO Este trabalho tem como objetivo a implementação de algoritmos baseados em heurísticas para encontrar a melhor ordenação e particionamento de coeficientes de filtros FIR (Finite Impulse Response). Devido às características destes filtros, que envolvem multiplicações de dados de entrada com coeficientes apropriados, em uma operação conhecida como convolução, a busca pela melhor ordenação e particionamento destes coeficientes pode contribuir para a redução da atividade de chaveamento nos barramentos de dados, o que resulta na redução do consumo de potência nos filtros. Desta forma, foram implementados quatro algoritmos para a busca da melhor ordenação e do melhor particionamento dos coeficientes. Os resultados são apresentados em termos da distância de Hamming entre os coeficientes consecutivos. Outra técnica utilizada neste trabalho para a redução do consumo de potência nos filtros é a codificação de operandos. Esta técnica é utilizada para reduzir o consumo de potência na transmissão de informações em barramentos, reduzindo a atividade de chaveamento. Em particular, algumas destas técnicas, tais como Bus-Invert, Gray e codificação Híbrida foram utilizadas neste trabalho juntamente com heurísticas a fim de analisar o seu impacto na redução do consumo de potência dos filtros. Palavras-chave: Filtros FIR, convolução, ordenação e particionamento de coeficientes, codificação de operandos, redução de consumo de potência. 7

ABSTRACT This work aimed the implementation of heuristic-based algorithms for the best ordering and partitioning of coefficients in Finite Impulse Response (FIR) filters. Due to the characteristics of the FIR filter algorithms, which involve multiplications of input data with appropriate coefficients, in an operation known as convolution, the search for the best ordering and partitioning of these operations can contribute for the reduction of the switching activity in data buses, what leads to the minimization of power consumption in the filters. Thus, four algorithms were implemented for the ordering and partitioning of the coefficients and all of them are based on some heuristic approach. The results are presented in terms of the Hamming distance between the consecutive coefficients. Another technique used in this work for the power reduction in the filters is the data encoding. This technique is used for the decrease of power consumed for transmitting information over buses by reducing the switching activity, we have used some of these encoding techniques in the coefficients. Bus-Invert, Gray and Hybrid encoding are used in order to verify the impact on reducing the switching activity of the coefficients after using the implemented heuristic-based algorithms. Keywords: FIR filters, convolution, Ordering and Partitioning of the Coefficients, encoding operands, reduce power consumption. 8

1 INTRODUÇÃO O consumo de potência é um dos principais parâmetros em projetos de circuitos integrados, devido ao fato de não haver um crescimento da eficiência na tecnologia das baterias na mesma velocidade com que há a demanda por equipamentos portáteis operados por bateria. Desta forma, há uma pressão natural para a redução do consumo de potência nestes equipamentos, de tal forma que haja um aumento do tempo de vida útil das suas baterias. Diante disso, surge o desafio de implementar arquiteturas que consumam o mínimo de potência, sem comprometer o seu desempenho, para a utilização nestes dispositivos operados por bateria. Uma classe de algoritmos que tem merecido especial atenção, com aspectos de baixa potência, são os de processamento digital de sinais (Digital Signal Processing DSP). Este interesse tem se intensificado desde a proliferação dos equipamentos eletrônicos portáteis de alto desempenho operados por baterias, tais como telefones celulares, leitores de CD s, equipamentos biomédicos, etc. Em aplicações DSP, uma das operações mais utilizadas inclui a filtragem dos sinais com resposta finita ao impulso (FIR Finite Impulse Response) [1], [2]. Dada a natureza deste tipo de algoritmo, que inclui um elevado número de operações aritméticas de soma e multiplicação, a sua implementação geralmente apresenta um elevado consumo de potência. Este fato se deve principalmente aos circuitos multiplicadores, que são responsáveis por uma parte significativa do consumo de potência global dos equipamentos da área DSP. Desta forma, torna-se importante a aplicação de técnicas de baixa potência em circuitos desta área. No algoritmo de filtro FIR, que envolve o processo de convolução, a ordem da computação dos produtos dos dados de entrada com os coeficientes afeta diretamente a sequencia com que os coeficientes aparecem no barramento de dados. Por outro lado, dado que a operação em filtros FIR é comutativa e associativa, a saída dos filtros FIR é independente da ordem de computação dos produtos dos coeficientes. Desta forma, a ordenação dos coeficientes pode ser utilizada como técnica para a redução do consumo de potência, onde todos os coeficientes são ordenados em um circuito totalmente sequencial, a fim de minimizar o número de transições no multiplexador de entrada e no barramento de dados [3]. Em [4], esta técnica foi estendida para fazer a ordenação e 9

também o particionamento de coeficientes a fim de poder ser utilizada em arquiteturas de filtros FIR do tipo Semi-Paralela, onde o hardware é duplicado e os coeficientes são divididos em grupos. Sendo assim, é escolhido para cada coeficiente em qual partição ele se encaixa melhor, fazendo o cálculo do Hamming entre ele e todos outros coeficientes, para então inseri-lo na melhor partição. Embora as técnicas de [3] e [4] obtenham resultados satisfatórios com a ordenação e particionamento dos coeficientes, estes algoritmos exploram todas as possibilidades possíveis de ordenação, o que os limita a um pequeno grupo de coeficientes, onde as permutações ainda são calculadas em um tempo razoável. No entanto, para um maior número de coeficientes estes algoritmos exaustivos são menos atraentes devido ao tempo necessário para processar um grande número de combinações. Neste trabalho foram implementados dois algoritmos baseados em heurísticas chamados Vizinho Mais Próximo e Bellmore e Nemhauser [5], [6], a fim de alcançar resultados o mais próximo possível de soluções ótimas para a ordenação e particionamento de filtros com uma grande quantidade de coeficientes. Foi testado o uso dos algoritmos na combinação de diferentes números de coeficientes e diferentes larguras de operandos que foram obtidos a partir do algoritmo de Remez através da ferramenta Matlab. A ferramenta proposta calcula automaticamente a distância de Hamming entre coeficientes consecutivos. Métodos de codificação de dados são bastante utilizados para a redução de consumo potência nos barramentos, através da redução de atividade de chaveamento. Sendo assim, foram utilizadas algumas dessas técnicas de codificação, tais como Bus- Invert [7], Gray [8] e Codificação Hibrida [4] a fim de verificar o impacto na redução da atividade de chaveamento dos coeficientes. Os resultados mostram que dependendo da heurística utilizada, o número de transições pode ser reduzido consideravelmente. Com o uso da heurística Bellmore e Nemhauser aplicado nos coeficientes da codificação híbrida, mais de 70% de redução no número de transições pode ser alcançado. 10

2 CONSUMO DE POTÊNCIA EM CIRCUITOS CMOS Um dos principais parâmetros no projeto de circuitos digitais é o consumo de potência. Sendo assim, a potência de pico é utilizada a fim de analisar a confiabilidade dos circuitos, porém o fator mais importante é o consumo de potência médio durante determinado tempo [9]. Existem três fontes principais de consumo de potência em circuitos CMOS, sendo elas: consumo de potência estática, consumo de potência de curto circuito e o consumo de potência dinâmica. O consumo de potência estática é causado pelas correntes de fuga, o consumo de potência de curto circuito é causado pela corrente direta da fonte de alimentação para o terra durante o processo de chaveamento de uma porta lógica, e o consumo de potência dinâmica é dado pela carga e descarga das capacitâncias dos circuitos. Dentre estas fontes de consumo de potência, a responsável pelo maior gasto de energia, na maioria dos casos, é o consumo de potência dinâmica, para tecnologias acima de 100nm. 2.1 Consumo de Potência Dinâmica Este trabalho tem por objetivo reduzir a potência dinâmica em filtros FIR, pois esta parcela representa a maior fonte de consumo de potência em circuitos digitais CMOS para tecnologias acima de 100nm. A potência dinâmica consumida ocorre pela carga e descarga da capacitância dos circuitos. A componente de chaveamento dinâmica de dissipação de potência (P din ) em uma transição na saída de uma porta carregada por um capacitor C L é dada de acordo com a Equação 1, onde A não é simplesmente f (frequência), mas em geral uma probabilidade de atividade normalizada a (menor do que 1 para modelo de atraso zero) é computada como função da estatística de entrada e modelos lógicos, pois nem todos os nós mudam em um determinado ciclo de relógio. P = C AV = afc V (1) A componente de chaveamento de energia drenada da fonte de alimentação para uma transição 0 na saída de uma porta CMOS é dada por, onde é a capacitância de carga no nó de saída. A Figura 1 mostra um modelo de circuito destacando a componente de potência de chaveamento [10]. 11

Figura 1. Caracterização da potência dinâmica de uma porta CMOS Considerando uma transição 0 na saída do circuito, pode-se estabelecer a potência instantânea (ignorando a potência de curto-circuito) de acordo com a Equação 2, onde é a corrente drenada da fonte de alimentação e que circula no capacitor e é dada de acordo com a Equação 3 [10]. = = (2) = A energia drenada da fonte de alimentação para uma transição 0 no nó de saída é dada de acordo com a Equação 4. de saída, = = = Para a transição na saída do circuito, a energia armazenada no capacitor de carga E cap é dada pela Equação 5. E cap = T T vdd i Pcap t) dt = V L( t) dt = CLVoutdVout = out (3) (4) 1 2 ( CLVdd (5) 2 0 0 0 Conclui-se que metade da energia drenada da fonte de alimentação é armazenada no capacitor de carga, e metade da energia é dissipada na rede PMOS. Para uma transição V 0 dd 1 energia armazenada no capacitor ( 2 C na saída, nenhuma carga é drenada da fonte de alimentação e a V 2 L dd ) é dissipada na rede NMOS pull-down. A Figura 2 mostra que a componente dinâmica normalizada é linearmente proporcional à capacitância de carga C e a extrapolação para C = 0 L L é somente 12

dependente dos fatores parasitas da porta, de acordo com a Equação 4 [11]. Deste modo, a potência dinâmica ( P din) pode ser macro modelada, para um projeto baseado em células, de acordo com a Equação 6, onde carga extrínseca da porta e CL é a capacitância de Ci é a carga intrínseca para uma célula lógica dada. 1 2 P din = afvdd ( Ci + CL ) (6) 2 Como pode ser visto na Figura 2, a rampa de entrada não afeta significativamente a componente de potência dinâmica, quando esta é controlada para ser rápida o suficiente em relação à saída. Para uma rampa de entrada infinita ( T 0ns) até uma variação mais lenta na entrada T=2ns (isto é, entrada T in = 0,4ns / V para V dd = 5V ), a potência dinâmica tem como fator de controle fundamentalmente a carga/descarga do capacitor externo. Para rampas de entrada extremamente lentas (T=25ns ou mais), observa-se a condição que tende ao regime de chaveamento adiabático [12]. Neste regime, pode-se ter uma componente dinâmica tão pequena quanto se queira, ao custo de circuitos extremamente lentos (como mostrado para uma rampa de entrada de 25ns na Figura 2). O regime adiabático não é considerado na modelagem da potência dinâmica, dado que neste regime, a principal componente de dissipação de potência é o curto-circuito. Figura 2. Gráfico da variação das correntes dinâmicas com capacitâncias de carga e rampas 13

3 CODIFICAÇÃO PARA BAIXO CONSUMO DE POTÊNCIA Codificação tem sido muito utilizada em sistemas de comunicação para controlar as estatísticas dos símbolos de dados transmitidos, ou em outras palavras, para controlar o espectro do sinal transmitido [8]. Técnicas para baixo consumo de potência na comunicação global em CMOS VLSI utilizando métodos de codificação de dados podem ser encontradas em [9], onde é comprovado que essas técnicas podem reduzir a energia consumida para a transmissão de informações sobre os caminhos de carga pesada de comunicação (barramento), reduzindo a atividade de chaveamento. Neste trabalho foram utilizadas as codificações Bus-Invert, Gray e a codificação híbrida, com os seguintes objetivos: i) verificar o impacto na redução da atividade de chaveamento dos coeficientes de um filtro FIR e ii) verificar a melhor ordenação dos coeficientes quando utilizando-se os algoritmos heurísticos. 3.1 Codificação Bus-Invert O método de codificação Bus-Invert faz a codificação das palavras a fim de reduzir o consumo de potência, onde cada uma das palavras pode ter o seu valor invertido antes da sua transmissão, se isso proporcionar uma redução no número de transições [7]. Neste método uma linha extra de barramento é utilizada, chamada invert. O método faz a analise de duas palavras de dados consecutivas do barramento. Se a distância de Hamming entre a palavra seguinte e a atual for menor do que W/2, a palavra seguinte é enviada como está, com invert igual a 0. Caso contrário, cada bit da palavra seguinte é invertido e o invert recebe valor igual a 1, indicando que a palavra foi invertida. O método Bus-Invert é explorado em [7] em seqüências de palavras para minimizar transições. Por exemplo, palavras podem ser invertidas, reordenadas e então transmitidas. A Figura 3 mostra um exemplo de aplicação de Bus-Invert 14

Figura 3. Codificação Bus-Invert 3.2 Codificação Gray Um dos métodos de codificação mais utilizado para redução da atividade de chaveamento é a codificação Gray [8]. Em uma seqüência de contagem em código Gray apenas um bit muda de representação entre valores consecutivos, podendo produzir, desta forma, uma redução bastante significativa no número de transições em relação ao código binário. Um exemplo de transformada de codificação binária em codificação Gray é apresentada na Figura 4. Figura 4. Codificação Gray 3.3 Codificação Híbrida A idéia da codificação híbrida é dividir os operandos em grupos de m-bits, codificando cada grupo utilizando código Gray e usando o método binário para propagar o carry entre estes grupos [4]. Desta forma, o número de transições dentro de cada grupo é minimizado e uma estrutura regular pode ser facilmente construída. A Tabela 1 15

exemplifica a codificação híbrida para 4 bits com m=2. Tabela 1. Representação do código Híbrido (m=2) Dec Hyb Dec Hyb Dec Hyb Dec Hyb 0 0000 4 0100 8 1100 12 1000 1 0001 5 0101 9 1101 13 1001 2 0011 6 0111 10 1111 14 1011 3 0010 7 0110 11 1110 15 1010 O código híbrido pode facilmente ser aplicado em barramentos, onde economia de energia pode ser mais facilmente alcançada quando existe um maior grau de correlação entre os bits. Uma característica da codificação híbrida é que a conversão entre Binário e Híbrido é muito simples, como mostra a Figura 5. Transformando palavras de W bits entre Binário e Híbrido em qualquer direção, tudo que é necessário é uma porta EXOR em cada grupo de m=2. Desta forma, o overhead em termos de transcodificação é reduzido. Fazer esta codificação é muito desejável mesmo em caso de endereços de barramentos. A Figura 6 mostra um exemplo de numero de transições necessárias para os códigos Binários e Híbridos. Figura 5. Conversão entre codificação Binária e Híbrida Figura 6. Exemplo de número de transições em codificação Binária e Híbrida 16

4 FILTROS DE RESPOSTA FINITA AO IMPULSO - FIR Em processamento de sinais, há muitos casos em que um determinado sinal de entrada para um determinado sistema apresenta informações desnecessárias ou mesmo ruídos adicionais que podem degradar a qualidade do que se deseja transmitir. Nestes casos, pode-se remover ou filtrar as amostras inúteis. Por exemplo, no caso do sistema de telefonia, não há razão para transmitir freqüências muito altas desde que todos os sinais estejam dentro de uma determinada faixa (400 a 3.400 Hertz). Portanto, neste caso, todas as frequências acima e abaixo dessas frequências são filtradas. A faixa de freqüência entre 400 e 3.400 Hz, as quais não são filtradas, são conhecidas como banda passante ( passband ) e a banda de freqüência que é bloqueada é conhecida como banda rejeitada ( stopband ). Alguns filtros podem ser utilizados para realizar a operação necessária de filtragem do sinal dentro de uma determinada faixa útil. Alguns exemplos são filtros de resposta finita ao impulso (FIR Finite Impulse Response), filtros de resposta infinita ao impulso (IIR Infinite Impulse Response) e filtros adaptativos. Neste trabalho, os filtros FIR são utilizados como estudo de caso para o uso das técnicas de redução da atividade de chaveamento nos barramentos de dados. A seguir são apresentadas as principais características deste tipo de filtro. 4.1 Características A operação de filtragem de resposta finita ao impulso (FIR) é realizada a partir do processo de convolução das amostras dos dados de entrada com a resposta ao impulso unitária. Um filtro FIR pode ser matematicamente expresso pelo somatório dos pesos das ultimas N amostras de dados de entrada, como apresentado na Equação 7. N 1 i= 0 Y [ n] = H[ i] X [ n i] (7) Na equação 7, X representa o sinal de entrada, H os coeficientes do filtro, Y o sinal de saída, n é a posição atual, N é o numero de coeficientes (taps) do filtro. Essa é uma operação de convolução dos coeficientes do filtro sobre o sinal. Os coeficientes do filtro FIR são obtidos pela Transformada Discreta de Fourier (DFT Discrete Fourier Transform) da freqüência necessária da função de transferência, aplicando algum método de janelamento. Nesse trabalho foram utilizados algoritmos de 17

Remez para o cálculo dos coeficientes. A forma mais direta de implementação de filtros FIR é a partir da arquitetura totalmente paralela, onde unidades de atraso são usadas para armazenar previamente amostras de sinal. Na forma direta, em cada ciclo de relógio uma nova amostra e os correspondentes coeficientes do filtro são simultaneamente aplicados a cada multiplicador. O resultado de todos multiplicadores são somados simultaneamente. Essa arquitetura é apresentada na figura 7. Figura 7. Arquitetura do Figura Filtro FIR 5. totalmente paralelo Na implementação totalmente seqüencial um conjunto de operações de multiplicações e somas é realizado para cada amostra de dados de sinal de entrada. Isso é realizado, multiplicando-se as N amostras de entrada pelos coeficientes e somando os resultados parciais para gerar o sinal de saída. Na implementação totalmente seqüencial a idéia básica é de reduzir os requisitos do hardware reutilizando-o o máximo possível. A Figura 8 mostra a arquitetura totalmente seqüencial do filtro FIR. A fim de acelerar as computações do filtro FIR, uma arquitetura semi-paralela pode ser implementada, onde os requisitos de hardware são duplicados com relação à totalmente seqüencial, permitindo que duas amostras possam ser processadas simultaneamente. A figura 9 mostra a arquitetura semi-paralela do filtro FIR. 18

Figura 8. Arquitetura do filtro FIR totalmente sequencial Figura 9. Arquitetura do filtro FIR Semi-paralelo 4.2 Tipos de Filtros Existem vários diferentes tipos de respostas de filtros. Cada um apresenta uma resposta única baseada: i) na freqüência de corte do tipo do filtro, ii) no número de coeficientes utilizado e iii) no nível de tolerância utilizado. Para melhor entendimento pode-se observar estes atributos na Figura 10, e o comportamento obtido pelos diferentes tipos de filtros também serão mostrados a seguir. A Figura 10 demonstra a curva de um filtro FIR passa baixa com 40 coeficientes 19

(taps) onde, passband ripple representa a tolerância da banda passante, stopband ripple a banda de parada e stopband attenuation representa a atenuação na banda de parada. A Figura 11 apresenta o mesmo filtro FIR da Figura 10 (passa baixa), porém representado com apenas 11 coeficientes, o que mostra uma grande redução na precisão do sinal. Isso mostra a importância do número de coeficientes na resposta do filtro, que é representada pelo processo de convolução. A representação de um filtro que rejeita as baixas freqüências e aceita as altas freqüências é apresentado na Figura 12. Este filtro é chamado de Passa Alta. A Figura 13 apresenta um filtro do tipo passa faixa (passband), que rejeita as freqüências extremas e aceita as freqüências intermediarias. O filtro rejeita faixa (stopband) mostrado na Figura 14 apresenta comportamento inverso ao passband, aceitando apenas as freqüências das extremidades e rejeitando as freqüências intermediárias. Figura 10. Filtro FIR passa baixa com 40 coeficientes 20

Figura 11. Filtro FIR passa baixa com 11 coeficientes Figura 12. Filtro FIR passa alta 21

Figura 13. Filtro Passa Faixa Figura 14. Filtro Rejeita faixa 22

5 HEURÍSTICAS Heurísticas são algoritmos que têm por objetivo encontrar boas soluções, ocasionalmente a melhor, sem grande custo computacional para problemas que exigem alto poder computacional para encontrar soluções ótimas. Existem muitas heurísticas na literatura, as quais podem ser classificadas como construtivas ou de refinamento. Neste trabalho apenas heurísticas construtivas são utilizadas. 5.1 Heurísticas Construtivas Heurísticas construtivas [5], [6] têm por características a construção de soluções do tipo elemento a elemento, ou seja, faz escolhas ótimas locais, escolhendo sempre a melhor solução para o elemento atual, sem tratamento em busca de ótimos globais. Algumas heurísticas construtivas encontradas na literatura são: Heurística do Vizinho mais Próximo, Heurística de Bellmore e Nemhauser e Heurística da Inserção Mais Barata. Dentre as heurísticas construtivas apresentadas acima, foram implementadas neste trabalho, a do Vizinho Mais Próximo e a de Bellmore e Nemhauser. 5.1.1 Heurística do Vizinho mais Próximo Nesta heurística parte-se de um elemento inicial e adiciona-se como elemento seguinte o considerado melhor vizinho levando em conta uma determinada função de custo. Tomando como exemplo os valores inseridos na Tabela 2 como sendo o custo para inserção de um elemento. Tabela 2. Vizinhança de Elementos Elemento E1 E2 E3 E4 E5 E6 E1 0 2 1 4 9 1 E2 2 0 5 9 7 2 E3 1 5 0 3 8 6 E4 4 9 3 0 2 5 E5 9 7 8 2 0 2 E6 1 2 6 5 2 0 Aplicando a heurística do Vizinho mais Próximo aos elementos da Tabela 2, temse então como ordem de menor custo encontrada ([E1] [E3] [E4] [E5] [E6] [E2]) através 23

dos seguintes passos (considerando como elemento inicial o E1): Passo 1: Adiciona-se E3, como elemento seguinte, já que é o elemento com menor custo na vizinhança de E1. Lista atual ([E1] [E3]). Passo 2: Adiciona-se o E4, já que o E1, que é o elemento de menor custo, já foi inserido, sendo assim então é inserido o segundo melhor vizinho. Lista atual ([E1] [E3] [E4]). Passo 3: Adiciona-se E5, já que é o melhor vizinho de E4 disponível. Lista atual ([E1] [E3] [E4] [E5]). Passo 4: Adiciona-se E6, já que é o melhor vizinho de E5 disponível. Lista atual ([E1] [E3] [E4] [E5] [E6]). Passo 5: Adiciona-se E2, que é o único elemento restante. Lista final ([E1] [E3] [E4] [E5] [E6] [E2]). O custo total dos elementos da lista é dado por: CustoTotal = custo (E1,E3) + custo(e3, E4) + custo(e4, E5) + custo(e5, E6) + custo(e6, E2) = 12. 5.1.2 Heurística de Bellmore e Nemhauser Nesta heurística, parte-se de um elemento inicial, fazendo-se então a inserção de seu melhor vizinho. A partir daí sempre são analisados os dois extremos da lista, onde caso o melhor custo seja o da inserção do melhor vizinho do extremo esquerdo da lista, é inserido então este vizinho como elemento extremo esquerdo da lista. Caso o extremo direito que tenha o melhor vizinho, então é inserido o elemento como extremo direito da lista. Considerando-se os valores da Tabela 1, tem-se como resposta a seguinte seqüência de elementos ([E2] [E6] [E1] [E3] [E4] [E5]), que são adquiridos através dos seguintes passos (partindo de E1 como elemento inicial): Passo 1: Adiciona-se E3, já que é o melhor vizinho de E1. Lista atual ([E1] [E3]). Passo 2: Adiciona-se E6, pois dentre os elementos ainda não adicionados, analisando os melhores vizinhos de cada extremo da lista, tem-se que o melhor vizinho de E1 é E6 com custo igual a 1, enquanto no outro extremo da lista tem-se E3 com seu melhor vizinho E4 com custo 3. Desta forma, adiciona-se E6 ao extremo esquerdo da rota. Lista atual ([E6] [E1] [E3]). Passo 3: Adiciona-se E2 no extremo esquerdo da lista, pois dos elementos ainda 24

não adicionados, o melhor vizinho de E6 é E2 com custo igual a 2, e a que tem menor distância de E3 é E4 com custo 3. Lista atual ([E2] [E6] [E1] [E3]). Passo 4: Adiciona-se E4 no extremo direito da lista, pois o melhor vizinho de E2 é E5 com custo igual 7 e a que tem menor distância de E3 é E4 com custo igual a 3. Lista atual ([E2] [E6] [E1] [E3] [E4]). Passo 5: Como o único elemento restante é o E5, basta ver em qual extremo sua inserção possui menor custo. Como vizinho de E2 seu custo é igual a 7, e como vizinho de E4 seu custo é 2, então é inserido no extremo direito. Lista final ([E2] [E6] [E1] [E3] [E4] [E5]). O custo total é dado por: CustoTotal = custo(e2,e6) + custo(e6, E1) + custo(e1, E3) + custo(e3, E4) + custo(e4, E5) = 16 5.2 Metaheurísticas Metaheurísticas são procedimentos destinados a encontrar uma boa solução, eventualmente a ótima, consistindo na aplicação, em cada passo, de uma heurística subordinada, a qual tem que ser modelada para cada problema específico [16]. Contrariamente às heurísticas convencionais, as metaheurísticas são de caráter geral e têm condições de escapar de ótimos locais. Para isso, utiliza-se de técnicas que serão apresentadas a seguir, que dão a possibilidade de alcançar os ótimos globais. O que diferencia uma Metaheurísticas de outra é a técnica utilizada para escapar dos ótimos locais. As metaheurísticas podem ser classificadas em duas categorias de acordo com o princípio usado para explorar o espaço de soluções: busca local e busca populacional. Nas metaheurísticas de Busca Local, a exploração do espaço de soluções é feita através de movimentos, os quais são aplicados a cada passo da solução atual, a fim de gerar soluções melhores que a atual. Algumas Metaheurísticas baseadas nesta técnica encontradas na literatura são: Multi-Start, Simulated Annealing e Busca Tabu. As metaheurísticas de Busca Populacional têm por característica manter um conjunto de boas soluções e combiná-las para a produção de soluções melhores. Um exemplo deste tipo de algoritmo são os Algoritmos Genéticos e GRASP. Algumas destas metaheurísticas serão apresentadas nas próximas seções, onde as de maior interesse e maior detalhamento neste trabalho serão: Algoritmos Genéticos e GRASP. 25

5.2.1 Algoritmos Genéticos Os algoritmos genéticos [15], [16], [20] são técnicas baseadas na teoria da evolução, nos quais as variáveis são representadas como genes de um cromossomo. Juntamente com estratégias evolucionárias e programação evolutiva formam uma classe de pesquisa baseado em evolução natural. Algoritmos Genéticos são métodos que simulam, através de algoritmos, os processos de evolução natural e genética buscando resolver problemas de otimização onde o espaço de busca é muito grande e os métodos convencionais não se demonstram eficientes. O algoritmo básico foi estruturado de forma que as informações referentes a um determinado sistema pudessem ser codificadas de maneira análoga aos cromossomos biológicos. Tabela 3. A analogia entre o sistema natural e os algoritmos genéticos é apresentada na Tabela 3. Natureza e Algoritmos Genéticos Natureza Algoritmos Genéticos Cromossomo Gene Alelo Loco Genótipo Fenótipo Indivíduo Geração Palavra binária, vetor, etc Característica do Problema Valor da característica Posição da palavra, vetor, etc Estrutura Estrutura submetida ao problema Solução Ciclo Eles ocupam lugar de destaque entre os paradigmas da computação evolutiva. Além disso, têm resultados bastante aceitáveis com relação aos recursos empregados e pela ampla gama de problemas aplicáveis. O Algoritmo Genético para um determinado problema deve ter os componentes e etapas da Tabela 4: Tabela 4. Etapas de Algoritmos genéticos 1 Uma representação genética para a solução do problema; 2 Decodificação do cromossomo; 3 Avaliação; 5 Operadores genéticos; 6 Substituição da população. 26

5.2.1.1 Representação A representação das possíveis soluções do espaço de busca de um problema define a estrutura do cromossomo a ser manipulado pelo algoritmo [20]. Este cromossomo depende do tipo de problema e do que, essencialmente, se deseja manipular geneticamente. Alguns tipos de representação são apresentados na Tabela 5. Tabela 5. Tipos de representação dos cromossomos Representação Problemas Binária Números Reais Permutação de Símbolos Símbolos Repetidos Numéricos, Inteiros Numéricos Baseados em Ordem Grupamento 5.2.1.2 Decodificação A decodificação do cromossomo consiste basicamente na construção de uma solução real do problema a partir do cromossomo. O processo de decodificação constrói a solução para que esta seja avaliada pelo problema. 5.2.1.3 Avaliação da População A função objetivo gera uma avaliação do grau de adaptação de cada cromossomo da população. Esta função está diretamente ligada às especificações do problema. A função efetua a avaliação de modo que é atribuído um valor de aptidão as possíveis soluções através de uma função de aptidão, que é definida conforme o problema que se tem a intenção de solucionar. A geração desta avaliação de aptidão torna-se a parte mais importante para o procedimento do Algoritmo Genético. O retorno desta função, que ordena os indivíduos conforme a sua adaptação, é uma característica intrínseca ao indivíduo, que indicará biologicamente, qual é a habilidade que um indivíduo possui para sobreviver e produzir a melhor resposta. No Algoritmo Genético essa etapa é a mais crítica, pois já que as funções deverão ser avaliadas para cada cromossomo de cada população durante todo o processo evolutivo. Em um exemplo de função de avaliação podemos considerar uma função f(x) = x², que mede a aptidão de cada cromossomo, onde a Tabela 6 apresenta a aptidão de dois cromossomos, onde podemos notar que a função retornou um valor bem maior para C1, 27

o que implica que ele está mais apto que C2. Tabela 6. Avaliação de aptidão Cromossomo x f(x) C1 0 0 1 0 0 1 9 81 C2 0 0 0 1 0 0 4 16 5.2.1.4 Operadores Genéticos O principal objetivo dos operadores genéticos é de serem capazes de formar uma nova população através de sucessivas operações para que obtenha um resultado satisfatório no final do processo. Os operadores são de extrema importância para que se tenha uma diversificação da população e manter as características de adaptação adquiridas das antigas gerações. Um exemplo de operador é o operador Crossover, onde pares de genitores são escolhidos aleatoriamente da população, baseado na aptidão, e novos indivíduos são criados a partir da troca do material genético, sendo assim, os descendentes serão diferentes de seus pais, mas com características genéticas de ambos. A Figura 15 apresenta um exemplo simples de utilização deste operador, onde é selecionado aleatoriamente um ponte de corte entre os dois genitores, gerando dois novos indivíduos, onde de acordo com a função de avaliação vista anteriormente D1 é um cromossomo mais apto que seus genitores, entretanto, D2 é um individuo medíocre (baixa avaliação em f(x) = x²). Figura 15. Exemplo de aplicação do operador crossover Os cromossomos criados a partir do operador de crossover são então submetidos ao operador de mutação (com uma probabilidade ). Mutação é um operador exploratório que tem por objetivo aumentar a diversidade da população. O operador de mutação troca o conteúdo de uma posição do cromossomo, com uma determinada probabilidade, que normalmente é baixa (menor que 1%), um exemplo 28

desta aplicação pode ser visto na Figura 16. Figura 16. Exemplo de aplicação do operador de mutação 5.2.1.4 Substituição da população A substituição consiste na alteração da antiga população pela nova população gerada com os cromossomos escolhidos e modificados na fase dos operadores genéticos, formando uma nova população. Os critérios com que selecionam os pais não necessariamente têm que ser os mesmos usados para selecionar os filhos. Para atender o critério de substituição existem quatro modelos: Substituição Imediata: onde os descentes substituem seus progenitores. Substituição por Fator Cheio: onde os descentes substituem aqueles da população que são mais parecidos com eles. Substituição por Inserção: os membros da população de criadores são selecionados para serem eliminados sendo substituídos pelos seus decentes. Substituição por Inclusão: onde os descendentes são somados aos progenitores gerando uma única população, de onde serão selecionados apenas os melhores. 5.2.1.5 Critério de Parada Um critério de parada de um algoritmo genético é verificado através de um teste, e se a condição de parada for satisfatória é parada a execução do algoritmo. Caso não seja atingido o critério de parada estabelecido, a população retorna às fases do algoritmo para que se ache a melhor solução. Outro critério da parada pode ser quando o Algoritmo Genético atingir um dado número de gerações ou quando a função objetivo chegar a um determinado valor definido previamente. Outro critério poderá ser a convergência, ou seja, quando não ocorrer melhoramento significativo no cromossomo de maior aptidão por um dado numero de gerações, o processamento pára. 29

5.2.2 GRASP A metaheurística GRASP [15],[16],[17] (Greedy Randomized Adaptive Search Procedure) é um algoritmo muito aplicado a problemas de otimização combinatória. Esta metaheurística consiste em criar uma solução inicial construtiva, onde uma solução viável para o problema, e depois efetuar uma busca local para melhorar a qualidade da solução. Seu diferencial para outros métodos está na geração dessa solução inicial, baseada nas três primeiras iniciais de sua sigla em inglês: gulosa (Greedy), aleatória (Randomized) e adaptativa (Adaptive). Algoritmos GRASP são ditos construtivos por privilegiar a geração de uma solução inicial de melhor qualidade para utilizar a busca local apenas para pequenas melhorias. A estratégia de construção de uma solução no GRASP consiste na definição de um critério de avaliação dos elementos que podem ser inseridos em um conjunto que, ao final do processo, será uma solução para o problema de otimização que se pretende resolver. Esse critério adapta-se à solução já construída, de forma que a valorização dos elementos muda durante a construção da solução. Entretanto, esse critério não é tomado como referência absoluta para a decisão do próximo elemento a ser inserido, havendo uma escolha aleatória entre os melhores elementos a cada iteração. A melhor solução obtida ao final da execução do GRASP é a solução final. A Figura 17 mostra um pseudocódigo para o GRASP. Figura 17. Pseudocódigo do procedimento GRASP 5.2.2.1 Fase de Construção A fase de construção do GRASP é também iterativa, onde uma solução é construída elemento a elemento. Cada inserção de um novo elemento é feita através da 30

escolha aleatória em uma lista restrita de candidatos (LRC). Considere para a construção da LRC que o problema aqui tratado é de maximização de uma função f. A LRC é composta de elementos candidatos à solução, avaliados de acordo com o benefício associado a sua inclusão na solução parcial através de uma função gulosa g. Os elementos participantes da LRC podem ser escolhidos através de duas formas: pelo número de elementos ou pela qualidade dos elementos [18]. Na primeira forma, os elementos candidatos são ordenados em ordem decrescente de benefício segundo a função g e os p primeiros elementos são incluídos na LRC. O valor de p é definido como p = 1 + a (a 1), onde a é número total de candidatos (a é um dado de entrada que tem valores definidos no intervalo [0,1]). Note que, se a = 0 um algoritmo totalmente guloso é executado, já que só é possível a escolha de um único elemento a ser inserido na solução. Por outro lado, se a = 1, a lista conterá todos os possíveis candidatos, o que resultará em um algoritmo aleatório. Na segunda forma, considerando um problema de maximização, emin = min{g(e)} o menor incremento a solução parcial de acordo com g e emax = max{g(e)}, o maior incremento, a LRC será constituída dos elementos candidatos à solução cujo valor retornado pela função g esteja no intervalo [(1 a)(emin emax) + emax, emax]. Como já citado, a é um valor definido no intervalo [0,1]. Neste caso, se a = 1, estará sendo executado um algoritmo absolutamente guloso, já que somente elementos de maior incremento emax podem ser inseridos na solução e se a = 0, a lista conterá todos os possíveis candidatos, o que resultará em um algoritmo aleatório. Portanto é perceptível que a escolha do valor de a é um ponto importante no desempenho da metaheurística GRASP. A influência desta escolha na qualidade da solução construída é estudada em [18]. Na Figura 18 é mostrado o pseudocódigo da rotina de construção de uma solução. 31

Figura 18. Pseudocódigo da fase de construção. 5.2.2.2 Fase de Busca Local A busca local é uma tentativa de melhoria da solução obtida na fase de construção (Solução). Nesta fase, percorre-se a vizinhança da solução corrente buscando uma solução de melhor qualidade. Por exemplo, em um problema onde o objetivo é a maximização de uma função f, entende-se que uma solução t é a melhor solução se f (t) > f (Solução). Se não existir uma melhor solução na vizinhança, a solução corrente é considerada um ótimo local. A busca termina quando um ótimo local for atingido. O pseudocódigo da busca local é apresentado na Figura 19. Figura 19. Pseudocódigo da fase de busca local. 5.2.2.3 Critério de Parada O critério de parada do algoritmo é normalmente dado por um valor N de iterações indicado pelo usuário. Este valor corresponde à quantidade de soluções factíveis encontradas pela fase construtiva em que foram aplicadas a busca local. Dentre as soluções geradas é escolhida aquela de melhor resultado gerou. 32

5.2.3 Outras Metaheurísticas Algumas das outras metaheurísticas existentes na literatura serão apresentadas a seguir: 5.2.3.1 Multi-Start Esta é uma metaheurística que consiste em fazer amostragens do espaço de soluções, aplicando às soluções procedimentos de refinamento [16]. As amostras normalmente são obtidas aleatoriamente, a fim de gerar amostras bem diversificadas com o intuito de escapar das soluções ótimas locais. Como critério de parada neste método, normalmente é utilizado um tempo máximo de execução ou um número N de iterações que se considere suficiente. Este método tem como principal vantagem a sua simplicidade de implementação. 5.2.3.2 Simulated Annealing Uma das técnicas mais populares de busca local é a chamada Simulated Annealing [15],[16], que é uma analogia à técnica utilizada na termodinâmica, ao simular o resfriamento de um conjunto de átomos aquecidos, operação conhecida como recozimento. Esta técnica é inicializada a partir de uma solução inicial qualquer, que pode ser obtida aleatoriamente. Em seguida, o procedimento principal consiste de um loop que gera aleatoriamente, em cada uma das iterações, um único vizinho s da solução corrente s. Considerando esta técnica para um problema de minimização, sendo a variação de valor da função objetivo ao mover-se para uma solução vizinha candidata, ou seja, =. Se < 0 o movimento é aceito e a solução vizinha passa a ser a nova solução corrente. Caso 0 a solução pode também ser aceita, mas com uma probabilidade dada por, onde T é um parâmetro da função que regula a probabilidade de se aceitar soluções de pior custo chamado temperatura. Esta probabilidade de aceitar movimentos de pior custo é utilizada a fim de escapar dos ótimos locais. A temperatura T é reduzida gradativamente quando o número de iterações aumenta para diminuir a aceitação de movimentos de piora conforme o algoritmo evolui. 33

A Figura 6 mostra a relação entre temperatura e a probabilidade de aceitação de um movimento, onde se pode claramente notar que quanto menor for a temperatura, menor é a probabilidade de aceitar o movimento, até que quando a temperatura fica próxima a zero a aceitação de novos movimentos se torna praticamente nula também. Sendo assim, o critério de parada do algoritmo é dado pela sua aproximação da temperatura ao valor 0. Figura 20. Relação entre temperatura e aceitação de movimentos 5.2.3.3 Busca Tabu O Busca Tabu [14],[15],[16], é um método de busca local que explora as soluções movendo-se de um vizinho para o seu melhor vizinho. Esta técnica, juntamente com uma estrutura de memória para armazenar as soluções geradas possibilita escapar dos ótimos locais. O membro s de uma vizinhança V com melhor valor nessa região segundo a função f(.) torna-se a nova solução corrente mesmo que s seja pior que s, isto é, que f(s ) > f(s) para um problema de minimização. O critério de escolha do melhor vizinho é utilizado para escapar de um ótimo local. Porém, isto pode fazer com que o algoritmo entre em um processo de ciclagem, ou seja, acabe sempre gerando a mesma solução. 34

Para evitar este problema, foi criada uma lista chamada Tabu, que é uma lista que contém movimentos proibidos. Ela é uma lista que contém os movimentos reversos aos últimos T movimentos realizados, e é uma fila de tamanho fixo, que quando cheia, ao inserir um novo elemento, o mais antigo é retirado da lista, podendo novamente ser escolhido. A lista Tabu, embora reduza significativamente o risco de ciclagem, por não deixar ser feita a escolha de uma mesma solução por N iterações, ela introduz um novo problema ao algoritmo, que ao proibir os movimentos da lista, podem também proibir que o algoritmo passe por novos caminhos que poderiam levar a uma melhor escolha. Para contornar este problema inserido pela lista Tabu, é utilizada uma função de aspiração, que em determinadas circunstâncias permite a remoção do movimento da lista Tabu. Para cada movimento v a função de aspiração retorna um valor A(v), que representa o valor aspirado pelo algoritmo. Um exemplo de utilização da função de aspiração é a permissão de movimentos Tabu apenas se ele conduzir a um vizinho melhor que o melhor vizinho encontrado até o momento. O critério de parada deste algoritmo é normalmente dado ao atingir determinado número de iterações. 5.2.3.4 Colônia de Formigas Esta técnica [15], [16] tem por objetivo simular o comportamento de uma colônia de formigas, que cooperam entre si para resolver um problema de otimização por meio de comunicação muito simples. No comportamento das formigas, ao deslocarem-se, elas deixam um rastro de uma substância chamada feromônio, que é usada para se comunicarem quimicamente. Na computação, se considera um conjunto de m formigas, cada uma localizada em diferentes áreas de interesse (no nosso caso coeficientes), que se move de um ponto para outro. O algoritmo executa N iterações, onde N é o número total de pontos. Em cada iteração do algoritmo, m formigas constroem uma solução em N. Estando em um ponto i, a formiga faz uma escolha probabilística do próximo ponto j e o arco (i, j) é adicionado à solução. A quantidade de feromônios depositada no arco (i,j), representa a atratividade de escolher este caminho. As formigas depositam uma quantidade de feromônios proporcional à qualidade da solução produzida. Sendo assim, quanto menor for o custo 35

do caminho percorrido, maior será a quantidade de feromônio depositado sobre seus arcos, o que ajuda a dirigir a busca para soluções satisfatórias. Para não repetir caminhos as formigas possuem um esquema de memória baseado no mecanismo de Busca Tabu, o que evita que a formiga passe duas vezes no mesmo caminho em uma mesma rota. A tabela de decisão =[ ] do nó i é obtida pela composição dos valores locais de feromônios com os valores heurísticos locais, como mostra a Equação 8. Onde: = [ ] [ ] [ ] [ ] ϵn (8) (t) é a quantidade de feromônio no arco (i,j) na iteração t. = é o valor heurístico, é o peso do arco (i, j). N é o conjunto de nós vizinhos ao nó i; e são os parâmetros que controlam o peso relativo entre o feromônio e a distância entre os dois pontos. Assim, um alto valor de significa que o valor do feromônio é muito importante, e deste modo, as formigas tendem a escolher caminhos pelos quais outras formigas já passaram. E se o valor de for muito alto, a formiga tende a eleger a cidade mais próxima. 36

6 RESULTADOS Nesta seção são apresentados os resultados obtidos com a utilização dos algoritmos baseados em heurísticas que foram descritos anteriormente. Estes algoritmos foram aplicados para a redução da distancia de Hamming entre coeficientes consecutivos, onde o distancia de Hamming representa os bits que diferem entre duas palavras consecutivas. Os coeficientes dos filtros foram gerados a partir da ferramenta MATLAB utilizando algoritmo de Remez. Foram utilizados os mesmos filtros FIR apresentados em [10]. As cinco colunas da Tabela 7 apresentam as especificações do filtro, onde Filter é apenas um identificador do filtro, passband e stopband são freqüências normalizadas, #tap é o numero de coeficientes de cada filtro e width é o número de bits utilizado para representação das palavras de cada coeficiente. Tabela 7. Especificações dos Filtros FIR Filter passband stopband #tap width 1 0.10 0.25 27 10 2 0.15 0.25 18 12 3 0.10 0.15 25 14 4 0.15 0.25 29 14 5 0.10 0.15 48 16 6 0.15 0.20 29 14 7 0.15 0.20 49 16 8 0.10 0.12 49 16 9 0.10 0.12 60 18 10 0.24 0.25 53 12 11 0.20 0.25 36 8 12 0.20 0.25 36 12 Com a finalidade de incluir os dois algoritmos baseados em heurísticas e as codificações utilizadas neste trabalho, e gerar a ordenação e particionamento dos coeficientes automaticamente, foi implementada uma ferramenta. Esta ferramenta recebe como entrada os coeficientes de filtros FIR (em decimal ou em binário) e estes são ordenados e/ou particionados de acordo com a técnica selecionada e a codificação selecionada. A saída da ferramenta é a distância de Hamming dos coeficientes gerada pela melhor ordenação alcançada pelos algoritmos heurísticos. A Figura 21 mostra a interface da ferramenta proposta. 37