• Nenhum resultado encontrado

aula 12 - Algoritmo genético contínuo

N/A
N/A
Protected

Academic year: 2021

Share "aula 12 - Algoritmo genético contínuo"

Copied!
11
0
0

Texto

(1)

(Texto retirado do livro Practical genetic algorithms, Randy L. Haupt e Sue Ellen Haupt.—2ª ed.)

O Algoritmo Genético Contínuo

E se você estiver tentando resolver um problema em que os valores das variáveis são contínuos e você deseja conhecê-los com a precisão total da máquina? Em tal problema, cada variável requer muitos bits para representá-la. Se o número de variáveis for grande, o tamanho do cromossomo também é grande. Naturalmente, 1s e 0s não são a única maneira de representar uma variável. Pode-se, em princípio, usar qualquer representação concebível para codificar as variáveis. Quando as variáveis são naturalmente quantizadas, o GA binário se ajusta bem. No entanto, quando as variáveis são contínuas, é mais lógico representá-las por números de ponto flutuante. Além disso, como o GA binário tem sua precisão limitada pela representação binária de variáveis, o uso de números de ponto flutuante facilita a representação da precisão da máquina.

Esse GA contínuo também tem a vantagem de exigir menos armazenamento do que o GA binário porque um único número de ponto flutuante representa a variável em vez de inteiros de N bits. O GA contínuo é inerentemente mais rápido que o GA binário, porque os cromossomos não precisam ser decodificados antes da avaliação da função de custo.

A maioria das livros e artigos chama essa versão do GA de um GA com valor real. Usamos o termo contínuo em vez de valor real para evitar confusão entre números reais e complexos. O desenvolvimento aqui segue de perto o colocado na aula anterior. Nós nos concentramos principalmente nas diferenças nos dois algoritmos.

O fluxograma genérico do GA contínuo é ilustrado abaixo. Repare nas pequenas diferenças com relação ao GA binário.

(2)

A principal diferença é o fato de que as variáveis não são mais representadas por bits de zeros e uns, mas sim por números de ponto flutuante em qualquer intervalo considerado apropriado. No entanto, este simples fato acrescenta algumas nuances à aplicação da técnica que deve ser cuidadosamente considerada. Em particular, diferentes operadores de crossover e mutação.

Como vimos no último capítulo, o objetivo é resolver algum problema de otimização onde procuramos uma solução ótima (mínima) em termos das variáveis do problema. Portanto, o processo de ajustá-lo a um GA definindo um cromossomo como uma matriz de valores de variáveis a serem otimizados. Se o cromossomo tem Nvar variáveis (um problema de otimização

N-dimensional) dado por p1, p2, … , pNvar então o cromossomo é escrito como uma matriz com 1 x Nvar

onde, nesse caso, os valores das variáveis são representados como números de ponto flutuante. Para exemplificar tal abordagem, considere a função custo:

cost=f (x , y )=x⋅sin (4 x )+1.1 y⋅sin(2 y)

Tal função será restrita pelos valores 0≤x≤10 e 0≤ y≤10 . Como é uma função que depende somente de x e y, naturalmente:

chromosome=[ x , y ]

(3)

Codificação das Variáveis, Precisão e Limites

Aqui é onde começam as diferenças do algoritmo anterior. Não precisamos mais considerar quantos bits são necessários para representar com precisão um valor. Em vez disso, x e y têm valores contínuos que estão entre os limites listados anteriormente.

Embora os valores sejam contínuos, um computador digital representa números por um número finito de bits. Quando nos referimos ao GA contínuo, queremos dizer que o computador usa sua precisão interna e arredondamento para definir a precisão do valor. Agora o algoritmo é limitado em precisão para o erro de arredondamento do computador.

Como o GA é uma técnica de pesquisa, ele deve estar limitado a explorar uma região razoável de espaço variável. Às vezes isso é feito impondo uma restrição ao problema, como os impostos às variáveis x e y. Se não se conhece a região de busca inicial, deve haver diversidade suficiente na população inicial para explorar um espaço variável de tamanho razoável antes de focar nas regiões mais promissoras.

