You are on page 1of 6

Algoritmo Genético(AG) programação e

principais caracterı́sticas
prof. Carolina Ribeiro Xavier
1 de março de 2011

fonte: GSI: Grupo de Sistemas Inteligentes

Como programar um AG?


Há dois aspectos importantes da programação de Algoritmos Genéticos que
diferem um pouco da programação habitual. O primeiro é que é muitı́ssimo
mais difı́cil detectar erros na programação, já que as milhares linhas de código
se utilizarão unicamente como melhoras sobre um esquema inicial de evolução,
e em muitos casos o programa funcionará e ainda fornecerá bons resultados
executando funções incorretas, ao menos aparentemente.
Isto pode ser resolvido com regras de programação mais rı́gidas. Uma
possı́vel solução é estabelecer dois modos de execução do algoritmo ( Modo
”Normal”e Modo ”Detecção de erros”) de forma que no segundo modo se exe-
cutem certas comprovações sobre os processos executado, realizando as provas
no modo ”Detecção de erros”e distribuindo a aplicação no modo ”Normal”.
Porém existem aspectos muito mais interessantes. Ao se programar Algo-
ritmos Genéticos é natural que as idéias aparentemente geniais nem sempre o
sejam. Como havia sido comentado, as milhares de linhas de código consistem
em melhoras sobre um esquema inicial de evolução. É muito comum a existência
de parâmetros que diminuem o número de ciclos necessários para se chegar a
resposta desejada, mas que na prática não são tão rentáveis dado o incremento
da duração dos ciclos.
Como no caso anterior, a solução é mais rigidez na programação. Quando
programamos uma ”idéia genial”é interessante contemplar sempre no programa
ambas as opções, é descer, a inclusão do contrário de tal idéia, e comparar os
resultados em diversas situações. Aqui é onde está o verdadeiro problema, já
que as opções que podem ser prejudiciais em execuções curtas poderiam ser
muito úteis na execução maiores (problemas mais complicados), e precisamente
estas provas nem sempre são possı́veis.
O mesmo ocorre na natureza: as ”idéias geniais”para resolver problemas
ecológicos podem não ser tão geniais assim; Combates a pragas nem sempre são
bem sucedidos porque os cientistas se deparam com a mutação e uma posterior
resistência ao mesmo combate.

1
Estes problemas tem ainda mais uma analogia e uma moral que considera-se
fundamental para o estudo da evolução: na Computação Evolutiva encontra-
mos reflexões e hipóteses que a todas as luzes nos parecem certas, são para nós
completamente evidentes, resultam ser completamente falsas quando as progra-
mamos. Parece que ocorre o mesmo se comparado com o terreno da evolução
das espécies na natureza, incluindo a humana. No Lamarkismo a transmissão
de caracterı́sticas adquiridas é uma hipótese com uma lógica aceitável; e entre-
tanto resultou ser falsa. Bom, pois quando foi estabelecido que sem dúvida o
Lamarkismo não existe, ainda surgem vozes que também com grande coerência
argumentam o contrário. Assim na evolução (como em todo campo de estudo,
porém talvez aqui mais do que em nenhuma outra parte), é muito aconselhável
manter um espirito de curioso, extrair conclusões e sempre analisar as outras
possibilidades.

Definições e Caracterı́sticas Gerais


Codificação
As partes que relacionam um AG com um problema dado são a codificação e a
função de evolução.
Se um problema pode ser representado por um conjunto de parâmetros (ge-
nes), estes podem ser unidos para formar uma cadeia de valores (cromossomo),
este processo se chama codificação. Em genética este conjunto representado
por um cromossomo em particular é referenciado como genótipo, contendo a
informação necessária para construir um organismo, conhecido como fenótipo.
Estes mesmos termos se aplicam em AG, por exemplo, para se desenhar um
aponte, um conjunto de parâmetros especificando o desenho é o genótipo, e a
construção final é o fenótipo. A adaptação de cada indivı́duo depende de seu
fenótipo, no qual se pode inferir seu genótipo.
Por exemplo, para um problema de maximizar uma função de três variáveis,
F(X, Y, Z), se poderia representar cada variável por um número binário de 10
bits, obtendo-se um cromossomo de 30 bits de longitude e 3 genes.
Existem vários aspectos relacionados com a codificação de um problema a
serem tomados em conta no momento de sua realização:
se deve utilizar um alfabeto o menor possı́vel para representar os parâmetros;
normalmente se utiliza um dı́gito binário;
as variáveis que representam os parâmetros do problema devem ser discreti-
zadas para poder representar as cadeias de bits;
a maior parte dos problemas tratados com AG’s são não lineares e muitas
vezes existem relações ”ocultas”entre as variáveis que formam a solução;
o tratamento dos genótipos inválidos deve ser tomado em conta para o de-
senho da codificação.

