• Nenhum resultado encontrado

Módulo de Avaliação da Função Aptidão

No documento 2010.1MonografiaJoaquimRanyere (páginas 46-51)

2 AG on FPGA

2.3 Módulo Geral do AG

2.3.3 Módulo de Avaliação da Função Aptidão

O módulo de Avaliação de Função Aptidão é composto pelo módulo de normalização, por duas unidades aritméticas (UA), uma unidade de controle (UC) e um buffer circular de execução (BC). Tal módulo é responsável por realizar toda a manipulação dos cromossomos para a obtenção das respectivas aptidões.

2.3.3.1 Módulo de Normalização

O módulo de normalização é responsável por realizar uma normalização dos valores representados pela cadeia binária dos cromossomos após a mutação. Essa normalização depende do problema que está sendo otimizado e do espaço de busca deste problema, ou seja, o usuário é que passará os valores de mínimo e máximo que devem ser utilizados nas variáveis X e Y para serem normalizadas. O módulo recebe como entrada dois valores inteiros de 32 bits e tem como saída dois valores em representação real, com 64 bits. Os primeiros 32 bits desse valor são a representação real em ponto fixo da variável X, sendo os primeiros 16 bits a parte inteira, e os 16 últimos a parte fracionária. Os últimos 32 bits representam a variável Y, com representação real equivalente a X. A Figura 10 ilustra o processo e a representação dos cromossomos normalizados.

Figura 10 - Processo de normalização.

2.3.3.2 Módulo de Controle da Avaliação (CA)

O CA realiza o controle da execução dos comandos do buffer circular nas duas UA. Obtém cada comando individualmente, envia às UA e aguarda que ambas estejam livres para executar outro cálculo. Ao final do cálculo da aptidão, se comunica com o CAG para que o indivíduo recém avaliado seja escrito na MP.

2.3.3.3 Buffer circular de Execução

O buffer circular de execução armazena palavras que informa uma operação da expressão matemática que define a função de aptidão. É obrigatória que a última palavra seja a instrução END, que indica o fim de todos os passos da execução da avaliação, e aponta o registrador que armazena o valor total obtido (última operação).

O buffer está organizado com a função aptidão já previamente analisada, pois a análise e validação da função deverão ser feitos em software, ainda antes de ser enviado para a estrutura do AG através do front-end. Após serem identificadas as precedências das operações envolvidas e os seus parâmetros, a estrutura dessas operações deve ser transformada na forma reconhecida pelo avaliador de aptidão, ou seja, pela estrutura do buffer circular de execução, como mostra a Figura 11.

Figura 11 - Exemplo de palavra do buffer circular de execução e seus campos.

00000001 00000011 00000100 00001000 NORMALIZADOR X Y X Y REAL FRACIONÁRIA Cromossomos mutados Cromossomos normalizados Representação das variáveis

O tamanho da palavra de instrução no buffer circular de execução é 32 bits. Os 8 bits mais significativos indicam a operação a ser realizada, de acordo com a Tabela 12. Os 8 bits menos significativos informam qual registrador interno armazenará o resultado da operação, isto é, representa seu campo de destino. Os 16 bits intermediários informam o endereço dos registradores que fornecem os parâmetros de entrada da operação, sendo cada parâmetro de 8 bits.

Tabela 12 - Operações da Unidade Aritmética.

VALOR OPERAÇÃO VALOR OPERAÇÃO

00000000 0 – SET_XY 00000100 4 – DIV 00000001 1 – ADD 00000101 5 – LOAD 00000010 2 – SUB 00001010 10 – END 00000011 3 – MULT

A operação SET_XY armazena as variáveis X e Y nos respectivos registradores definidos na Tabela 13. As operações ADD, SUB, MULT e DIV executam as operações de adição, subtração, multiplicação e divisão, respectivamente. A operação END finaliza o cálculo e encaminha o valor final do registrador que o esteja armazenando para o barramento de saída que se comunica com o Controlador de Escrita.