População Inicial

Como os valores das variáveis (genes) não são mais codificados com valores puramente binários, a faixa de possíveis valores depende do problema. Dessa forma, podem haver diferenças significativas entre diferentes variáveis. Por isso, antes da criação dos cromossomos, é importante normalizar as variáveis para valores entre 0 e 1:

pnorm=pnplo

phiplo onde:

• pnorm: variável normalizada (0 < pnorm < 1);

• plo: menor valor da variável;

• phi: maior valor da variável;

(4)

p=( phiplo)pnorm+plo

Para o exemplo citado, começamos preenchendo a população com números aleatórios uniformes entre 0 e 10. A figura abaixo mostra a população inicial aleatória para Npop = 8 cromossomos. Os

valores da população estão listados na tabela seguinte. Vemos membros da população amplamente dispersos que analisam bem os valores da função de custo. Nenhuma das estimativas iniciais é particularmente próxima do mínimo global.

Seleção Natural e Seleção dos Pais

Essas etapas não sofrem mudanças significativas, e os mesmos critérios usados no GA binário são aplicados. Para o nosso exemplo, podemos de novo usar uma taxa de sobrevivência de 50% (Nkeep =

0,5). Assim, da tabela anterior:

Em nosso exemplo, a média da função de custo para a população de 8 foi de -0,3423 e o melhor custo foi de -9,8884. Depois de descartar a metade inferior, a média da população é -5,8138.

O Nkeep = 4 cromossomos mais adequados formam o conjunto de acasalamento. Duas mães e pais se

(5)

de cada pai. Além disso, os pais sobrevivem para fazer parte da próxima geração. Quanto mais parecidos os dois pais, maior a probabilidade de que os filhos carreguem as características dos pais. As abordagens básicas para encontrar dois parceiros são também as mesmas apresentadas para o GA binário. O exemplo apresentado aqui usa ponderação de ordenamento com as probabilidades mostradas. Por exemplo, considere que o gerador de números aleatórios produziu os seguintes dois pares de números aleatórios: (0,6710; 0,8124) e (0,7930; 0,3039). Usando esses pares aleatórios e os valores de probabilidades do exemplo anterior, os seguintes cromossomos foram selecionados aleatoriamente para acasalar mãe [2 3] e pai [3 1].

Acasalamento

Quanto ao algoritmo binário, dois pais são escolhidos, e os descendentes são uma combinação desses pais. Muitas abordagens diferentes foram tentadas para atravessar em GAs contínuos. Adewuya (1996) revê alguns dos métodos. Vários métodos interessantes são demonstrados por Michalewicz (1994).

Os métodos mais simples escolhem um ou mais pontos no cromossomo para marcar como os pontos de cruzamento. Então, as variáveis entre esses pontos são simplesmente trocadas entre os dois pais. O caso extremo é selecionar Nvar pontos e escolher aleatoriamente qual dos dois pais

contribuirá com sua variável em cada posição. Assim, um vai abaixo da linha dos cromossomos e, a cada variável, escolhe aleatoriamente se deve ou não trocar informações entre os dois pais. Esse método é chamado de crossover uniforme.

O problema com esses métodos de cruzamento de pontos é que nenhuma informação nova é introduzida: cada valor contínuo que foi iniciado aleatoriamente na população inicial é propagado para a próxima geração, apenas em combinações diferentes. Embora essa estratégia funcionasse bem para representações binárias, agora há um continuum de valores e, nesse continuum, estamos apenas trocando dois pontos de dados. Essas abordagens dependem totalmente da mutação para introduzir novo material genético.

Os métodos de mesclagem solucionam esse problema encontrando maneiras de combinar valores de variáveis dos dois pais em novos valores de variáveis na descendência. Um único valor de variável de descendência, pnew, vem de uma combinação dos dois valores de variável de descendência

(6)

pnew=β pnm+(1−β) pdn onde:

• β: é um número aleatório (0 < β < 1);

• pmn: é o n-ésimo gene do cromossomo da mãe;

• pdn: é o n-ésimo gene do cromossomo do pai;

