• Nenhum resultado encontrado

O algoritmo de procura implementado, baseado num algoritmo genético (ver Algoritmo 5.3), recebe como parâmetros de entrada o conjunto de exemplos positivos e negativos do objecto a classificar, assim como o tamanho da população e o número de gerações. A representação escolhida para os indivíduos é a que foi detalhada atrás. Cada indivíduo da população é representado à custa de um cromossoma, o qual codifica uma regra através de um vector binário de tamanho igual a 6 ⇥ (n + 1) + 9 ⇥ 2, sendo n o número de bits necessário para representar o inteiro mais pequeno, maior ou igual à cardinalidade do conjunto de etiquetas usado no corpus, a partir do qual se extraíram os exemplos de treino.

Algoritmo 5.3Algoritmo genético para evolução de regras Entrada: TamPop, NumGerações, ExemplosPos, ExemplosNeg Saída: MelhorRegra

População GeraPopInicial(TamPop, ExemplosPos) para i 1 to NumGerações faz

Avalia(População, ExemplosPos, ExemplosNeg) Melhor MelhorIndivíduo(População)

PopTemporária SelecçãoTorneio(pop)

PopDescendentes AplicaRecombinação(PopTemporária) PopDescendentes AplicaMutação(NovaPop)

Pior PiorIndivíduo(PopDescendentes )

População Substituir(Pior, Melhor, PopDescendentes ) i i+1

fim para

Melhor MelhorIndivíduo(População) MelhorRegra Fenótipo(Melhor)

Os indivíduos são avaliados à custa da função de avaliação desenhada para o problema e definida pela Equação 5.1. O esquema de substituição adoptado foi a substituição geracional. Porém, por forma a não ser perdido o melhor indivíduo, de geração para geração, usou-se uma forma de elitismo que garante que o melhor indivíduo de uma geração substitui sempre o pior indivíduo da geração seguinte.

Os aspectos específicos deste algoritmo tais como a geração da população inicial, ope- radores genéticos e mecanismo de selecção são debatidos nas secções seguintes.

5.8.1 Geração da população inicial

A geração da população inicial segue os passos apresentados no Algoritmo 5.4. Assu- mindo que a população deverá ser constituída por um total de m indivíduos, metade dos genótipos, m

2, são gerados aleatoriamente, atribuindo 0 ou 1 a cada uma das po- sições do respectivo vector binário, e os restantes são obtidos a partir do conjunto de exemplos positivos. Os exemplos escolhidos são codificados, na representação biná- ria estabelecida, e adicionados à população. A escolha dos exemplos é feita de forma aleatória. Este processo foi adoptado de forma a acelerar o processo de aprendiza- gem. Pretende-se, assim, saltar um número significativo de primeiras gerações, cujas populações são compostas por indivíduos com desempenho muito pobre.

Algoritmo 5.4 Geração da população inicial Entrada: TamPop, ExemplosPos

Saída: População

k Arredonda(TamPop ÷ 2) para i 1 to k faz

Indivíduo GeraAleatoriamenteInd()

População Adiciona(Indivíduo, População) i i+1

fim para

para i 1 to TamPop faz

Exemplo EscolheAleatoriamente(ExemplosPos) Indivíduo Codifica(Exemplo)

População Adiciona(Indivíduo, População) i i+1

fim para

5.8.2 Operadores genéticos

Uma vez que que a representação escolhida para a codificação das regras é uma re- presentação binária típica, não houve necessidade de utilizar operadores de variação específicos. Foram adoptados os operadores tradicionais de mutação binária e de recom- binação com dois pontes de corte. A mutação binária utilizada segue o procedimento típico: cada gene de um cromossoma tem uma determinada probabilidade, pm, de ser mutado; no caso de ocorrer mutação, se o gene possuí o alelo 1, é mutado para 0, e vice versa (ver Figura 5.4).

A recombinação com dois pontes de cortes foi também ela implementada seguindo o esquema tradicional:

