• Nenhum resultado encontrado

Módulo de Operadores Genéticos

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

2 AG on FPGA

2.3 Módulo Geral do AG

2.3.2 Módulo de Operadores Genéticos

O módulo de Operadores Genéticos agrupa todas as funções que realizam a seleção e os operadores genéticos, cruzamento e mutação, além de módulos que auxiliam esses demais, seqüenciador de indivíduos e o gerador de números aleatórios (GNR).

2.3.2.1 Módulo Seqüenciador de Indivíduos

O módulo seqüenciador de indivíduos seleciona aleatoriamente indivíduos na memória e disponibiliza para os módulos de seleção. Ele deve executar a busca de indivíduos na memória de forma aleatória, através de números oriundos do GNR (ver seção 2.3.2.4) e disponibilizar esses indivíduos, juntamente com a sua aptidão, na entrada dos módulos seletores.

Como será visto adiante, foram utilizados dois módulos seletores para que o fluxo geral do AG ficasse mais rápido. Desse modo, o seqüenciador requisita por vez quatro indivíduos na população t e envia aos pares para os módulos seletores. Na Tabela 9 estão os sinais utilizados pelo seqüenciador de indivíduos.

Tabela 9 - Dados e sinais do Seqüenciador de Indivíduos.

Dado Quantidade Bits Bloco de Origem Tipo

Clk 1 1 Gerador de clock Bit

Enable 1 1 Controle Externo Bit

accMem_R 1 1 Controlador de Leitura Bit

accReqSel 1 1 Seletor Bit

randomNumber 1 7 GNR Bit

chromo1 1 64 Memória Bit

chromo2 1 64 Memória Bit

chromo3 1 64 Memória Bit

chromo4 1 64 Memória Bit

r_Buf2 1 1 Seqüenciador Bit

reqMem_R 1 1 Seqüenciador Bit

reqExecSelection, 1 1 Seqüenciador Bit

done 1 1 Seqüenciador Bit

2.3.2.2 Módulo Seletor (MS)

O MS recebe dois indivíduos do seqüenciador e, a partir da análise da aptidão de cada um deles, seleciona o de melhor aptidão e envia para o Módulo de Cruzamento. Os sinais do MS são representados na Tabela 10.

Como o fluxo geral do AG é realizado com dois cromossomos simultaneamente, foram instanciados dois módulos seletores, um para cada indivíduo. O valor da aptidão é lido como um inteiro, pois o maior inteiro, quando codificado, também representará o maior valor real de aptidão.

Tabela 10 - Dados e sinais do Módulo de Seleção.

Dado Quantidade Bits Bloco de Origem Tipo

Clk 1 1 Gerador de clock Bit

Enable 1 1 Controle Externo Bit

reqSel 1 1 Seqüenciador Bit

accReqSelection 1 1 Seletor Bit

reqExecCross 1 1 Seletor Bit

accReqCross 1 1 Cruzamento Bit

chromosome1 1 32 Seqüenciador Bit chromosome2 1 32 Seqüenciador Bit

Chromo 1 32 Seletor Bit

2.3.2.3 Módulo de Cruzamento (MC)

O MC recebe dois indivíduos oriundos, cada um deles, de um dos módulos de seleção e, a partir da análise de um número aleatório vindo do GNR, ProbCruz, pode realizar ou não um cruzamento entre partes aleatórias dos indivíduos. O ponto onde deve ser feita a divisão (bit pivô do cruzamento em ponto fixo) é determinado através de uma sub-cadeia do

ProbCruz, respeitando a faixa de valores menores que o tamanho do cromossomo. Os sinais

do MC são representados na Tabela 11.

Tabela 11 - Dados e sinais do Módulo de Cruzamento.

Dado Quantidade Bits Bloco de Origem Tipo

Clk 1 1 Gerador de clock Bit

Enable 1 1 Controle Externo Bit

reqCrossing 1 1 Seletor 1 e 2 Bit

reqMem_R 1 1 Cruzamento Bit

accReqMut 1 1 Seletor Bit

randomNumber 1 7 GNR Bits

chromosome1 1 32 Seletor 1 Bits

chromosome2 1 32 Seletor 2 Bits

chromosomeChild1 1 32 Cruzamento Bits

chromosomeChild2 1 32 Cruzamento Bits

reqMem_R 1 1 Cruzamento Bit

accMem_R 1 1 Controlador de Leitura Bit

accReqCrossing 1 1 Cruzamento Bit

r_Buf1 1 1 Cruzamento Bit

2.3.2.4 Módulo de Mutação (MM)

O MM recebe dois indivíduos vindos do módulo de cruzamento e, a partir da análise de um número obtido do GNR, ProbMut, pode efetuar ou não a inversão de um bit em cada um dos indivíduos. O índice do bit que pode ser invertido em cada indivíduo é o mesmo, e é determinado por uma sub-cadeia do ProbMut. A partir daí o módulo encaminha os indivíduos para o cálculo da aptidão.

2.3.2.5 Módulo Gerador de Números Aleatórios

O GNR do AG on FPGA gera seqüências aleatórias de oito bits e armazena-as concomitantemente nos buffers BVPA e BEA (ver seções 2.3.2.6 e 2.3.2.7). O GNR utiliza-se de uma semente fornecida pelo usuário do AG e a partir dela, adicionado ao ID do GNR, gera números usando o mesmo mecanismo do GNR do HGA, descrito na seção 1.5.5. Ao final do processo, após enviar o valor obtido aos buffers, o GNR transforma esse valor na semente do próximo valor que será gerado. Esse processo só finaliza quando o processo do AG é encerrado. O apêndice A dá uma idéia de como é o processo, além de trazer o código em Verilog que implementa a idéia.

Foram instanciados três módulos GNR no projeto. Isso foi definido para que pudessem ser supridas todas as necessidades de números aleatórios dos módulos. A cada oito ciclos de relógio, que é o tamanho da cadeia criada pelo GNR, três novos números randômicos são criados e armazenados nos buffers. Cada módulo possui um ID, iniciando do 0. Essa diferenciação no valor inicial para obtenção do número evita que os GNR gerem sempre os mesmos valores, o que não é desejável.

2.3.2.6 Buffer de Valores Porcentuais Aleatórios (BVPA)

O BVPA armazena os números oriundos do GNR e que serão utilizados pelos módulos de mutação e cruzamento. Os valores são compreendidos entre 0 a 100, por serem comparados com as probabilidades de mutação e cruzamento. Dessa forma, as palavras são formadas por 7 bits e, por decisão de projeto, existem 32 palavras, suficientes para suprir as

necessidades do fluxo geral do AG.

Para os casos onde são sorteados valores maiores que 100, o tratamento de exceções é feito diretamente nos módulos de mutação e cruzamento.

2.3.2.7 Buffer de Endereços Aleatórios dos Indivíduos (BEA)

O BEA armazena os números oriundos do GNR e que serão utilizados pelo seqüenciador de indivíduos. Conforme descrito na seção 2.1, o número máximo de indivíduos N será de 100, o buffer possui, então, 7 bits. Cada AG terá seu próprio valor N, e os valores armazenados no buffer que ultrapassarem N serão tratados no módulo seqüenciador. O BEA possui espaço para 32 palavras.

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

Documentos relacionados