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
3
4
5
Consumo de Potência Dinâmica .................................................................................................. 11
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
FILTROS DE RESPOSTA FINITA AO IMPULSO - FIR ......................................................................... 17
4.1
Características ............................................................................................................................. 17
4.2
Tipos de Filtros ............................................................................................................................. 19
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
7
Resultados.................................................................................................................................. 37
6.1
Resultados Obtidos com os Coeficientes Originais ..................................................................... 38
6.2
Resultados obtidos através da Codificação ................................................................................ 39
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 BusInvert [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 (Pdin) em
uma transição na saída de uma porta carregada por um capacitor CL é 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)
(3)
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.
&
→
= ! " = !
%%
"#$ = (4)
Para a transição na saída do circuito, a energia armazenada no capacitor de carga
de saída, Ecap é dada pela Equação 5.
T
T
vdd
Ecap = ∫ Pcap (t )dt = ∫ Vout L(t )dt =
i
0
0
∫CV
L out
0
1
dVout = C LVdd2
2
(5)
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 Vdd → 0 na saída, nenhuma carga é drenada da fonte de alimentação e a
1
energia armazenada no capacitor ( C LVdd2 ) é dissipada na rede NMOS pull-down.
2
A Figura 2 mostra que a componente dinâmica normalizada é linearmente
proporcional à capacitância de carga C L e a extrapolação para C L = 0 é somente
12
dependente dos fatores parasitas da porta, de acordo com a Equação 4 [11].
Deste modo, a potência dinâmica ( Pdin ) pode ser macro modelada, para um
projeto baseado em células, de acordo com a Equação 6, onde C L é a capacitância de
carga extrínseca da porta e Ci é a carga intrínseca para uma célula lógica dada.
Pdin =
1
afVdd2 (Ci + C L )
2
(6)
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 Tin = 0,4ns / V para Vdd = 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
Y [ n ] = ∑ H [i ] X [ n − i ]
(7)
i =0
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.
A analogia entre o sistema natural e os algoritmos genéticos é apresentada na
Tabela 3.
Tabela 3. Natureza e Algoritmos Genéticos
Natureza
Algoritmos Genéticos
Cromossomo
Palavra binária, vetor, etc
Gene
Característica do Problema
Alelo
Valor da característica
Loco
Posição da palavra, vetor, etc
Genótipo
Estrutura
Fenótipo
Estrutura submetida ao problema
Indivíduo
Solução
Geraçã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
Numéricos, Inteiros
Números Reais
Numéricos
Permutação de Símbolos
Baseados em Ordem
Símbolos Repetidos
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
001001
9
81
C2
000100
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 . /0 , 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 12 = [124 ]|78 | 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.
[&8: ]; [<8: ]=
924 = ∑@
A8 [&8: ]
? [< ]=
8:
∀C ϵN
(8)
Onde:
F24 (t) é a quantidade de feromônio no arco (i,j) na iteração t.
G24 = é o valor heurístico, "24 é o peso do arco (i, j).
8:
N é o conjunto de nós vizinhos ao nó i;
H e J 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 H 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 J 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
Figura 21. Ferramenta automática para ordenação e particionamento de coeficientes
6.1
Resultados Obtidos com os Coeficientes Originais
A Tabela 8 mostra os resultados que foram obtidos, em termos do número de
transições, dos coeficientes originais e depois utilizando as heurísticas Bellmore e
Nemhauser e Vizinho Mais Próximo para a ordenação e o particionamento dos
coeficientes. O particionamento de coeficientes divide os coeficientes em duas metades
(como um filtro FIR semi-paralelo é implementado, como mostrado anteriormente na
Figura 9).
Tabela 8. Número de transições dos coeficientes originais
Número de transições entre os coeficientes
(distância de Hamming)
Bellmore e Nemhauser
Vizinho mais Próximo
Coeficientes
Ordenação/
Ordenação/
Originais
Particionamento
Particionamento
1
85
53/52
56/53
2
67
44/42
47/45
3
102
71/69
74/71
4
139
79/76
81/78
5
249
149/146
157/155
6
150
89/87
93/92
7
276
147/144
152/151
8
294
177/174
182/179
9
398
231/228
242/239
10
204
95/93
98/96
11
56
33/32
34/33
12
137
83/81
87/86
Filtro
38
Como pode ser observado na Tabela 4, apesar das duas aplicações de heurísticas
reduzirem significativamente o número de transições dos coeficientes, a heurística de
Bellmore e Nemhauser se mostrou mais eficiente para todos os filtros testados. Isto
ocorre porque este algoritmo faz uma busca mais ampla procurando por melhores
vizinhos de dois coeficientes distintos a fim de inserir apenas um. Como também pode
ser observado na Tabela 4 o particionamento dos coeficientes também implicou em uma
redução no número de transições em todos os filtros, porque a busca pela melhor
ordenação ocorre em um específico pequeno grupo de coeficientes. Isto é um importante
problema para a implementação de filtros FIR semi-paralelos, porque estas arquiteturas
podem operar rapidamente (duas amostras processadas por vez) com um reduzido
número de transições entre os coeficientes (provavelmente menor consumo de potência).
6.2
Resultados obtidos através da Codificação
Os resultados obtidos através da codificação dos coeficientes são apresentados
na Tabela 9, onde pode ser observado que o número de transições é reduzido para quase
todos os filtros, após a aplicação da codificação nos coeficientes. Em particular, a
técnica Bus-Invert apresentou os melhores resultados. Na verdade, as codificações Gray
e Hibrido não apresentaram reduções significativas no número de transições dos
coeficientes, devido ao fato destas técnicas serem mais efetivas quando há correlação
entre coeficientes consecutivos. Para o conjunto de coeficientes selecionado, este
aspecto não foi considerado.
Tabela 9. Número de transições dos coeficientes originais e codificados
Coeficientes
Filtro
Originais
Híbrido
Gray
Bus-Invert
1
85
82
82
81
2
67
65
70
64
3
102
122
120
100
4
139
140
145
139
5
249
244
256
246
6
150
135
158
146
7
276
289
279
272
8
294
285
301
276
9
398
403
402
387
10
204
216
202
197
11
56
62
66
51
12
137
147
140
131
39
Foram realizados testes também com a aplicação dos algoritmos heurísticos nos
coeficientes codificados. Os principais resultados são mostrados na Tabela 10, onde em
vários casos podemos notar que houve ainda maior redução do hamming total, com
relação a apenas aplicação dos métodos heurísticos.
Tabela 10. Número de transições dos coeficientes originais e codificados com a aplicação de Heurísticas
Número de transições entre os coeficientes
(distância de Hamming)
Vizinho mais Próximo
Bellmore and
Nemhauser
Filtro
Coeficientes
Ordenação/
Ordenação/
Originais
Particionamento
Particionamento
Híbrido
Gray
Bus-Invert
Híbrido
Gray
Bus-Invert
1
85
50/49
58/56
52/51
56/55
60/58
56/55
2
67
47/45
42/39
42/40
51/49
46/44
44/42
3
102
73/71
74/72
75/74
78/74
74/70
80/76
4
139
85/83
93/91
79/76
90/87
95/91
81/78
5
249
146/143
146/143
162/161
150/148
146/144
158/157
6
150
92/90
98/95
95/93
93/91
102/98
100/99
7
276
150/149
159/158
163/160
155/153
158/153
165/161
8
294
180/177
172/169
191/188
186/182
180/177
198/195
9
398
232/229
244/242
251/248
233/228
248/244
257/252
10
204
99/97
108/106
109/108
101/104
114/112
112/111
11
56
35/34
39/38
38/36
36/35
41/39
41/40
12
137
79/77
88/87
82/80
80/78
90/88
87/86
40
7 TRABALHOS RELACIONADOS
São encontrados na literatura alguns trabalhos relacionados que utilizam heurísticas
ou alguma outra técnica algorítmica para reduzir consumo de potência em arquiteturas
de filtros FIR. Em [3], por exemplo, foi proposta a ordenação dos coeficientes afim de
reduzir o consumo de potência nas arquiteturas de filtros FIR. Porém, esta ordenação
gera apenas soluções ótimas, o que limita o algoritmo à geração da ordenação para um
número limitado de coeficientes. Além disso, a sua utilização se limita a apenas filtros
totalmente seqüenciais.
No algoritmo de ordenação de coeficientes apresentado em [4], foi proposta uma
extensão da idéia apresentada em [3], onde a função de custo que determina a melhor
seqüência de coeficientes continua sendo calculada para todas as combinações dos
coeficientes, mas adiciona o particionamento dos coeficientes, o que possibilita a sua
utilização em filtros semi-paralelos. Este algoritmo, para um filtro FIR de 8ª ordem
usado como exemplo em [4], ainda é razoável, pois encontra a solução ótima de forma
exaustiva. Entretanto, para um maior número de coeficientes este algoritmo não se torna
atrativo devido ao tempo necessário para processar o alto número de combinações.
Em [13], também foi realizada a ordenação dos coeficientes em arquiteturas de
filtros FIR para a redução do consumo de potência, e utilizando técnicas heurísticas.
Porém, o foco do trabalho é mostrar a diferença de ganho em redução de consumo de
potência das implementações DF (forma direta) sobre as implementações TDF (forma
direta transposta), onde é mostrado que, em aplicações TDF consegue-se uma redução
de até 34% de consumo de potência, porém ao custo de um overhead em área de 56%.
Por outro lado, na implementação DF, a redução no consumo de potência alcançou uma
redução de apenas 19% mas sem introduzir nenhum overhead. Entretanto, neste trabalho
não é apresentado especificamente qual tipo de heurística foi utilizada para realizar a
ordenação dos coeficientes, são apenas apresentados os resultados.
Em [19], foi proposto um algoritmo que insere perturbações nos coeficientes, onde
os bits de última ordem tem seu valor alterado para 1, e então, o conjunto de
coeficientes é divido em subconjuntos de tamanho t, e em seguida é feita uma média de
todos os bits da posição k de cada subconjunto de coeficientes que está sendo analisada.
Em seguida, todos os bits da posição k, recebem como valor, a média que é calculada no
algoritmo. Porém nem sempre esta substituição pode ser realizada. Existe uma lista de
restrições que indica o que não pode ocorrer, como por exemplo, um coeficiente
41
simétrico, tem que se manter simétrico durante toda a execução. De acordo com [19],
com a utilização deste algoritmo foi possível obter reduções de até 50% na atividade de
chaveamento dos coeficientes.
42
8
CONCLUSÕES
Neste trabalho foram implementados dois algoritmos baseados em Heurísticas
chamadas Vizinho Mais Próximo e Bellmore e Nemhauser, para a ordenação e
particionamento de filtros do tipo FIR. Os resultados mostraram que os algoritmos
podem encontrar as funções de melhor custo para a ordenação e particionamento dos
coeficientes. Desta forma, a distância de Hamming entre coeficientes consecutivos pode
ser significativamente reduzida. Uma ferramenta foi proposta para que os algoritmos
heurísticos possam ser aplicados de tal forma que a geração da melhor ordenação e do
melhor particionamento dos coeficientes possam ser geradas automaticamente.
A ferramenta automática também está apta a aplicar algumas técnicas de
codificação de coeficientes. Em particular, as codificações Gray, Hibrido e Bus-Invert
foram usadas com o propósito de reduzir o número de transições dos coeficientes. Os
resultados mostraram que a codificação Bus-Invert pode ser eficiente na redução do
número de transições quando comparado com os coeficientes originais. Depois de
aplicar a técnica de codificação seguida do algoritmo baseado em heurística, pode ser
observado que em muitos casos foi possível obter resultados melhores do que com
apenas a aplicação de heurísticas.
Como trabalho futuro, pretende-se fazer a implementação em ASIC
(Application-Specific Integrated Circuit) dos filtros com coeficientes originais e
ordenados (para filtros FIR sequenciais) e particionados (para filtros FIR semiparalelos) a fim de analisar o impacto na redução de potência dos filtros com a redução
do número de transições dos coeficientes. Também se tem por objetivo, a
implementação de outros algoritmos baseados em metaheurísticas.
43
REFERÊNCIAS
[1] M. Mehendale, S. Sherlekar, G. Venkatesh. Low Power Realization of FIR Filters on
Programmable DSP’ s. IEEE Transactions on Very Large Scale Integration (VLSI)
Systems, 6(4):546-553. December 1998.
[2] A. Erdogan and T. Arslan. High Throughput FIR Filter Design for Low Power SOC
Applications. In: 13th Annual IEEE International ASIC/SOC Conference, pp. 21-24.
2000.
[3] M. Mehendale, S. Sherlekar, G. Venkatesh. Techniques for Low Power Realization
of FIR Filters. In: Asia and South Pacific Design Automation Conference, ASPDAC,
1995. Proceedings… New York: ACM, 1995. p.447-450.
[4] E. Costa, J. Monteiro , and S. Bampi. Gray Encoded Arithmetic Operators Applied
to FFT and FIR Dedicated Datapaths. In: 11th IEEE/IFIP International Conference on
Very Large Scale Integration. VLSI-SoC. 2003.
[5] Ansari, Nirwan and Hou, E. Computational Intelligence for Optimization. Kluwer
Academic Publishers, 1997.
[6] Reeves, C.R. Modern Heuristic Techniques for Combinatorial Problems. Blackwell
Scientif Publications, 1993.
[7] M. Stan; W. Burleson. Bus-Invert Coding for Low Power I/O. IEEE Transactions on
Very Large Scale Integration (VLSI) Systems, New York, 1995, P. 49-58.
[8] A. Chandrakasan and R. Brodersen. Low Power Digial CMOS Design. Kluwer
Academic Publishers. 1995.
[9] M. Stan and W. Burleson. Low-Power Encodings for Global Communication in
CMOS VLSI. IEEE Transactions on VLSI Systems. March 1997.
[10] E. Costa, P. Flores, and J. Monteiro. Maximal Sharing of Partial Terms in MCM
under Minimal Signed Digit Representation. In: European Conference on Circuit Theory
and Design. pp. 221-224. 2005.
[11] E. Costa, L. Carro, S. Bampi. Avaliação de Potência em Circuitos CMOS Digitais.
Trabalho Individual de Pesquisa (Doutorado em Ciência da Computação), UFRGS.
1999.
[12] A. Dickson, S. Denker. Adiabatic Dynamic Logic. IEEE Journal of Solid-State
Circuits, p. 311 – 315. 1995.
[13] A. T. Erdogan, T. Arslan. Low Power FIR Filter Implementations Based on
44
Coefficient Ordering Algorithm. IEEE Transactions on Very Large Scale Integration
(VLSI) Systems. 2004.
[14] Glover, F., Laguna, M. & Taillard, E. Tabu Search. Annals of Operations Research,
v.41, J.C.Baltzer,1993
[15] Glover, F. and Kochenberger, G. Iterated Local Search. In: Handbook of
Metaheuristics. Kluwer Academic Publishers, 2003
[16] Ribeiro, C.C. Metaheuristics and Applications. Advanced School on Artificial
Intelligence. Estoril, Portugal, 1996
[17] Nascimento, M.C.V. Uma heurística GRASP para o problema de dimensionamento
de lotes com múltiplas plantas, Dissertação de Mestrado, 2007.
[18] Resende, M. & Ribeiro, C. Greedy randomized adaptive search procedures
(GRASP). In: Handbook of Metaheuristics [edited by F. Glover and G. Kochenberger],
Kluwer Academic Publishers, 219-249, 2002
[19] Kasturi, N. Power Reducing Algorithms in FIR Filters (Dissertação de mestrado,
MIT), 1997.
[20] Pacheco, M. A. C. Algoritmos Genéticos: princípios e aplicações, PUC-RJ (Notas
de aula), 2008.
45
Download

UNIVERSIDADE CATÓLICA DE PELOTAS CENTRO