A mesma variável do segundo descendente é meramente o complemento da primeira (isto é, substituindo β por 1 - β). Se β = 1, então pmn se propaga em sua totalidade e pdn morre. Em

contraste, se β = 0, então pdn se propaga na sua totalidade e pmn morre. Quando β = 0,5, o resultado é

uma média das variáveis dos dois pais.

Este método funciona bem em vários problemas interessantes. Escolher quais variáveis serão mescladas é o próximo problema. Às vezes, esse processo de combinação linear é feito para todas as variáveis à direita ou à esquerda de algum ponto de cruzamento (cross-over). Qualquer número de pontos pode ser escolhido para misturar, até Nvar valores, onde todas as variáveis são

combinações lineares daquelas dos dois pais. As variáveis podem ser misturadas usando o mesmo β para cada variável ou escolhendo diferentes β's para cada variável.s para cada variável.

Esses métodos de combinação combinam efetivamente as informações dos dois pais e escolhem valores das variáveis entre os valores agrupados pelos pais, no entanto, eles não permitem a introdução de valores além dos extremos já representados na população. Para isso, é necessário método de extrapolação. O mais simples desses métodos é crossover linear. Neste caso, três filhos são gerados a partir dos dois pais por:

Qualquer variável fora dos limites é descartada em favor das outras duas. Então os dois melhores descendentes são escolhidos para se propagar. Naturalmente, o fator 0,5 não é o único que pode ser usado em tal método.

(7)

pnew=β( pnmpdn)+pnm

Variações sobre este tema incluem a escolha de qualquer número de variáveis para modificar e gerar diferentes β para cada variável. Este método também permite a geração de descendentes fora dos valores das duas variáveis pai. Às vezes, os valores são gerados fora do intervalo permitido. Se isso acontecer, a descendência é descartada e o algoritmo tenta outro β.

O método de cruzamento de mistura (blend cross-over - BLX-a) (Eshelman e Shaffer, 1993) começa escolhendo um parâmetro a que determina a distância fora dos limites das duas variáveis-pai que a variável descendente pode estar. Esse método permite novos valores fora do intervalo dos pais sem deixar que o algoritmo se desvie demais.

Muitos códigos combinam os vários métodos para usar os pontos fortes de cada um. Novos métodos, como crossover quadrático (Adewuya, 1996), fazem um ajuste numérico à função custo. Três pais são necessários para realizar um ajuste quadrático.

Para o nosso exemplo, queremos encontrar uma maneira de imitar de perto as vantagens do esquema de acasalamento do GA binário. Começamos por selecionar aleatoriamente uma variável no primeiro par de pais para ser o ponto de cruzamento. Considerando:

onde os subscritos m e d discriminam entre a mãe e o pai. Então as variáveis selecionadas são combinadas para formar novas variáveis que aparecerão nos filhos:

onde β é também um valor aleatório entre 0 e 1. O passo final é completar o cruzamento com o resto do cromossomo como antes:

(8)

Se a primeira variável dos cromossomos for selecionada, somente as variáveis à direita da variável selecionada serão trocadas. Se a última variável dos cromossomos for selecionada, somente as variáveis à esquerda da variável selecionada serão trocadas. Este método não permite variáveis descendentes fora dos limites definidos pelo pai, a menos que β > 1.

Para nosso exemplo, o primeiro conjunto de pais é dado por:

Um gerador de números aleatórios seleciona p1 como o local do cruzamento. Suponho o número

aleatório selecionado para β = 0,0272. A nova descendência é dada por:

Continuando este processo mais uma vez para o próximo par de filhos, com um β = 0.7898. A nova descendência é dada por:

Mutação

Aqui, como no GA binário, às vezes podemos encontrar nosso método funcionando muito bem. Se não for tomado cuidado, o GA pode convergir muito rapidamente para uma região da superfície de custo. Se esta área estiver na região do mínimo global, isso é bom. No entanto, algumas funções, como a que estamos modelando, possuem muitos mínimos locais. Se não fizermos nada para resolver essa tendência de convergir rapidamente, poderemos acabar em um mínimo local e não global.

