• Nenhum resultado encontrado

3 ALGORITMOS GENÉTICOS

3.5 Operadores Genéticos

3.5.1 Seleção

A ideia principal do operador de seleção em um algoritmo genético é oferecer aos melhores indivíduos da população corrente preferência para o processo de reprodução, permitindo que estes indivíduos possam passar as suas características às próximas gerações.

Isto funciona como na natureza, onde os indivíduos altamente adaptados ao seu ambiente possuem naturalmente mais oportunidades para reproduzir do que aqueles indivíduos considerados mais fracos.

A escolha dos pais pode ser feita de várias formas e dentre os operadores de seleção dos algoritmos genéticos, este trabalho analisa a eficiência dos seguintes: torneio, roda roleta, amostragem estocástica universal, amostragem determinística e Remainder Storchastic Sampling.

Torneio: na seleção por torneio dois indivíduos selecionados aleatoriamente competem diretamente, com base nos valores da função aptidão, e o melhor é selecionado para reproduzir e o processo é repetido até uma nova geração de soluções seja formada.

Roda da roleta: consiste em selecionar uma série de indivíduos da população e fazer com que eles entrem em competição direta pelo direito de ser pai, usando como arma a sua aptidão. Uma vez definidos os competidores, aquele dentre eles que possui a melhor avaliação é selecionado para a aplicação do operador genético. O processo de seleção se repete até que a população intermediária seja preenchida com os indivíduos selecionados. Percebe-se que os indivíduos com maior aptidão têm mais chance de serem selecionados. Os indivíduos são selecionados de forma completamente aleatória. Não existe nenhum favorecimento para os melhores indivíduos.

Aleatória: os indivíduos selecionados para compor a população intermediária são escolhidos aleatoriamente.

Proporcional: na seleção proporcional os indivíduos que obtiveram as maiores pontuações de aptidão têm maiores probabilidades de serem copiados. Enquanto que os que obtiveram os menores valores têm grandes chances de serem descartados.

Amostragem determinística: na análise determinística, existem duas etapas:

primeiramente são calculadas as probabilidades de seleção como na roda da roleta em seguida determina-se a quantidade esperada de cada indivíduo, multiplicando-se sua probabilidade de seleção pela quantidade de indivíduos da população. Com isso selecionam-se os indivíduos que apresentam valores de aptidões inteiros e depois aqueles com os maiores valores fracionários.

Remainder Stochastic Sampling: este método é uma versão simplificada da análise determinística. A primeira fase obedece aos mesmos critérios adotados para a análise determinística, entretanto, a parte fracionária pode ser escolhida por diferentes critérios de seleção: aleatória, por ordem crescente de desempenho, competição entre indivíduos, etc.

Elitismo: introduzido pela primeira vez por Kenneth De Jong em 1975, o elitismo tem como objetivo principal manter certo número de “melhores” indivíduos dentro da população avaliada a cada geração.

3.5.2 Representação dos parâmetros

Os algoritmos genéticos costumam trabalhar com codificação dos parâmetros do problema. Esta codificação tem o objetivo de adaptar os parâmetros para o devido manuseio dos operadores genéticos.

Existem dois tipos mais comuns de reprodução em AGs, que dependem do tipo de representação das variáveis.

 Representação Binária

Na representação binária se pode escolher um ponto de “quebra” da string de bits e trocar os segmentos entre os dois indivíduos, gerando dois indivíduos diferentes.

Representação de número na base dois:

Escrever um número inteiro em binário, isto é, na base dois, não apresenta problema.

Cada posição digital representará uma potência de dois, da mesma forma que nos números decimais, cada posição representa uma potência de dez. Assim, 23.457 significa:

2x104 + 3x103 + 4x102 + 5x101 + 7x100.

Na base dois, a base usada nos computadores binários, o número 110101 representa:

1x25 + 1x24 + 1x22 + 1x20 = (53)decimal

Conversão decimal binário

A conversão do número inteiro, de decimal para binário, será feita da direita para a esquerda, isto é, determina-se primeiro o algarismos das unidades (o que vai ser multiplicado

por 20 ) , em seguida o segundo algarismo da direita ( o que vai ser multiplicado por 21 ) e assim por diante.

Deve-se observar se o número é par ou ímpar. Em binário, o número par termina em 0 e o ímpar em 1. Assim determina-se o algarismo da direita, pela simples divisão do número por dois; se o resto for 0 (número par) o algarismo da direita é 0; se o resto for 1 (número ímpar) o algarismo da direita é 1. Como exemplo, a conversão do número 25 de decimal para binário se dar da seguinte forma:

23 2

1 11 2

1 5 2

1 2 2

0 1 2

1 0

23 = 10111

A representação binária é historicamente importante, uma vez que foi utilizada nos trabalhos pioneiros de HOLLAND (1975). É a representação tradicional, sendo fácil de utilizar e manipular, como também é simples de analisar teoricamente. Contudo, se um problema tem parâmetros contínuos e o usuário quer trabalhar com boa precisão numérica, ele precisará armazenar cromossomos longos na memória. Para cada ponto decimal acrescentado na precisão, é necessário adicionar 3,3 bits na cadeia. Se 8 casas decimais forem necessárias, 8 x 3,3  27 bits serão utilizados para cada parâmetro. Quando há muitos parâmetros, obtêm-se cadeias de bits que podem fazer o algoritmo convergir vagarosamente. Por exemplo, mutação nos primeiros bits do gene afeta mais a aptidão que mutação nos últimos bits do gene.

 Representação Real

A representação real, isto é, com pontos flutuantes, gera cromossomos menores e é compreendida mais naturalmente pelo ser humano do que a cadeia de bits. Outra vantagem da representação real é a facilidade de criar novos operadores.

Vários pesquisadores têm discutido qual a melhor representação, a binária ou a real, e muitos deles têm mostrado experimentos favoráveis a representação real (MICHALEWICZ, 1994; HAUPT, 1998). Nesse trabalho, a representação real foi escolhida para avaliar os

resultados. No exemplo abaixo, o cromossomo seria representado por um vetor de dois números com ponto flutuante. Por exemplo (17.851; 11,041).

Exemplo: Considere o seguinte problema de otimização (MICHAELEWICZ, 1994):

 

A decodificação de cromossomo em dois parâmetros:

c1=01101001001001101000001000111000100001110010 Passo 1: divisão de cadeia de bits c1 em duas cadeias de 22 bits:

0110100100100110100000 e 1000111000100001110010 Passo 2: conversão da base dois para base 10:

1722784 e 2328690

Passo 3: conversão da base dois para base 10:mapear esses resultados para o intervalo [-100,100]:

Documentos relacionados