1! 1! 1! 1! 1! 1! 1! 0! 0! 1! 0! 1!

0! 1! 1! 1! 1! 1! 1! 0! 0! 1! 1! 1!

Indivíduo antes da aplicação do operador de Mutação.

Indivíduo após a aplicação do operador de Mutação, tendo sofrido mutação o primeiro e penúltimo gene.

Figura 5.4: Exemplo de aplicação do operador de mutação binária.

• Cada par de indivíduos da população temporária tem uma determinada proba- bilidade, pr, de ser recombinado.

• Caso a recombinação aconteça são escolhidos de forma aleatória dois pontos de corte.

• O segmento interior, definido pelos dois pontos de corte, nos cromossomas dos indivíduos, é trocado, dando origem a dois novos cromossomas (ver Figura 5.5), ou seja a dois novo indivíduos.

• Quando a recombinação não ocorre, são colocadas na população de descendentes cópias dos dois indivíduos.

5.8.3 Esquema de selecção

Tendo em conta a sua simplicidade, o mecanismo de selecção adoptado foi a selecção por torneio. Neste esquema de selecção, os indivíduos são escolhidos para a população temporária através da realização de torneios, onde competem uns com os outros. De cada torneio apenas sai um vencedor. Por conseguinte, se pretendemos seleccionar m progenitores para a população temporária, então devem ser realizados m torneios. O número de indivíduos que competem no torneio pode variar, dependendo da pressão de selecção que se pretende exercer. Quanto maior é o torneio, ou seja quanto maior é o número de indivíduos que competem, maior é a pressão de selecção exercida. A implementação do processo, para torneios com mais que dois competidores, é simples e pode ser descrita pelos seguintes passos:

• Para cada torneio realizado são escolhidos, aleatoriamente, i indivíduos, sendo i o tamanho do torneio, definido previamente.

1! 0! 0! 1! 1! 1! 1! 0! 0! 1! 1! 1!

1! 1! 1! 1! 1! 0! 0! 0! 0! 1! 0! 1!

1º ponto de corte 2º ponto de corte

Progenitor 1 Progenitor 2 1! 0! 0! 1! 1! 0! 0! 0! 0! 1! 1! 1! 1! 1! 1! 1! 1! 1! 1! 0! 0! 1! 0! 1! Descendente 1 Descendente 2

Figura 5.5: Esquema da recombinação com dois pontos de corte.

• O indivíduo que vence o torneio deverá ser o que apresenta melhor valor de desempenho.

Quando i = 2, este processo varia ligeiramente. Neste caso, uma constante k é adop- tada, e o seu valor irá permitir controlar a pressão de selecção exercida, uma vez que define a probabilidade do melhor indivíduo vencer o torneio. Quanto maior é o valor de k, maior é a pressão de selecção:

• Para cada torneio realizado são escolhidos, aleatoriamente, 2 indivíduos.

• A escolha do vencedor depende de um número al 2 [0, 1], gerado aleatoriamente. • Se al  k o indivíduo com melhor desempenho é escolhido como vencedor. • Se al > k o indivíduo com pior desempenho ganha o torneio.

Neste trabalho optou-se por torneios de tamanho 2 com um valor de k = 0.8. O processo utilizado é apresentado no Algoritmo 5.5.

Algoritmo 5.5Selecção por torneio Entrada: NumProgenitores, População, k Saída: PopulaçãoTemporária

para i 1 to NumProgenitores faz

Indivíduo1 SeleccionaAleatoriamente(População) Indivíduo2 SeleccionaAleatoriamente(População) j GeraAleatórios(1)

se j  k então

Progenitor MelhorDesempenho(Indivíduo1, Indivíduo2) senão

Progenitor PiorDesempenho(Indivíduo1, Indivíduo2) fim se

PopulaçãoTemporária Adiciona(PopTemporária, Progenitor) i i+1

fim para