Para evitar esse problema de convergência excessivamente rápida, forçamos a rotina a explorar outras áreas da superfície de custo, introduzindo aleatoriamente alterações ou mutações em algumas

(9)

das variáveis. Para o GA binário, isso equivalia a apenas alterar um bit de 0 para 1 e vice-versa. O método básico de mutação não é muito mais complicado para o GA contínuo, basta a variável mutada ser substituída por uma nova variável aleatória. Existem métodos mais complexos, mas não serão abordados aqui.

Assim como no GA binário, escolhemos uma taxa de mutação de 20%. Multiplicando a taxa de mutação pelo número total de variáveis que podem ser mutadas na população, obtém-se 0,20 x 7 x 2 = 3 mutações. Os próximos números aleatórios são escolhidos para selecionar os indivíduos e os genes a serem mutadas.

O primeiro par selecionado é (4,1), ou seja, o primeiro gene do quarto indivíduo da população. Esse gene é então substituído por um número aleatório entre 0 e 10, por exemplo de 5.6130 para 9.8190. Mutações ocorrem mais duas vezes, por exemplo nos pares (4,2) e (7,1). As duas primeiras colunas da tabela abaixo mostram a população após o acasalamento. As próximas duas colunas exibem a população após a mutação. Custos associados após as mutações aparecerem na última coluna. Os valores mutados na tabela aparecem em itálico.

Note que o primeiro cromossomo não é mutado devido ao elitismo. A média do custo desta população é de -3,202. A terceira descendência (linha 7) tem o melhor custo devido ao cruzamento e à mutação. Se o valor de x não fosse mutado, então o cromossomo teria um custo de 0,6 e teria sido eliminado no processo de seleção natural. A figura abaixo mostra a distribuição dos cromossomos após a primeira geração.

(10)

Convergência

O processo descrito é repetido iterativamente até que uma solução aceitável seja encontrada. Para nosso exemplo, a população inicial da segunda geração é mostrada na tabela abaixo após o ordenamento.

Os quatro cromossomos inferiores são descartados e substituídos pelos descendentes dos quatro pais principais. Outras três variáveis aleatórias são selecionadas para mutação dos 7 cromossomos inferiores. Após o acasalamento, mutação e classificação, a população final após três gerações é mostrada na tabela e figura abaixo.

(11)

Essa execução do algoritmo encontrou o custo mínimo (-18,53) em três gerações. O mínimo global de -18,5 é encontrado na geração 3. Todos, exceto dois dos membros da população, estão no vale do mínimo global na geração final. O GA binário poderia ter sido usado neste exemplo, assim como um GA contínuo. Como o problema usava variáveis contínuas, parecia mais natural usar o GA contínuo.

Referências

Documentos relacionados

Ora, sendo o Judaísmo um importante pilar da civilização ocidental e de suas religiões cristãs, aí está mais um ponto de convergência entre estas doutrinas e o

E) CRIE NO SEU CADERNO UM TÍTULO PARA ESSA HISTÓRIA EM QUADRINHOS.. 3- QUE TAL JUNTAR AS SÍLABAS ABAIXO PARA FORMAR O NOME DE CINCO SUGESTÕES DE PRESENTE PARA O DIA

Os parceiros decidirão que áreas de aprendizagem são as melhores para a integração de competências de pensamento algorítmico na educação pré-escolar, de acordo com

O endomarketing deve ser entendido como um protagonista para atrair e reter protagonista para atrair e reter o cliente interno com foco nos.. o cliente interno com foco nos

y Se o Decisor for pelo menos moderadamente optimista então deverá optar pela produção das Lolas Tia. y Nos outros casos, o Decisor deverá optar pela produção de

•  Quanto mais informações corretas você puder dar, melhor será o resultado.. •  Sempre há

Este período se caracteriza como um período de construção de um alicerce para a produção da historiografia brasileira e de transição do século XIX para o século XX, em que

Há uma grande expectativa entre os cientistas de que, nesta próxima década, novos resultados de observações cosmológicas, aliados aos resultados dos grandes aceleradores como o