Uma particularidade é a instrução LOAD, que contêm uma pequena variação dos campos. Essa instrução possui apenas três campos: o comando, o registrador de destino e o valor a carregar no registrador. A estrutura fica modificada para a forma representada na Figura 12 – Campos da operação LOAD.Figura 12.

Figura 12 – Campos da operação LOAD.

Os endereços são pré-estabelecidos e podem ser vistos na Tabela 13, do intervalo de 23 até 32, são endereçados a registradores que podem ser utilizados como armazenamento temporário. Esses podem ser escaláveis até os 28 endereços representados pelos 8 bits do campo.

Os registradores que armazenam o parâmetro X e Y de cada cromossomo são obrigatoriamente fixados nos endereços 0 e 1, respectivamente. Eles não podem ser alterados

durante o cálculo do valor de aptidão.

Tabela 13 - Endereçamento dos módulos no banco de registradores.

ENDEREÇO REGISTRADOR ENDEREÇO REGISTRADOR ENDEREÇO REGISTRADOR

0 X 8 mult1 16 pow1

1 Y 9 mult2 17 pow2

2 add1 10 mult_result 18 pow_result

3 add2 11 div1 19 Sin

4 add_result 12 div2 20 sin_result

5 sub1 13 div_result 21 cos

6 sub2 14 Sqrt 22 cos_result

7 sub_result 15 sqrt_result

Os registradores que armazenam os resultados de cada módulo aritmético são ligados fisicamente à saída dos respectivos módulos, o que restringe, durante a montagem das palavras para o buffer circular, a atribuição do campo de destino ser feita a esses endereços.

As informações contidas no buffer circular orientam a seqüência de módulos matemáticos que são usados para o cálculo. Basicamente, em cada linha do buffer circular existe três campos, o ID do módulo matemático e os parâmetros de entrada, que a depender da função podem ser únicos ou em pares. Esses parâmetros são inicialmente carregados nos registradores de entrada (SUM1 e SUM2, MUL1 e MUL2, etc.) e então é realizada a operação, armazenando o valor nos registradores de saída (SUM_RESULT, MULT_RESULT, etc.). Por exemplo, para a expressão x² + y², a seqüência de operações a serem executadas tem a seguinte ordem:

Figura 13 - Seqüência de operações da expressão aritmética x² + y².

2.3.3.4 Unidades Aritméticas

O Avaliador de Aptidão possui duas unidades aritméticas que executam os cálculos informados no buffer circular de forma paralela, garantindo um melhor desempenho do ciclo

1 – Carga de X 2 – Carga de Y

3 – Multiplicação de X por X 4 - Multiplicação de Y por Y 5 – Soma (passo 3 e passo 4)

do AG desenvolvido, já que produz a cada momento dois novos indivíduos. Internamente as UA possuem módulos aritméticos que realizam operações simples, onde cada um deles possui um registrador de saída e um ou dois registradores de entrada, conforme a Figura 14.

Figura 14 - Módulos internos da Unidade Aritmética para o avaliador de aptidão.

Os módulos internos da UA realizam as operações que foram definidas na Tabela 12. Foram especificadas como operações que poderão ser realizadas pela UA as operações básicas de soma, subtração, divisão e multiplicação, as trigonométricas de seno e cosseno, e ainda a radiciação e potenciação.

Para uma expressão matemática qualquer é feita uma quebra de suas operações em operações simples, obedecendo à precedência de cada um dos operadores. Esta etapa deve ser realizada em software de alto nível, localizado em um computador pessoal, por exemplo.

Após as UAs identificarem o comando END e disponibilizarem o valor de aptidão obtido, a UC se encarrega de realizar a comunicação e envio dos mesmos para o controlador geral do AG, que atualizará os indivíduos no local correto na memória.

BARRAMENTO

BARRAMENTO

Somador Subtrator Multiplicador Divisor SUM2

SUM1 SUB1 SUB2 MUL1 MUL2 DIV1 DIV2

ADD_RESULT SUB_RESULT MUL_RESULT DIV_RESULT

UA

No documento 2010.1MonografiaJoaquimRanyere (páginas 46-51)

Documentos relacionados