2
Função de Avaliação
Dado um cromossomo, a função de avaliação consiste em associar um valor
numérico de ”adaptação”, no qual se supõe que é proporcional a sua ”utili-
dade”ou ”habilidade”do indivı́duo representado. Em muitos casos, o desen-
volvimento de uma função de avaliação pode estar baseada no rendimento e
representar somente uma avaliação parcial do problema. Adicionalmente deve
ser rápida, já que vai ser aplicada para cada indivı́duo de cada população e das
sucessivas gerações; devido a este fato, grande parte do tempo gasto por um
algoritmo genético se aplica a função de avaliação.

Convergência Prematura
Um problema dos AG’s devido a uma mal formulação do modelo é aquele no qual
os genes de um poucos indivı́duos relativamente bem adaptados, contudo não
ótimos, podem rapidamente dominar a população causando que converja a um
máximo local. Uma vez que isto ocorre, a habilidade do modelo de buscar me-
lhores soluções é eliminada completamente, e os algoritmo genético se converte
em uma busca lenta largada ao azar. Para evitar este problema, é necessário
controlar o número de oportunidades reprodutivas de cada indivı́duo.

Finalização Lenta
Este é um problema contrário ao anterior, ao longo de muitas gerações, a po-
pulação haverá convergido, mas não haverá localizado o máximo global. A
adaptação será alta e haverá pouca diferença entre o maior e o menor indivı́duo.
Por conseguinte será muito baixa a tendência da função de adaptação a levar
um algoritmo ao máximo As mesmas técnicas na convergência prematura são
utilizadas neste caso.

Reprodução
Durante esta fase de um AG, se selecionam indivı́duos da população sendo
recombinados para formar descendentes que formarão a seguinte geração. Os
pares são selecionados ao azar, usando um método que favorece os indivı́duos
melhor adaptados. Logo que escolhidos os pares, seus cromossomos se mesclam
e combinam usando crossover e mutação. As formas básicas destes operadores
são:
Crossover: toma dos indivı́duos e corta seus cromossomos em uma partição
selecionada ao azar, para produzir os segmentos anteriores e os posteriores, os
posteriores realizam um intercâmbio para obter dois novos cromossomos.
Mutação: um processo importante nos AG’s é a mutação, a pesar de que
está usualmente concebida como um operador cujo papel é secundário. No
caso binário a mutação consiste em substituir com certa probabilidade ( taxa de
mutação) o valor de um bit. Existem basicamente duas maneiras de implementá-
la. A primeira troca o bit que no teste de probabilidade permite (é decidir, se

3
o i-ésimo bit vale 1 e passa o teste de probabilidade, o novo valor conterá zero
na i-ésima posição). Na Segunda, se gera ao azar um novo bit para substituir o
bit que passou no teste de probabilidade. Por tanto, 50% das vezes o novo bit
não trocará de valor e portanto a taxa de mutação será a metade da primeira
técnica.

Convergência
Se um AG foi devidamente implementado, a população evoluirá ao longo de
sucessivas gerações de que a adaptação do melhor indivı́duo, convergirá para
um ótimo global. A convergência é uma progressão uniforme. Um gene será
convertido quando em 95% da população tem o mesmo valor. A população
converge quando todos os genes de cada indivı́duo convergirem.

Caracterı́sticas Gerais
Os Algorı́tmos Genéticos (AGs) são algorı́tmos de otimização global empre-
gando uma estratégia de busca paralela e estruturada, mas aleatória, voltada
em direção da busca de pontos de ”alta aptidão”, ou seja, pontos nos quais a
função a ser minimizada (ou maximizada) tem valores relativamente baixos (ou
altos). Os AGs exploram informações históricas para encontrar novos pontos
de busca onde são esperados melhores desempenhos. Isto é feito através de
processos iterativos, onde cada iteração é chamada de geração.
O ponto de partida para a utilização de AGs, como ferramenta para solução
de problemas, é a representação destes problemas de maneira que os AGs pos-
sam trabalhar adequadamente sobre eles. Tradicionalmente, os indivı́duos são
representados genotı́picamente por vetores binários, onde cada elemento de um
vetor denota a presença (1) ou ausência (0) de uma determinada caracterı́stica:
o seu genótipo. Os elementos podem ser combinados formando as caracterı́sticas
reais do indivı́duo, ou o seu fenótipo.
O princı́pio básico do funcionamento do AGs é que um critério de seleção
vai fazer com que, depois de muitas gerações, o conjunto inicial de indivı́duos
gere indivı́duos masi aptos.
Um método de seleção muito utilizado é o Método da Roleta, onde indivı́duos
de uma geração são escolhidos para fazer parte da próxima geração, através de
um sorteio de roleta. Os indivı́duos são representados na roleta proporcional-
mente ao seu ı́ndice de aptidão. Finalmente, a roleta é girada um determinado
número de vezes, dependendo do tamanho da população, e são escolhidos como
indivı́duos que participarão da próxima geração, aqueles sorteados na roleta.
Um conjunto de operações é necessário para que, dada uma população, se
consiga gerar populações sucessivas que (espera-se) melhorem sua aptidão com
o tempo. Estes operadores são: cruzamento (crossover) e mutação. Eles são
utilizados para assegurar que a nova geração seja totalmente nova, mas possui,
de alguma forma, caracterı́sticas de seus pais. Para prevenir que os melho-
res indivı́duos não desapareçam da população pela manipulação dos operado-
res genéticos, eles podem ser automaticamente colocados na próxima geração,

4
através da reprodução elitista.
Esse ciclo é repetido um determinado número de vezes. Abaixo é mos-
trado um exemplo de Algoritmo Genético. Durante esse processo, os melhores
indivı́duos, assim como alguns dados estatı́sticos, podem ser coletados e arma-
zenados para avaliação.
Esquema do AG simples:
Procedimento AG
{
t = 0;
i n i c i a p o p u l a c a o (P , t ) ;
a v a l i a c a o (P , t ) ;
repita ate ( t = d)
{
t = t + 1;
s e l e c a o d o s p a i s (P , t ) ;
c r o s o v e r (P , t ) ;
mutacao (P , t ) ;
a v a l i a c a o (P , t ) ;
modulo populacao (P , t ) ;
}
}
Onde:
t - tempo atual;
d - tempo determinado para finalizar o algoritmo;
P - população.

Trabalho embrião:
Implementar do zero um AG simples para solução de um dos problemas de
acordo com o grupo:
I) Resolução de sistemas de equação;
II) encontrar as raizes de uma equação;
III) maximizar uma função irrestrita;
IV) minimizar uma função sujeita a uma ou mais restrições.
Passos:

• escolher uma representação, juntamente com uma conversão fenótipo genótipo


(interessante fazermos binário pois é a única que aprendemos até agora);
• desenvolver a função de avaliação para verificar a corretude da aplicação
na função que se deseja otimizar;

• desenvolver um procedimento para iniciar a população que seja aleatório;


• desenvolver um procedimento para iniciar a população que seja mais efi-
ciente em termos de cobertura do espaço de busca;

5
• desenvolver o operador de cruzamento (crosover) (podem,os fazer de 1
ponto como visto na aula anterior);
• desenvolver o operador de mutação;

• desenvolver o operador de seleção;


• ajustar os parâmetros do AG;
• avaliar os possı́veis problemas de projeto (terá ou não elitismo? Podemos
gerar um ou dois filhos? Qual é a hora de parar?);

• avaliar o desempenho do AG, através de gráficos, média de várias execuções,


tempode convergência, entre outras medidas possı́ves.

You might also like