Você está na página 1de 61

COMPUTAO EVOLUTIVA

Grupo de Pesquisas em Computao Evolutiva


Aurora Pozo
Andrea de Fatima Cavalheiro
Celso Ishida
Eduardo Spinosa
Ernesto Malta Rodrigues
Departamento de Informtica
Universidade Federal do Paran

Contedo
Computao Evolutiva ...........................................................................................................1
1.

Introduo ......................................................................................................................3

2.

Algoritmos Genticos.....................................................................................................5
2.1
Populao ............................................................................................................... 7
Indivduos....................................................................................................................... 8
2.2
Avaliao de Aptido (Fitness).............................................................................. 8
2.3
Seleo ................................................................................................................... 8
2.4
Operadores Genticos .......................................................................................... 11
Cruzamento (Crossover) .............................................................................................. 11
Mutao........................................................................................................................ 12
2.5
Gerao ................................................................................................................ 13
2.6
Consideraes finais sobre AGs........................................................................... 13

3.

Tcnicas para Manter Diversidade Populacional em Algoritmos Genticos...............15


3.1
Compartilhamento de Recursos (Sharing) ........................................................... 15
3.2
Evoluo Cooperativa .......................................................................................... 18
3.3
Abordagens Hibridas............................................................................................ 22

4.

Programao Gentica .................................................................................................28


4.1
Viso Geral do Algoritmo de Programao Gentica.......................................... 30
4.2
Representao dos Programas.............................................................................. 31
4.3
Fechamento e Suficincia .................................................................................... 33
4.4
Populao Inicial .................................................................................................. 33
4.5
Funo de Aptido ............................................................................................... 38
4.6
Mtodos de Seleo.............................................................................................. 41
4.7
Operadores Genticos .......................................................................................... 43
4.8
Critrio de Trmino.............................................................................................. 45
4.9
Limitaes ............................................................................................................ 45

5.

Programao Gentica Orientada a Gramticas...........................................................47


5.1
Motivao............................................................................................................. 47
5.2
Representao dos Programas.............................................................................. 49
5.3
Populao Inicial .................................................................................................. 50
5.4
Operadores Genticos .......................................................................................... 51

Referncias Bibliogrficas ...................................................................................................54

1. INTRODUO

Computao Evolucionria (CE) um ramo de pesquisa emergente da


Inteligncia Artificial que prope um novo paradigma para soluo de problemas inspirado
na Seleo Natural (Darwin 1859).
A Computao Evolucionria compreende um conjunto de tcnicas de busca e
otimizao inspiradas na evoluo natural das espcies. Desta forma, cria-se uma
populao de indivduos que vo reproduzir e competir pela sobrevivncia. Os melhores
sobrevivem e transferem suas caractersticas a novas geraes. As tcnicas atualmente
incluem (Banzhaf 1998): Programao Evolucionria, Estratgias Evolucionrias,
Algoritmos Genticos e Programao Gentica. Estes mtodos esto sendo utilizados, cada
vez mais, pela comunidade de inteligncia artificial para obter modelos de inteligncia
computacional (Barreto 1997).
Algoritmos Genticos (AG) e Programao Gentica (PG) so as duas principais
frentes de pesquisa em CE. Os Algoritmos Genticos (AG) foram concebidos em 1960 por
John Holland (Holland 1975), com o objetivo inicial de estudar os fenmenos relacionados
adaptao das espcies e da seleo natural que ocorre na natureza (Darwin 1859), bem
como desenvolver uma maneira de incorporar estes conceitos aos computadores (Mitchell
1997).
Os AGs possuem uma larga aplicao em muitas reas cientficas, entre as quais
podem ser citados problemas de otimizao de solues, aprendizado de mquina,
desenvolvimento de estratgias e frmulas matemticas, anlise de modelos econmicos,
problemas de engenharia, diversas aplicaes na Biologia como simulao de bactrias,
sistemas imunolgicos, ecossistemas, descoberta de formato e propriedades de molculas
orgnicas (Mitchell 1997).

Programao Gentica (PG) uma tcnica de gerao automtica de programas


de computador criada por John Koza (Koza 1992), inspirada na teoria de AGs de Holland.
Em PG possvel criar e manipular software geneticamente, aplicando conceitos herdados
da Biologia para gerar programas de computador automaticamente.
A diferena essencial entre AG e PG que em PG as estruturas manipuladas so
bastante mais complexas, assim como vrias das operaes realizadas pelo algoritmo.
Ambas as tcnicas compartilham a mesma base terica, inspirada na competio entre
indivduos pela sobrevivncia, porm no mantm vnculos de dependncia ou
subordinao.
PG e AGs representam um campo novo de pesquisa dentro da Cincia da
Computao. Neste campo muitos problemas continuam em aberto e a espera de novas
solues e ferramentas. Apesar disso, este paradigma vem se mostrando bastante poderoso
e muitos trabalhos vm explorando o uso de AGs e PG para solucionar diversos problemas
em diferentes reas do conhecimento desde minerao de dados e biologia molecular at o
projeto de circuitos digitais e inmeras tarefas envolvendo otimizao (GECCO 2000).

2. ALGORITMOS GENTICOS

O desenvolvimento de simulaes computacionais de sistemas genticos teve incio


nos anos 50 e 60 atravs de muitos bilogos, mas foi John Holland que comeou a
desenvolver as primeiras pesquisas no tema. Em 1975, Holland publicou "Adaptation in
Natural and Artificial Systems", ponto inicial dos Algoritmos Genticos (AGs). David E.
Goldberg, aluno de Holland, nos anos 80 obteve seu primeiro sucesso em aplicao
industrial com AGs. Desde ento os AGs so utilizados para solucionar problemas de
otimizao e aprendizado de mquinas.
Esses algoritmos simulam processos naturais de sobrevivncia e reproduo das
populaes, essenciais em sua evoluo. Na natureza, indivduos de uma mesma populao
competem entre si, buscando principalmente a sobrevivncia, seja atravs da busca de
recursos como alimento, ou visando a reproduo. Os indivduos mais aptos tero um maior
nmero de descendentes, ao contrrio dos indivduos menos aptos. Os requisitos para a
implementao de um AG so:
Representaes das possveis solues do problema no formato de um cdigo
gentico;
Populao inicial que contenha diversidade suficiente para permitir ao algoritmo
combinar caractersticas e produzir novas solues;
Existncia de um mtodo para medir a qualidade de uma soluo potencial;
Um procedimento de combinao de solues para gerar novos indivduos na
populao;
Um critrio de escolha das solues que permanecero na populao ou que
sero retirados desta;
Um procedimento para introduzir periodicamente alteraes em algumas
solues da populao. Desse modo mantm-se a diversidade da populao e a
possibilidade de se produzir solues inovadoras para serem avaliadas pelo
critrio de seleo dos mais aptos.

A idia bsica de funcionamento dos algoritmos genticos a de tratar as possveis


solues do problema como "indivduos" de uma "populao", que ir "evoluir" a cada
iterao ou "gerao". Para isso necessrio construir um modelo de evoluo onde os
indivduos sejam solues de um problema. A execuo do algoritmo pode ser resumida
nos seguintes passos:

Inicialmente escolhe-se uma populao inicial, normalmente formada por


indivduos criados aleatoriamente;

Avalia-se toda a populao de indivduos segundo algum critrio, determinado


por uma funo que avalia a qualidade do indivduo (funo de aptido ou
"fitness");

Em seguida, atravs do operador de "seleo", escolhem-se os indivduos de


melhor valor (dado pela funo de aptido) como base para a criao de um
novo conjunto de possveis solues, chamado de nova "gerao";

Esta nova gerao obtida aplicando-se sobre os indivduos selecionados


operaes que misturem suas caractersticas (chamadas "genes"), atravs dos
operadores de "cruzamento" ("crossover") e "mutao";

Estes passos so repetidos at que uma soluo aceitvel seja encontrada, at


que o nmero predeterminado de passos seja atingido ou at que o algoritmo
no consiga mais melhorar a soluo j encontrada.

Os principais componentes mostrados na figura 1 so descritos a seguir em mais


detalhes.

Populao

Avaliao de Aptido

Seleo

Cruzamento

Mutao

No

Operadores
genticos

Critrio de
Parada ?
Sim
Retornar Melhor
Indivduo

Figura 1 - Estrutura bsica de um Algoritmo


Gentico
Figure 1

2.1

Populao
A populao de um algoritmo gentico o conjunto de indivduos que esto sendo

cogitados como soluo e que sero usados para criar o novo conjunto de indivduos para
anlise. O tamanho da populao pode afetar o desempenho global e a eficincia dos
algoritmos genticos. Populaes muito pequenas tm grandes chances de perder a
diversidade necessria para convergir a uma boa soluo, pois fornecem uma pequena
cobertura do espao de busca do problema. Entretanto, se a populao tiver muitos
indivduos, o algoritmo poder perder grande parte de sua eficincia pela demora em
avaliar a funo de aptido de todo o conjunto a cada iterao, alem de ser necessrio
trabalhar com maiores recursos computacionais.

Indivduos
O ponto de partida para a utilizao de um algoritmo gentico como ferramenta para
soluo de problemas a representao destes problemas de maneira que os algoritmos
genticos possam trabalhar adequadamente sobre eles. Uma das principais formas
representar cada atributo como uma sequncia de bits e o indivduo como a concatenao
das sequncias de bits de todos os seus atributos. Outras variaes de codificaes binrias
podem ser encontradas em (Holland 1975; Caruana 1988).
A codificao usando o prprio alfabeto do atributo que se quer representar (letras,
cdigos, nmeros reais, etc.) para representar um indivduo tambm muito utilizada.
Alguns exemplos podem ser encontrados em (Meyer 1992; Kitano 1994).
Diversas outras formas so possveis, normalmente a forma mais apropriada est
fortemente ligada ao tipo de problema.

2.2

Avaliao de Aptido (Fitness)


Neste componente ser calculado, atravs de uma determinada funo, o valor de

aptido de cada indivduo da populao. Este o componente mais importante de qualquer


algoritmo gentico. atravs desta funo que se mede quo prximo um indivduo est da
soluo desejada ou quo boa esta soluo.
essencial que esta funo seja muito representativa e diferencie na proporo
correta as ms solues das boas. Se houver pouca preciso na avaliao, uma tima
soluo pode ser posta de lado durante a execuo do algoritmo, alm de gastar mais
tempo explorando solues pouco promissoras.

2.3

Seleo
Dada uma populao em que a cada indivduo foi atribudo um valor de aptido,

existe vrios mtodos para selecionar os indivduos sobre os quais sero aplicados os

operadores genticos. H diversas formas de seleo, entre eles h o mtodo de seleo


por Roleta e o mtodo de seleo por Torneio.
No mtodo de seleo por Roleta (figura 2), cada indivduo da populao
representado na roleta proporcionalmente ao seu ndice de aptido. Assim, para indivduos
com alta aptido dada uma poro maior da roleta, enquanto aos indivduos de aptido
mais baixa, dada uma poro relativamente menor.













 



Figura 2 Mtodo de seleo por Roleta

Neste mtodo, um dos problemas encontrados pode ser o tempo de processamento,


j que o mtodo exige duas passagens por todos os indivduos da populao.
Um exemplo da implementao deste mtodo, segundo (Mitchell 1997) mostrado
a seguir na figura 3:

Inicio
T = soma dos valores de aptido de todos os indivduos da populao
Repita N vezes para selecionar n indivduos
r = valor aleatrio entre 0 e T
Percorra sequencialmente os indivduos da populao, acumulando
em S o valor de aptido dos indivduos j percorridos
Se S >= r ento
Selecione o indivduo corrente
Fim se
Fim Repita
Fim
Figura 3 Algoritmo bsico do mtodo de seleo por Roleta

Um outro mtodo a seleo por Torneio, onde um nmero n de indivduos da


populao escolhido aleatoriamente para formar uma sub-populao temporria. Deste
grupo, o indivduo selecionado depender de uma probabilidade k definida previamente.
Um exemplo bsico da implementao deste algoritmo (Mitchell 1997) mostrado na
figura 4, onde n=2:
Inicio
k = 0.75
Repita N vezes
Escolha 2 indivduos da populao aleatoriamente
r = valor aleatrio entre 0 e 1
Se r < k
O melhor indivduo escolhido
Seno
O pior indivduo escolhido
Fim se
Fim Repita
Fim
Figura 4 Algoritmo bsico do mtodo de Seleo por Torneio

Este mtodo o mais utilizado, pois oferece a vantagem de no exigir que a


comparao seja feita entre todos os indivduos da populao (Banzhaf 1998).

2.4

Operadores Genticos
O principio bsico dos operadores genticos transformar a populao atravs de

sucessivas geraes, estendendo a busca at chegar a um resultado satisfatrio. Os


operadores genticos so necessrios para que a populao se diversifique e mantenha
caractersticas de adaptao adquiridas pelas geraes anteriores. Os operadores de
cruzamento e de mutao tm um papel fundamental em um algoritmo gentico.

Cruzamento (Crossover)
Este operador considerado o operador gentico predominante. Atravs do
cruzamento so criados novos indivduos misturando caractersticas de dois indivduos
"pais". Esta mistura feita tentando imitar (em um alto nvel de abstrao) a reproduo de
genes em clulas. Trechos das caractersticas de um indivduo so trocados pelo trecho
equivalente do outro. O resultado desta operao um indivduo que potencialmente
combine as melhores caractersticas dos indivduos usados como base.
Alguns tipos de cruzamento bastante utilizados so o cruzamento em um ponto e o
cruzamento em dois pontos, mostrados nas Figuras 5 e 6:


  

  











Figura 5 Cruzamento em um ponto

Com um ponto de cruzamento, seleciona-se aleatoriamente um ponto de corte do


cromossomo. Cada um dos dois descendentes recebe informao gentica de cada um dos
pais (Figura 5).


  

  






 

Figura 6 Cruzamento em dois pontos

Com dois pontos de cruzamento, um dos descendentes fica com a parte central de
um dos pais e as partes extremas do outro pai e vice versa (Figura 6).

Mutao
Esta operao simplesmente modifica aleatoriamente alguma caracterstica do
indivduo sobre o qual aplicada (ver Figura 7). Esta troca importante, pois acaba por
criar novos valores de caractersticas que no existiam ou apareciam em pequena
quantidade na populao em anlise. O operador de mutao necessrio para a introduo
e manuteno da diversidade gentica da populao. Desta forma, a mutao assegura que a
probabilidade de se chegar a qualquer ponto do espao de busca possivelmente no ser
zero. O operador de mutao aplicado aos indivduos atravs de uma taxa de mutao
geralmente pequena.


  


  
  





Figura 7 Mutao Simples

2.5

Gerao
A cada passo, um novo conjunto de indivduos gerado a partir da populao

anterior. A este novo conjunto d-se o nome de "Gerao". atravs da criao de uma
grande quantidade de geraes que possvel obter resultados dos Algoritmos Genticos.

2.6

Consideraes finais sobre AGs


Os algoritmos genticos so apropriados para problemas complexos, mas algumas

melhorias devem ser feitas no algoritmo bsico. Muitas aproximaes foram propostas com
o objetivo comum de melhorar AGs. O primeiro grupo de estudos foca na manuteno da
diversidade na populao (De Jong 1989)(Eshelman 1991)(Goldberg 1989)(Goldberg
1990)(Tsutsui1993)(Tsutsui 1994) e inclui: mtodos de compartilhamento de recursos que
utilizam algumas funes sharing para evitar a convergncia de indivduos semelhantes,
mtodos crowding que obrigam a substituio de indivduos novos, restries de
cruzamento, etc.
O segundo grupo visa melhorar o desempenho da capacidade de busca de
algoritmos genticos usando hibridizao (Costa1995)(Glover 1994) (Glover 1995) (Kitano
1990)(Malek

1989)(Mantawy

1999)(Muhlenbein

1998)(Muhlenbein

1992)(Powel

1989)(Ulder 1991). Nesta abordagem algoritmos genticos so usados com um dos


seguintes paradigmas: busca tabu, redes neurais artificiais, simulated annealing, etc.

Entretanto, a maioria dos estudos na literatura tm focado na busca global atravs de AGs,
enquanto a busca local tem sido feita por outros mtodos.
O ltimo grupo de estudos foca em problemas de funes de otimizao, ou em
problemas para encontrar solues timas de Pareto (Cantu-Paz 1999)(Coelho 1999)(
Schaffer 1985)(Srinivas 1993)(Tamaki 1996)(Fonseca 1993)(Hiroyasu 1999)(Horn 1993).
Estes estudos incluem: mtodos para dividir indivduos em subgrupos, cada um
representando uma funo objetivo, combinao de torneio e mtodos de compartilhamento
de recursos, mtodos para dividir solues de Pareto em algumas reas, entre outros.

3. TCNICAS PARA MANTER DIVERSIDADE POPULACIONAL EM


ALGORITMOS GENTICOS

Um dos grandes problemas em algoritmos genticos o problema de convergncia


prematura, onde os genes de alguns indivduos relativamente bem adaptados, contudo no
timos, podem rapidamente dominar a populao causando que o algoritmo convirja a um
mximo local.
Para tentar escapar deste problema algumas tcnicas podem ser utilizadas em
conjunto com algoritmos genticos, como o caso do Compartilhamento de Recursos
(Sharing), da Evoluo Cooperativa e da Hibridizao, descritos a seguir.

3.1

Compartilhamento de Recursos (Sharing)


A analogia da natureza que dentro de um ambiente existem diferentes nichos que

podem suportar diferentes tipos de vidas (espcies ou organismos). O nmero de


organismos contidos dentro de um nicho determinado pela fertilidade do nicho e pela
eficincia de cada organismo para explorar essa fertilidade.
Cavicchio (1970), fez um dos primeiros estudos para tentar induzir nicho como
comportamento em algoritmos genticos. Ele introduziu um mecanismo, o qual chamou
preselection. Nesse esquema, um descendente substitui o indivduo pai se o valor de
aptido dele for maior que o valor de aptido do pai. Desta maneira, a diversidade
mantida na populao porque indivduos tendem a substituir indivduos similares a eles
mesmos.
Outro mecanismo denominado crowding, foi proposto por De Jong (1975) para
manter diversidade na populao. Neste esquema, a substituio de indivduos na
populao modificada para fazer com que novos indivduos substituam outros similares
com menor valor para a funo de aptido dentro da populao.

Goldberg e Richardson (Goldberg 1989) introduziram um mecanismo de


compartilhamento de recursos, conhecido como Sharing. Neste mecanismo, o objetivo
reduzir o valor de aptido de indivduos que tm membros altamente similares dentro da
populao. Um esquema prtico que diretamente usa sharing para induzir nicho e espcie
mostrada na figura 8. Neste esquema, uma funo sharing definida para determinar a
vizinhana e o grau de compartilhamento para cada indivduo da populao.

1.0
Share
s(d)
0.0

Distncia
dij = ||xi xj||

Share

Figura 8 Funo Sharing Triangular (Goldberg 1989)

Para um determinado indivduo o grau de compartilhamento determinado


somando os valores de funo sharing contribudos por todos os outros indivduos na
populao. Indivduos muito similares a outros indivduos requerem um grau muito alto de
compartilhamento, prximo a 1.0, e indivduos menos similares requerem um grau muito
pequeno de compartilhamento, prximo a 0.0. Se um indivduo idntico a um outro
indivduo, seu grau de compartilhamento ser igual a 1.0.
Depois de acumular o nmero total de compartilhamentos, o indivduo que est
sendo avaliado ter seu valor de aptido reduzido, atravs da diviso de seu valor de
aptido pela soma acumulada do total de compartilhamentos.
f(xi)
fs(xi) =

s(d(xi, xj))
j=1

Onde f(xi ) o valor de aptido do indivduo que est sendo avaliado, s(d(xi, xj))
uma funo de compartilhamento como a apresentada na figura 8.
Como resultado, este mecanismo limitar o crescimento descontrolado de espcies
particulares dentro de uma populao. A estrutura bsica de um algoritmo gentico com
sharing pode ser vista a seguir:
Sharing()
{
Iniciar a
Avaliar o
reduzindo
identicos

populao aleatoriamente
valor de aptido dos indivduos da populao,
o valor de acordo com a quantidade de indivduos
ou similares dentro da populao

Enquanto no atingir o nmero de geraes ou o objetivo do


problema
{
Enquanto no atingir o nmero de indivduos da
populao
{
Selecionar indivduos para reproduo
Aplicar operadores genticos para produzir
descendentes
}
Substituir a populao com os descendentes
Avaliar o valor de aptido dos indivduos da nova
populao, reduzindo o valor de acordo com a quantidade
de indivduos idnticos ou similares dentro da
populao
}
}

Figura 9 - Estrutura bsica de um algoritmo gentico com compartilhamento de recursos

Nesta tcnica o algoritmo gentico tradicional modificado no mdulo de avaliao


de aptido. Cada indivduo tem seu valor de aptido reduzido de acordo com a quantidade
de indivduos idnticos ou similares dentro da populao. Com isto, o algoritmo tem uma
menor probabilidade de que muitos indivduos do mesmo nicho sejam selecionados,
forando uma maior diversidade populacional.

3.2

Evoluo Cooperativa
Outra abordagem que lida com problemas complexos a evoluo cooperativa,

proposta por Potter e De Jong (2000). Esta arquitetura modela um ecossistema consistindo
de duas ou mais espcies. Nesta tcnica, as espcies so geneticamente isoladas, ou seja,
indivduos somente cruzam com outros membros de sua espcie. Restries de cruzamento
so foradas simplesmente por evoluir as espcies em populaes separadas. As espcies
interagem entre si dentro de um modelo de domnio compartilhado e tm um
relacionamento cooperativo. O modelo bsico desta abordagem mostrado na figura 10:

Espcie -1

indivduo

Espcie -2

Espcie -1

AE

AE

Populao

Populao

AE

Populao

aptido

Modelo do
Domnio

representante

indivduo

AE

aptido

representante

Espcie 1 - Avaliao

Espcie -3

AE

representante

Populao

Espcie 2 - Avaliao

Espcie -1

Espcie -2

AE

AE

Populao

Populao

representante

Populao

Modelo do
Domnio

Espcie -3
representante

Espcie -2

Modelo do
Domnio

representante

Espcie -3
AE
aptido
indivduo
Espcie 3 - Avaliao

Populao

Figura 10 - Modelo de iterao de espcies (Potter 2000).

AE

Populao

Neste modelo cada espcie evoluda em sua prpria populao. A figura 10 mostra
a fase de avaliao de aptido de cada uma das trs espcies. Para avaliar uma populao
so formadas colaboraes com representantes de cada espcie.
H muitos mtodos possveis para escolher os representantes com os quais
colaborar. Em alguns casos apropriado permitir que o melhor indivduo corrente de cada
populao seja o representante. Em outros casos, estratgias alternativas so preferidas.
Um algoritmo bsico desta tcnica pode ser visto na figura 11:
Inicio
{
t = 0
Para cada espcie S
Inicializar Pt(S) com indivduos aleatrios
Para cada espcie S
Avaliar o valor de aptido de cada indivduo em Pt (S)
Repita Enquanto condio de termino falsa
{
Inicio
Para cada espcie S
Inicio
Selecionar indivduos para reproduo de
Pt(S) baseado no valor de aptido
Aplicar operadores genticos ao grupo de
reproduo para produzir descendentes
Avaliar o valor de aptido dos descendentes
Substituir os membros de Pt (S) com os
descendentes para produzir Pt+1(S)
Fim
t = t + 1
Fim
}
}
Fim

Figura 11 - Algoritmo bsico de Evoluo Cooperativa (Potter 1997).

O algoritmo comea por criar um nmero fixo de populaes. O valor de aptido de


cada membro de cada espcie ento avaliado. Se uma soluo satisfatria para o problema
objetivo no encontrada inicialmente, todas as espcies so evoludas.

Para cada espcie, o algoritmo consiste em selecionar indivduos para reproduo


baseados em seu valor de aptido, como por exemplo atravs da seleo de fitness
proporcional; aplicar operadores genticos como cruzamento e mutao para criao de
descendentes; avaliar o valor de aptido dos descendentes e substituir membros da
populao velha com novos indivduos.
O algoritmo de avaliao do valor de aptido dos indivduos em uma das espcies
mostrado a seguir:

Inicio

{
Escolher representante de cada uma das outras espcies
Para cada indivduo i de S faa avaliao
Inicio
Formar colaborao entre i e representantes de outras
espcies
Avaliar o valor de aptido de colaborao atravs do
problema objetivo
Atribuir o valor de aptido de colaborao a i
Fim
}
Fim

Figura 12 - Avaliao de aptido dos indivduos da espcie S (Potter 1997).

Os indivduos no so avaliados isoladamente, eles so combinados primeiro em


algum domnio dependente com um representante de cada uma das outras espcies. Potter e
De Jong se referem a isto como uma colaborao porque os indivduos sero julgados no
final em quo bem eles trabalham juntos para resolver o problema objetivo.
Se a evoluo estagnar, pode ser que existam poucas espcies no ecossistema com o
qual construir uma boa soluo, ento uma nova espcie ser criada e sua populao
aleatoriamente inicializada. A estagnao pode ser descoberta monitorando a qualidade das
colaboraes pela aplicao da seguinte equao:

f(t) f(t K) < C,


Onde f(t) o valor de aptido da melhor colaborao no tempo t , C uma
constante especificando o aumento do valor de aptido, considerando ter uma melhoria
significante, e K uma constante especificando o tamanho de uma janela evolutiva na qual
uma melhoria significante deve ser feita. Um resumo do algoritmo implementado para esta
tcnica pode ser visto na figura a seguir:
Evoluo Cooperativa()
{
Iniciar cada populao com indivduos aleatrios
Avaliar o valor de aptido dos indivduos de cada populao
Enquanto no atingir o nmero de geraes ou o objetivo do
problema
{
Para cada populao Repita Enquanto no atingir o
nmero de indivduos da populao
{
Selecionar indivduos para reproduo
Aplicar operadores genticos p/produzir
descendentes
}
Avaliar o valor de aptido dos descendentes de cada
populao
Substituir a populao com os descendentes
A cada gerao
{
Escolher representantes de cada populao
Avaliar o valor de aptido de colaborao para o
indivduo i da populao X, verificando se i est
colaborando para atingir o problema objetivo.
Atribuir o valor de aptido de colaborao
}
A cada n geraes
{
Se populao X no est contribuindo ou est
convergindo para um mesmo padro
{
Iniciar populao com indivduos aleatrios
Avaliar o valor de aptido dos indivduos
}
}

Figura

}
}

Figura 13 - Estrutura bsica do algoritmo de Evoluo Cooperativa

No algoritmo, a cada gerao feita uma cooperao entre as populaes, onde


atribudo um valor de aptido para a populao que est sendo avaliada. A cada n geraes,
se a populao que est sendo avaliada possui um valor de aptido muito baixo, essa
populao descartada, e ento criada uma nova populao, a qual ir substitu-la nas
prximas geraes.

3.3

Abordagens Hibridas
Os algoritmos geneticos tradicionais, apesar de robustos, no so os algoritmos de

melhor comportamento em otimizao para qualquer dominio. Na hibridizao algum outro


mtodo de otimizao utilizado em conjunto com AGs, por exemplo Hill-Climbing,
Busca Tabu, etc.... Nesta seo ser apresentada uma estrategia deste tipo utilizando
conceitos da Busca Tabu.
Busca Tabu (proibido) um procedimento heurstico proposto por Glover para
resolver problemas de otimizao combinatria. A idia bsica evitar que a busca por
solues timas termine ao encontrar um mnimo local (Glover 1986). Este tipo de
algoritmo faz uma busca agressiva no espao de solues do problema de otimizao com o
intuito de obter sempre as melhores alternativas que no sejam consideradas tabu. A
heurstica Busca Tabu algumas vezes aceita a soluo considerado tabu (proibida), baseado
no critrio de aspirao que determina quando as restries tabu podem ser ignoradas. Para
melhor visualizao, a figura 14 mostra um esquema geral do processo de busca Tabu, onde
N(x) denota o conjunto de solues vizinhas x no espao de busca e T representa a lista
Tabu. Para implementao do algoritmo Busca Tabu, alguns elementos bsicos devem ser
especificados, tais como:

Movimentos: operadores utilizados para transformar uma soluo em outra;

Lista Tabu: onde sero armazenadas todas as solues anteriores durante o


processo de busca do algoritmo. Essa lista introduzida, no sentido de
guardar caractersticas dos movimentos realizados, para evitar possveis
retornos a solues j visitadas;

Critrio de Aspirao: determinar quando uma restrio Tabu deve ser


ignorada, realizando o movimento independente se classificado como
proibido. Um critrio de aspirao comum ignorar a restrio talvez
quando isso produzir uma soluo melhor do que todas as solues geradas
anteriormente;

Trmino: o processo deve ser finalizado quando no existir mais nenhum


movimento possvel a ser realizado, ou quando atingir o nmero mximo de
iteraes definidas pelo usurio;

Parmetros: deve ser informado o tamanho da lista de restries, nmero


mximo de iteraes, regras de parada, soluo inicial e critrio de
aspirao.
Soluo Inicial x

Encontrar melhor x N (x)

Remover x de N (x)

No
Adicionar a T
x' T ?

Sim

No
x = x

No
Trmino

Sada x (melhor soluo


at o momento)

Figura 14 Mtodo de Busca Tabu (Krishnamachari 1999)

Critrio de
Aspirao
Satisfeito

Sim

O processo inicia selecionando uma soluo aleatria (x). Uma busca local ento
realizada, procurando todas as solues vizinhas, N(x). A partir dessas solues, selecionase a melhor soluo (x), no sendo necessrio que a mesma seja melhor que a soluo
inicial. A soluo inicial ento movida para a melhor soluo vizinha adicionando-se a
nova soluo lista Tabu. A partir dessa nova soluo, realiza-se novamente uma busca
local e novamente a melhor soluo vizinha selecionada como candidata para o prximo
movimento.
Para evitar que um movimento reverso seja realizado, verificam-se os movimentos
das iteraes anteriores armazenados na lista de restries. Se o movimento no se encontra
na lista Tabu ou se satisfeito o critrio de aspirao, o movimento aceito, seno testa-se a
prxima melhor soluo. Esse processo executado at encontrar uma soluo vizinha que
no se encontre na lista Tabu. Enquanto no satisfeito um critrio de trmino, o processo
repetido.
Kurahashi e Terano (2000) propem um Algoritmo Gentico utilizando-se de
mltiplas listas Tabu, auxiliando o algoritmo a alcanar a soluo em problemas
multimodais ou com mais de uma funo objetivo a otimizar.
A maioria dos mtodos convencionais utiliza algoritmos genticos para explorar
candidatos globais e algoritmos adicionais para explorar pontos timos locais. O trabalho
de Kurahashi e Terano prope um novo algoritmo para diretamente armazenar indivduos
dentro de mltiplas listas.
A idia geral do algoritmo a utilizao de duas listas de restries: Lista Longa,
com tamanho m e Lista Curta, com tamanho n, onde m e n so ajustados de acordo com o
problema. Estas listas tero o objetivo de armazenar os melhores indivduos das geraes
anteriores, manter o elitismo, manter a diversidade populacional e evitar a convergncia a
um ponto timo local.
A dinmica dos algoritmos baseia-se na idia que ao final de cada gerao, o melhor
indivduo ser armazenado em ambas as listas. Quando se inicia a prxima gerao e novos
indivduos so selecionados para a reproduo, as listas de restries no deixam que
indivduos similares presentes nas mesmas sejam selecionados. Estas listas de restries

podem ser aplicadas para somente um dos indivduos escolhidos para gerar os
descendentes.
Na Lista Curta sero armazenados apenas os indivduos das iteraes mais recentes.
Quando a lista preenchida completamente, para que um novo indivduo seja adicionado
mesma, o indivduo mais antigo dever ser retirado. Os indivduos pertencentes a esta lista
podem ter o mesmo gentipo.
Na Lista Longa, sero armazenados indivduos de todas as geraes anteriores. Os
indivduos presentes na lista no podero ter gentipo idntico ou similar. Caso surja um
indivduo com um gentipo similar a ser adicionado na Lista Longa, este somente ser
adicionado, se possuir um valor de aptido superior e mediante a retirada do outro
indivduo. Este indivduo retirado da lista sofrer mutao e ser recolocado na populao a
fim de participar das prximas geraes.
Assim, as solues sero gradualmente armazenadas na Lista Longa, ou seja, at no
mximo m solues. Ao final do processo, o conjunto soluo, ser formado pelos
indivduos presentes na Lista Longa.
Testes de otimizaes de funes realizados por este algoritmo foram feitos por
Kurahashi e Terano (2000). Algumas de suas concluses parciais relatam que, com a
adoo desta estratgia, o algoritmo gentico utilizando listas de restries conseguiu cobrir
uma rea maior do espao de busca, se comparado a um algoritmo gentico puro. Para
evitar que as solues convirjam a um pico em uma funo multimodal, eles definem uma
medida de distancia entre um indivduo na lista tabu e um novo candidato. So empregadas
trs medidas de distncia, entre elas a distncia de Hamming, onde calculada a diferena
de bits entre dois gentipos (conforme formula a seguir), e que ser utilizada na
implementao desse algoritmo para comparao com as outras tcnicas.
n

dH(a,b) = |ai bi|


i=1

AG Restrito()
{
Iniciar populao aleatoriamente
Avaliar o valor de aptido dos indivduos da populao
Enquanto no atingir o nmero de geraes ou o objetivo
do problema
{
Selecionar o melhor indivduo da populao
Retornar indivduo da lista longa que seja similar ao
melhor indivduo da populao
Se limiar de distncia entre o melhor indivduo
da populao e o indivduo similar da lista < d
Inserir indivduo na Lista Longa
Seno
Verificar se indivduo selecionado possui valor de
aptido > que indivduo da lista
Se sim
Retirar indivduo da lista
Aplicar mutao
Colocar indivduo retirado da lista
longa na nova populao
Colocar indivduo selecionado na Lista
Longa
Seno
Descartar indivduo selecionado
}
Se Lista Curta no estiver completa
Inserir indivduo na Lista Curta
Seno
{
Descartar o indivduo mais antigo
Inserir novo indivduo na Lista Curta
}
Enquanto no atingir o nmero de indivduos da
populao
{
Selecionar indivduos para reproduo e verificar
se o primeiro indivduo selecionado no possui
indivduos idnticos ou similares na Lista Curta
ou na Lista Longa
Aplicar operadores genticos para produzir
descendentes
}
Avaliar o valor de aptido dos indivduos da nova
populao
Substituir a populao com os descendentes
}

Figura 15 - Estrutura bsica do algoritmo gentico restrito

Quando indivduos gerados por operaes de algoritmos genticos so selecionados


via o mtodo de seleo por torneio, apenas um deles comparado com os indivduos
pertencentes lista tabu (Kurahashi 2000).

Se a diferena de bits entre o indivduo

selecionado e cada um dos indivduos da lista est dentro de uma distncia pr-definida, os
dois indivduos selecionados so descartados e uma nova seleo executada
A estrutura bsica deste algoritmo pode ser vista na Figura 15. No AG Restrito
possvel visualizar as modificaes que foram efetuadas no algoritmo gentico tradicional
para implementao desta tcnica. Aps a populao ter sido criada aleatoriamente e o
valor de aptido ter sido calculado, o melhor indivduo da populao selecionado para
fazer parte das listas de restries. Obedecidos aos critrios de insero na lista longa e na
lista curta, o prximo passo selecionar indivduos para reproduo, verificando se o
primeiro indivduo selecionado no possui indivduos idnticos ou similares nas listas.
Caso negativo, aplicam-se operadores genticos, seno dois novos indivduos so
selecionados. Este processo repetido at que o nmero de indivduos na nova populao
seja atingido. Por fim, o valor de aptido dos indivduos calculado e a populao
substituda pelos novos descendentes.

4. PROGRAMAO GENTICA
Neste captulo fornecida uma explicao sobre a origem, funcionamento e
principais componentes da Programao Gentica e algumas de suas extenses. Vrios
aspectos importantes so detalhados, tais como a gerao da populao inicial e avaliao
dos programas.
O paradigma da Programao Gentica foi desenvolvido por John Koza (Koza
1989; Koza 1992) com base nos trabalhos de John Holland em Algoritmos Genticos
(Holland 1975). Atualmente representa uma rea muito promissora de pesquisa em
Inteligncia Artificial devido a sua simplicidade e robustez. Seu uso tem sido estendido a
problemas de diversas reas do conhecimento, como por exemplo: biotecnologia,
engenharia eltrica, anlises financeiras, processamento de imagens, reconhecimento de
padres, minerao de dados, linguagem natural, dentre muitas outras (Willis 1997)
A Programao Gentica a evoluo de um conjunto de programas com o
objetivo de aprendizagem por induo (Banzhaf 1998). A idia ensinar computadores a se
programar, isto , a partir de especificaes de comportamento, o computador deve ser
capaz de induzir um programa que as satisfaa (Koza 1992). A cada programa associado
um valor de mrito (fitness) representando o quanto ele capaz de resolver o problema.
Basicamente, a Programao Gentica mantm uma populao de programas de
computador, usa mtodos de seleo baseados na capacidade de adaptao (fitness) de cada
programa (escolha dos melhores), aplica operadores genticos para modific-los e
convergir para uma soluo. O objetivo encontrar uma soluo no espao de todos os
programas possveis (candidatos) usando apenas um valor de fitness como auxlio no
processo de busca (Gathercole 1998).
O mecanismo de busca da Programao Gentica pode ser descrito como um
ciclo criar-testar-modificar (Figura 16), muito similar a forma com que os humanos
desenvolvem seus programas. Inicialmente, programas so criados baseados no
conhecimento sobre o domnio do problema. Em seguida, so testados para verificar sua

funcionalidade. Se os resultados no forem satisfatrios, modificaes so feitas para


melhor-los. Este ciclo repetido at que uma soluo satisfatria seja encontrada ou um
determinado critrio seja satisfeito (Yu 1999).

Figura 16: Ciclo criar-testar-modificar

A especificao de comportamento feita normalmente atravs de um conjunto


de valores de entrada-sada, denominados fitness cases, representando o conjunto de
aprendizagem ou treinamento (training set). Com base neste conjunto, a Programao
Gentica procura obter um programa que: (OReilly 1995)

Produza, de forma no trivial, as sadas corretas para cada entrada fornecida.


Isto implica que o programa no deve mapear as entradas e sadas atravs de
alguma forma de tabela de converso. Portanto, o programa dever aprender
necessariamente alguma forma de algoritmo;

Calcule as sadas de tal forma que, se as entradas forem representativamente


escolhidas, o programa ser capaz de produzir sadas corretas para entradas
no cobertas inicialmente.

Por manipular programas diretamente, a Programao Gentica lida com uma


estrutura relativamente complexa e varivel. Tradicionalmente, esta estrutura uma rvore
de sintaxe abstrata composta por funes em seus ns internos e por terminais em seus nsfolha. A especificao do domnio do problema feita simplesmente pela definio dos
conjuntos de funes e terminais (Koza 1992).

4.1

Viso Geral do Algoritmo de Programao Gentica


O algoritmo de Programao Gentica simples e pode ser descrito

resumidamente como:

Criar aleatoriamente1 uma populao de programas;

Executar os seguintes passos at que um Critrio de Trmino seja satisfeito:


Avaliar cada programa atravs de uma funo heurstica (fitness), que expressa
quo prximo cada programa est da soluo ideal;
Selecionar os melhores programas de acordo com o fitness;
Aplicar a estes programas os operadores genticos (reproduo, cruzamento e
mutao)

Retornar com o melhor programa encontrado


Cada execuo deste lao representa uma nova gerao de programas.

Tradicionalmente, o Critrio de Trmino estabelecido como sendo encontrar uma soluo


satisfatria ou atingir um nmero mximo de geraes (Koza 1992). Porm, existem
abordagens baseadas na anlise do processo evolutivo, isto , o lao permanece enquanto
houver melhoria na populao (Kramer 2000).

A gerao inicial representa uma busca cega" pela soluo.

A estrutura bsica do algoritmo de Programao Gentica mostrada na


Figura 17.
Cria Populao
Inicial

Avalia Fitness dos


Indivduos

Atingiu Critrio de
Trmino ?

Retorna com o
melhor programa

Seleo

Escolhe Operador Gentico a Aplicar

Reprodu
o

Cruzament
o

Mutao

Figura 17: Estrutura Bsica do Algoritmo de Programao Gentica.

4.2

Representao dos Programas


A representao dos programas em Programao Gentica tradicionalmente se

baseia em rvore de sintaxe abstrata, isto , os programas so formados pela livre


combinao de funes e terminais adequados ao domnio do problema.
Parte-se de dois conjuntos: F como sendo o conjunto de funes e T como o
conjunto de terminais. O conjunto F pode conter operadores aritmticos (+, -, * etc.),
funes matemticas (seno, log etc.), operadores lgicos (E, OU etc.) dentre outros. Cada f

F tem associada uma aridade (nmero de argumentos) superior a zero. O conjunto T


composto pelas variveis, constantes e funes de aridade zero (sem argumentos).
Por exemplo, considerando o conjunto dos operadores aritmticos de aridade
dois (2) como sendo o conjunto de funes e a varivel x e a constante dois (2) como
terminais, isto :
F={+, -, *, /}
T = { x, 2 }
ento expresses matemticas simples tais como x*x+2

podem ser produzidas.

A representao feita por uma rvore de sintaxe abstrata como mostrado na Figura 18.

*
x

2
x

Figura 18: rvore de Sintaxe Abstrata de x*x+2


O espao de busca determinado por todas as rvores que possam ser criadas
pela livre combinao de elementos dos conjuntos F e T.

4.3

Fechamento e Suficincia
Para garantir a viabilidade das rvores de sintaxe abstrata, John Koza definiu a

propriedade de Fechamento (closure) (Koza 1992). Para satisfaz-la, cada funo do


conjunto F deve aceitar, como seus argumentos, qualquer valor que possa ser retornado por
qualquer funo ou terminal. Esta imposio garante que qualquer rvore gerada pode ser
avaliada corretamente.
Um caso tpico de problema de Fechamento a operao de diviso.
Matematicamente, no possvel dividir um valor por zero. Uma abordagem possvel
definir uma funo alternativa que permita um valor para a diviso por zero. o caso da
funo de diviso protegida (protected division) % proposta por (Koza 1992).
A funo % recebe dois argumentos e retorna o valor 1 (um) caso seja feita uma diviso por
zero e, caso contrrio, o seu quociente.
Para garantir a convergncia para uma soluo, John Koza definiu a propriedade
de Suficincia (sufficiency) onde os conjuntos de funes F e o de terminais T devem ser
capazes

de

representar

uma

soluo

para

problema

(Koza

1992).

Isto implica que deve existir uma forte evidncia de que alguma composio de funes e
terminais possa produzir uma soluo. Dependendo do problema, esta propriedade pode ser
bvia ou exigir algum conhecimento prvio de como dever ser a soluo.

4.4

Populao Inicial
Tradicionalmente, a populao inicial composta por rvores geradas

aleatoriamente a partir dos conjuntos de funes F e de terminais T. Inicialmente se escolhe


aleatoriamente uma funo f F. Para cada um dos argumentos de f, escolhe-se um
elemento de { F T }. O processo prossegue at que se tenha apenas terminais como nsfolha da rvore. Usualmente se especifica um limite mximo para a profundidade da rvore
para se evitar rvores muitos grandes.

Porm, a qualidade da populao inicial um fator crtico para o sucesso do


processo evolutivo (Daida 1999). A populao inicial deve ser uma amostra significativa do
espao de busca, apresentando uma grande variedade de composio nos programas, para
que seja possvel, atravs da recombinao de seus cdigos, convergir para uma soluo.
Para melhorar a qualidade dos programas gerados na populao inicial, h
diversos

mtodos,

sendo

os

mais

comuns

(Luke 2001):

ramped-half-and-half

(Koza 1992), random-branch (Chellapilla 1997), uniform (Bohm 1996) e, mais


recentemente, probabilistic tree-creation (Luke 2000).
O mtodo ramped-half-and-half (Koza 1992) uma combinao de dois
mtodos simples: grow e full. O mtodo grow envolve a criao de rvores cuja
profundidade2 varivel. A escolha dos ns feita aleatoriamente entre funes e
terminais, respeitando-se uma profundidade mxima. O algoritmo muito simples e est na
Figura 19.

Dados:
Profundidade mxima D
Conjunto de funes F e de terminais T
Faa:
rvore = GROW(0)
GROW(profundidade d)
Retorna: uma rvore de profundidade mxima D - d
Se d = D
Retorne aleatoriamente um terminal de T
Seno
Escolha aleatoriamente um elemento e { F T }
Se e F
Para cada argumento a de e
Preencha a com GROW(d + 1)
Retorne f com todos os argumentos preenchidos
Figura 19: Algoritmo Grow
2

A profundidade de um n n em uma rvore o comprimento de caminho da raiz at n. A profundidade de


uma rvore o n de maior profundidade (Terada 1991)

J o mtodo full envolve a criao de rvores completas, isto , todas as rvores


tero a mesma profundidade. Isto facilmente feito atravs da seleo de funes para os
ns cuja profundidade seja inferior a desejada e a seleo de terminais para os ns de
profundidade mxima.
Combinar os mtodos full e grow com objetivo de gerar um nmero igual de
rvores para cada profundidade, entre dois e a profundidade mxima, a base do mtodo
ramped-half-and-half (Koza 1992). Por exemplo, supondo que a profundidade mxima seja
seis, ento sero geradas rvores com profundidades de dois, trs, quatro, cinco e seis
eqitativamente. Isto significa que 20% tero profundidade dois, 20% tero profundidade
trs e assim sucessivamente. Para cada profundidade, 50% so geradas pelo mtodo full e
50% pelo mtodo grow.
As desvantagens deste mtodo so (Luke 2000):

Impe uma faixa fixa de profundidades (normalmente entre 2 e 6),


independentemente do tamanho da rvore. Dependendo do nmero de
argumentos (aridade) de cada funo, mesmo com a mesma profundidade,
podem ser geradas rvores de tamanhos3 muito diferentes;

A escolha da profundidade mxima, antes de se gerar a rvore, no


aleatria e sim de forma proporcional;

Se o conjunto de funes for maior que o de terminais (como na maioria dos


problemas),

tendncia

gerar

maior

rvore

possvel

ao

aplicar grow;
O mtodo random-branch (Chellapilla 1997) permite que se informe qual o
tamanho mximo da rvore (e no a sua profundidade). O algoritmo est na Figura 20.

O tamanho de uma rvore o nmero de ns que a compem (Koza 1992).

RANDOM-BRANCH(tamanho mximo desejado S)


Retorna: uma rvore de tamanho S
Se um no-terminal com aridade S no existe
Retorne aleatoriamente um terminal
Seno

Escolha aleatoriamente um no-terminal n com aridade S


Seja bn a aridade de n
Para cada argumento a de n
Preencha a com RANDOMBRANCH( a / bn )
Retorne n com todos os argumentos preenchidos

Figura 20: Algoritmo Random-Branch


Porm, devido ao fato de random-branch dividir igualmente S dentre as rvores
de um n-pai no-terminal, existem muitas rvores que no so possveis de serem
produzidas. Isto torna o mtodo muito restritivo apesar de ter complexidade linear (Luke
2001).
O mtodo uniform foi desenvolvido por Bohm com o objetivo de garantir que as
rvores so geradas uniformemente do conjunto de todas as rvores possveis (Bohm 1996).
O algoritmo extremamente complexo, pois necessita calcular em vrias tabelas o nmero
de

rvores

possveis

de

serem

geradas

para

cada

tamanho

desejado.

A desvantagem deste mtodo o seu alto custo computacional. Um exemplo de aplicao


deste mtodo a ferramenta GPK de Helmut Horner (Horner 1996).
Os mtodos probabilistic tree-creation (PTC) 1 e 2 (Luke 2000), ao contrrio
dos outros mtodos, no procuram gerar estruturas de rvores completamente uniformes.
Ao invs disso, permite definir as probabilidades de ocorrncia das funes na rvore.
O PTC1 uma variante do grow onde para cada terminal t T, associa-se uma
probabilidade qt dele ser escolhido quando houver necessidade de um terminal. O mesmo
se faz com cada f F, associando-se uma probabilidade qf. Antes de gerar qualquer rvore,
o algoritmo calcula p, a probabilidade de escolher um no-terminal ao invs de um

terminal, de forma a produzir uma rvore de tamanho esperado Etree. A obteno do valor
de p feita pela frmula a seguir:

1
Etree
p=
qn bn
1

onde bn a aridade do no-terminal n

(1)

nN

O algoritmo do PTC1 est na Figura 21

Dados:
Profundidade mxima D
Conjunto de funes F e de terminais T
A probabilidade p de escolher uma funo
As probabilidades qt e qf para cada t T e f F
Faa:
rvore = PTC1(0)
PTC1(profundidade d)
Retorna: uma rvore de profundidade mxima D - d
Se d = D
Retorne aleatoriamente um terminal de T baseado em qt
Seno
Com probabilidade p, Se uma funo deve ser escolhida
Escolha aleatoriamente f F baseado em qf
Para cada argumento a de e
Preencha a com PTC1(d + 1)
Retorne f com todos os argumentos preenchidos
Seno
Retorne aleatoriamente um terminal de T baseado em qt
Figura 21: Algoritmo PTC1
PTC1 garante que as rvores sero geradas dentro de um tamanho esperado.
Uma variante deste mtodo (PTC2) usa um tamanho mximo S e uma distribuio de
probabilidades w1, w2, ...ws para cada rvore de tamanho 1 a S. Alm do controle sobre o
tamanho esperado da rvore, tem-se um controle sobre a distribuio destes tamanhos.

4.5

Funo de Aptido
Na natureza os seres vivos so selecionados naturalmente com base no seu grau

de adaptabilidade ao meio ambiente. Em Programao Gentica, isto expresso pela


funo de aptido ou fitness. Os programas que melhor resolverem o problema recebero
melhores valores de fitness e, consequentemente, tero maior chance de serem selecionados
para reproduzir.
A avaliao de fitness depende do domnio do problema e pode ser medida de
diversas formas, tanto direta quanto indiretamente. Para fins deste trabalho, apenas os
domnios que permitam uma avaliao direta de fitness so considerados..
Usualmente, para se proceder avaliao de fitness, fornecido um conjunto de
casos de treinamento, denominados fitness cases, contendo valores de entrada e sada a
serem aprendidos. A cada programa fornecido os valores de entrada e confronta-se a sua
resposta ao valor esperado de sada. Quanto mais prxima a resposta do programa estiver
do valor de sada, melhor o programa.
Desta forma, a avaliao de fitness estabelece uma forma de se diferenciar os
melhores dos piores, servindo como a fora mestre do processo evolutivo, sendo a medida
(usada durante a evoluo) do quanto o programa aprendeu a predizer as sadas das
entradas dentro de um domnio de aprendizagem (Banzhaf 1998).
A escolha da funo de fitness, assim como a escolha do mtodo de avaliao
utilizado por esta funo, depende do problema. Boas escolhas so essenciais para se
obterem bons resultados, j que a funo de fitness a fora-guia que direciona o algoritmo
de Programao Gentica na busca pela soluo (Gritz 1993).
Os mtodos comumente usados para avaliao de fitness so (Koza 1992):
1) Aptido nata (raw fitness): representa a medida dentro do prprio domnio do
problema. a avaliao pura e simples do programa frente aos fitness cases. O mtodo

mais comum de aptido nata a avaliao do erro cometido, isto , a soma de todas as
diferenas absolutas entre o resultado obtido pelo programa e o seu valor correto.
2) Aptido padronizada (standardized fitness): Devido ao fato da aptido nata depender
do domnio do problema, uma valor bom pode ser um valor pequeno (quando se avalia
o erro) ou um valor grande (quando se avalia a taxa de eficincia). A avaliao da
aptido padronizada feita atravs de uma funo de adaptao do valor da aptido nata
de forma que quanto melhor o programa, menor deve ser a aptido padronizada . Desta
forma, o melhor programa apresentar o valor zero (0) como aptido padronizada,
independentemente do domnio do problema.
3) Aptido ajustada (adjusted fitness): obtida atravs da aptido padronizada. Se
s(i, t) representa a aptido padronizada do indivduo i na gerao t, ento a aptido
ajustada a(i, t) calculada da seguinte forma:

a (i, t ) =

1
1 + s (i, t )

(2)

Percebe-se que a aptido ajustada varia entre zero (0) e um (1), sendo que os maiores
valores representam os melhores indivduos. A aptido ajustada tem o benefcio de
exagerar a importncia de pequenas diferenas no valor da aptido padronizada quando
esta se aproxima de zero (Koza 1992).
4) Aptido normalizada (normalized fitness): se a(i, t) a aptido ajustada do indivduo
i na gerao t, ento sua aptido normalizada n(i, t) ser obtida da seguinte forma:
n (i , t ) =

a (i , t )
m

a (k , t )

(3)

k =1

fcil perceber que a soma de todas as aptides normalizadas dentro de uma populao
vale um (1).

Para uma melhor comprenso de como pode ser feita a avaliao de fitness, suponha
os seguintes valores de fitness cases mostrados na Tabela 1.

ENTRADA

SADA

FITNESS CASE 1

FITNESS CASE 2

FITNESS CASE 3

17

FITNESS CASE 4

37

FITNESS CASE 5

65

Tabela 1: Conjunto de Fitness Cases

Com base neste conjunto, deseja-se descobrir um programa que seja capaz de
produzir as sadas para cada entrada informada. fcil perceber que a funo
f(x) = x2+1 uma soluo vlida neste caso.
A aptido nata (raw fitness) para este tipo de problema pode ser a soma das
diferenas absolutas da resposta do programa pela sada correta (Minkowski distance). Para
cada programa p pertencente a populao P, associa-se um valor fp que representa o seu
fitness obtido na avaliao dos n fitness cases informados. O valor de fp obtido pela
frmula:
f p = pi si

(4)

Onde pi representa a resposta do programa ao i-simo fitness case e si, a sada


correta. Quanto mais perto o valor de pi estiver de si, menor ser o valor de fp e melhor ser
o programa. Neste caso, esta avaliao de fitness tambm considerada uma aptido
padronizada (standardized fitness).

Em algumas aplicaes, interessante reforar a diferena entre os diversos


valores de fitness de uma populao. Uma variao muito comum somar o quadrado das
diferenas (squared error), como a frmula a seguir:
n

f p = ( pi si )

(5)

i =1

Qual o real impacto do uso destas funes de fitness? Para melhor esclarecer,
considere que o programa x2 + x est sendo avaliado. A Tabela 2 mostra os resultados
obtidos em cada uma das funes para os valores da Tabela 1.

ENTRADA

SADA

PROGRAMA

ERRO ABSOLUTO

ERRO QUADRTICO

FITNESS CASE 1

FITNESS CASE 2

FITNESS CASE 3

17

20

FITNESS CASE 4

37

42

25

FITNESS CASE 5

65

72

49

17

85

Valor de fitness

Tabela 2: Dois Mtodos de Clculo de Fitness

As duas formas de avaliao de fitness apresentadas so adequadas quando o


comportamento do programa pode ser descrito atravs do conjunto de fitness cases, isto ,
uma tabela de valores de entrada e sada. Uma categoria tpica destes problemas a
Regresso Simblica.

4.6

Mtodos de Seleo
O mtodo de seleo tem por objetivo escolher quais programas devero sofrer a

ao dos operadores genticos e compor uma nova gerao. Dado que a qualidade de um

programa dada pelo seu valor de fitness, a seleo deve preferenciar, de alguma forma, os
programas que apresentem os melhores valores de fitness.
Os mtodos atualmente usados so (Blickle 1995): Seleo Proporcional,
Seleo por Torneio, Seleo por Truncamento, Seleo por Nivelamento Linear e Seleo
por Nivelamento Exponencial.
1) Seleo Proporcional (fitness-proportionate selection): Apresentada por John Holland
(Holland 1975) para Algoritmos Genticos, foi o mtodo escolhido por John Koza no
seu primeiro livro (Koza 1992). Usa a aptido normalizada disposta em uma roleta,
sendo que cada indivduo da populao ocupa uma fatia proporcional a sua aptido
normalizada. Em seguida produzido um nmero aleatrio entre zero (0) e um (1). Este
nmero representar a posio ocupada pela agulha da roleta. Apesar de seu grande
sucesso devido a sua simplicidade, este mtodo muito afetado pela escalabilidade da
aptido normalizada (Blickle 1995).
2) Seleo por Torneio (tournament selection): Apresentada por David Goldberg
(Goldberg 1991) para Algoritmos Genticos, foi utilizada em vrios problemas por John
Koza no seu segundo livro (Koza 1994). A seleo por torneio feita da seguinte
forma: t indivduos so escolhidos aleatoriamente da populao e o melhor deles o
escolhido. Este processo repetido at que se tenha uma nova populao. O valor de t
conhecido como o tamanho do torneio.
3) Seleo por Truncamento (truncation selection): Com base em um valor de limiar
(threshold) T entre zero (0) e um (1), a seleo feita aleatoriamente entre os T
melhores indivduos (Muhlenbein 1993). Por exemplo, se T = 0.4, ento a seleo
feita entre os 40 % melhores indivduos e os outros 60 % so descartados.
4) Seleo por Nivelamento Linear (linear ranking selection): Sugerido por Baker
(Baker 1989) para eliminar as srias desvantagens do uso de seleo proporcional. Para
tal, os indivduos so ordenados de acordo com os valores de fitness e o nvel N

associado ao melhor indivduo e o nvel 1, ao pior. Em seguida, a cada indivduo i


associada uma probabilidade pi de ser selecionado.

pi =

O valor de

n+
N

onde i {1,2,...N},
1
+
i 1
n + (n n )

N
N 1
n- 0 e n+ + n- = 2

(6)

representa a probabilidade do melhor indivduo ser escolhido e

n
N

, a do

pior ser escolhido. interessante perceber que cada indivduo pertence a um nico
nvel, isto , mesmo que dois indivduos tenham o mesmo fitness, eles apresentam
probabilidades diferentes de serem escolhidos.
5) Seleo por Nivelamento Exponencial (exponential ranking selection): A seleo por
nivelamento exponencial se diferencia do Nivelamento Linear apenas no fato das
probabilidades pi serem exponencialmente ponderadas (Baker 1989). Um parmetro c
entre zero (0) e um (1) usado como base. Quanto mais prximo de um, menor a
exponencialidade da seleo. Tal como no Nivelamento Linear, os indivduos so
ordenados de acordo com os valores de fitness e o nvel N associado ao melhor
indivduo e o nvel 1, ao pior. Em seguida, a cada indivduo i associada uma
probabilidade pi de ser selecionado.

pi =

4.7

c 1 N i
c
onde i {1,2,...N}
c N 1

(7)

Operadores Genticos
Uma vez que os indivduos tenham sido selecionados, deve-se aplicar um dos

operadores genticos. Os trs operadores principais so (Koza 1992):


1) Reproduo: um programa selecionado e copiado para a prxima gerao sem sofrer
nenhuma mudana em sua estrutura.

2) Cruzamento (crossover): dois programas so selecionados e so recombinados para


gerar outros dois programas. Um ponto aleatrio de cruzamento escolhido em cada
programa-pai e as rvores abaixo destes pontos so trocadas. Um exemplo de
cruzamento pode ser visto na Figura 22. Neste exemplo, foram escolhidos os
programas: ((2*(x+x))+1) e (((x+1)*x)-2). Foram escolhidos aleatoriamente um n
em cada rvore, identificado com um traado mais denso na figura. As rvores so
ento trocadas, gerando os novos programas: ((x+1)+1) e (2*((x+x)*x)-2
+

+
x

Figura 22: Exemplo de Cruzamento Entre Dois Programas


Para que o cruzamento seja sempre possvel, o conjunto de funes deve apresentar a
propriedade de Fechamento (closure), isto , as funes devem suportar como argumento

qualquer outra funo ou terminal. Se no for possvel, devem-se estabelecer critrios de


restrio na escolha dos pontos de cruzamento.

3) Mutao (mutation): um programa selecionado e um de seus ns escolhido


aleatoriamente. A rvore cuja raiz o n selecionado ento eliminada e substituda
por uma nova rvore gerada aleatoriamente.

4.8

Critrio de Trmino
responsvel por interromper o lao de repetio do processo evolutivo que,

idealmente, no teria fim. O critrio mais comum limitar o nmero mximo de geraes
ou at que uma soluo satisfatria seja encontrada (Koza 1992), porm existem critrios
baseados no prprio acompanhamento do processo evolutivo, isto , enquanto houver
melhoria na mdia da populao, o processo evolutivo prossegue (Kramer 2000)

4.9

Limitaes
A obrigatoriedade da propriedade de fechamento (closure) limita os domnios a

serem usados, no possibilitando a aplicao ampla da Programao Gentica. A


necessidade do fechamento devida ao uso irrestrito dos operadores genticos nos
programas. Para contornar estes problemas, John Koza4 (Koza 1992) props alteraes que
devem ser feitas no algoritmo para adequ-lo a domnios que apresentem restries
sintticas. Porm, estas alteraes direcionam o algoritmo para solucionar problemas de
determinado tipo, restringindo a sua aplicabilidade.
Por exemplo, para encontrar uma soluo em forma de Srie de Fourier, John
Koza props a adoo de trs restries (Koza 1992):

O n-raiz da rvore deve ser obrigatoriamente a funo especial &.

Captulo 19 Evolution of Constrained Syntatic Structures, pg. 479 a 526.

As nicas funes possveis abaixo de uma & so as funes trigonomtricas


xsin, xcos e &.

As nicas funes permitidas abaixo das trigonomtricas so as funes


aritmticas (+, -, *, %5) ou uma constante.

A funo especial & faz o mesmo que a funo soma (+). A funo xsin
definida como tendo dois argumentos (arg0 e arg1) e seu clculo arg1*sin(arg2*x),
sendo que o valor de arg2 arredondado para o inteiro mais prximo. De forma
semelhante, define-se a funo xcos.
Estas restries tornam-se necessrias pois uma Srie de Fourier tem a forma:

a0 + (ai cos + bi sin )


i =1

Estas restries so mantidas atravs da identificao do tipo de cada n,


evitando que os operadores genticos violem o formato pr-determinado. Apesar deste
mtodo funcionar adequadamente para as Sries de Fourier, ele representa uma abordagem
que exige a adequao do algoritmo para cada problema que apresente restries em termos
de formato de soluo.
Para permitir a aplicabilidade da Programao Gentica a qualquer problema
que imponha restries sintticas, Frederic Gruau (Gruau 1996) props o uso de
gramticas. Ao invs de simplesmente informar os conjuntos F e T, as regras de formao
dos programas tambm so fornecidas. Desta forma possvel guiar genericamente a
aplicao dos operadores genticos a fim de produzir programas sintaticamente corretos
frente ao domnio. No captulo a seguir, as alteraes necessrias para permitir o uso de
gramticas em Programao Gentica so apresentadas.
5

Referindo-se a funo de diviso protegida, isto , % idntica a / com exceo de que uma diviso por zero
resulta em um (Koza 1992)

5. PROGRAMAO GENTICA ORIENTADA A GRAMTICAS


Neste captulo apresenta-se as alteraes necessrias para adequar o algoritmo
da Programao Gentica a problemas descritos atravs de uma gramtica6. Inicialmente,
so apresentadas as vantagens do uso de gramticas em Programao Gentica. Em
seguida, as mudanas na representao da populao so descritas. As modificaes
necessrias no processo de criao da populao e na atuao dos operadores genticos so
discutidas no decorrer do texto.

5.1

Motivao
Tradicionalmente, a linguagem alvo usada para Programao Gentica o LISP

(Banzhaf 1998). Graas a sua sintaxe simples e ao fato de tanto dados como programas
terem o mesmo formato (S-expressions), tornou-se a linguagem ideal para evoluir
programas (Angeline 1994). As S-expressions podem ser:

Um tomo, isto , um smbolo (varivel, funo etc.) ou um no-smbolo


(nmero, cadeia de caracteres etc.);

Uma lista, composta por smbolos ou no-smbolos, no formato


( S-expr S-expr ...), por exemplo, (+ 1 2), (A (B C ));

A avaliao de uma S-expression simples:

Para avaliar um tomo, se ele um no-smbolo, a sua avaliao o prprio


no-smbolo. Caso seja uma varivel, a sua avaliao o valor atual da
varivel;

Para avaliar uma lista, assume-se que o primeiro elemento uma funo,
sendo os elementos seguintes, seus argumentos.

No Anexo A apresentamos um resumo sobre gramticas para facilitar o entendimento deste captulo.

Portanto possvel tratar os programas diretamente como se fossem dados,


facilitando a gerao e a aplicao dos operadores genticos. Desta forma, a especificao
de funes e terminais suficiente para evoluir programas.
Porm, as diversas linguagens de programao, tais como C, Pascal ou Prolog,
impem restries de formato e tipo, tornando muito difcil a aplicao da Programao
Gentica diretamente nestas linguagens. Alm disto, h domnios em que restries, quanto
ao formato ou tipo, devem ser satisfeitas, tais como as Sries de Fourier apresentadas
anteriormente.
Desta forma, a necessidade de se impor ou restringir o formato dos programas,
seja por causa de sua linguagem ou por restries de formato, exige mudanas no algoritmo
de Programao Gentica. Para cada tipo de linguagem ou restrio, h a necessidade de se
adequar o algoritmo.
De forma a tornar a Programao Gentica realmente genrica, isto , aplicvel
a

qualquer

problema

cuja

soluo

possa

ser

em

forma

de

um

programa,

Frederic Gruau (Gruau 1996) props o uso de gramticas. A generalizao se torna possvel
pelo fato de atualmente as linguagens de programao serem facilmente descritas por uma
gramtica.
Para o uso de gramticas em Programao Gentica, tornam-se necessrias
modificaes na forma de criao da populao inicial e na atuao dos operadores
genticos. Estas alteraes visam a preservao da consistncia sinttica dos programas
durante o processo evolutivo e representam extenses dos originais com S-expressions
(Whigham 1996).
As principais modificaes com relao a Programao Gentica tradicional so
explicadas nas sees que seguem. Inicialmente, mostra-se a representao dos programas
atravs de rvore de derivao. Posteriormente, o algoritmo de criao da populao inicial
detalhado. As alteraes necessrias ao comportamento dos operadores genticos so
apresentadas no final do captulo.

5.2

Representao dos Programas


A representao dos programas criados a partir de uma gramtica pode ser feita

atravs de sua rvore de sintaxe concreta ou rvore de derivao (Whigham 1995;


Ratle 2000). Por exemplo, considere a gramtica G = {N, , S, P} apresentada a seguir:

= { X, +, -, *, / }

N = { <exp>, <op>, <var> }


S =

<exp>

P = { <exp> <var> |
(<exp> <op> <exp>)
<op>

<var>

+ | - | * | /
x }

A rvore de derivao para uma das possveis expresses derivveis de G, tal


como (x+(x*x)), est na Figura 23.

Figura 23: rvore de Derivao para (x + (x *x) )

5.3

Populao Inicial
O processo de criao de um programa baseado em uma gramtica simples.

Partindo-se do smbolo inicial S, a rvore construda atravs da aplicao sucessiva de


produes a cada no-terminal, at que no seja mais possvel aplicar nenhuma produo
(Sethi 1996; Terry 1997). Se os ns-folha neste instante forem compostos somente por
terminais, diz-se que a rvore est completa. Uma profundidade mxima geralmente
especificada para evitar rvores muito grandes. Apesar de semelhante ao mtodo grow
(Koza 1992), no possvel, durante a gerao da rvore, prever sua profundidade mxima.
Somente aps a rvore completa possvel avaliar sua profundidade. Isto leva a criao de
um nmero expressivo de rvores que sero simplesmente rejeitadas.
Para

evitar

rejeio

de

rvores

recm

criadas,

Peter

Whigham

(Whigham 1996) props um mtodo que se baseia em duas fases7. A primeira se preocupa
em calcular o nmero mnimo de derivaes de cada produo e a segunda, gera as rvores
com base na profundidade desejada.
O algoritmo da primeira fase est na Figura 24.

Inicialmente, todas as produes tem MIN_DERIV, igual a -1.


Para cada produo na forma A x1 x2 ... xn onde x1 x2 ... xn *
Adota-se MIN_DERIV(A x1 x2 ... xn) igual a zero(0).
Enquanto houver uma produo A com MIN_DERIV(A ) = -1
Se todos os no-terminais ti , apresentarem MIN_DERIV(ti) -1
MIN_DERIV(A ) = MAX( MIN_DERIV(ti) ) + 1.

Figura 24: Algoritmo para o Clculo do Nmero Mnimo de Derivaes

Este mtodo tambm foi usado por Alain Ratle e Michele Sebag em (Ratle 2000)

Na segunda fase so criadas as rvores propriamente ditas atravs de um


algoritmo semelhante ao grow (Koza 1992). O algoritmo est na Figura 25.

Dados:
Profundidade mxima D
Conjunto de produes P
Smbolo inicial S
Faa:
rvore = GROW(S, D)
GROW(smbolo inicial S, profundidade mxima d)
Retorna: uma rvore de derivao com profundidade mxima d
Se d = 1
Retorne aleatoriamente uma produo S x onde x *
Seno
Selecione aleatoriamente uma produo S onde {N }* onde
MIN_DERIV(S) d
Para cada no-terminal A
Anexe a rvore retornada por GROW(A, d-1)
Retorne a rvore de derivao cuja raiz o no-terminal S

Figura 25: Algoritmo para Criao da rvore de Derivao

5.4

Operadores Genticos
A atuao dos operadores de cruzamento e mutao devem respeitar a gramtica

usada, a fim de produzir programas vlidos. Para o cruzamento, necessrio que os pontos
de

cruzamento

sejam

do

mesmo

tipo,

isto

pertencer

ao

mesmo

no-terminal. Um exemplo de um cruzamento entre duas rvores de derivao est na


Figura 26.

<exp>

<exp>

<exp>

<op>

<exp>

<fun>

<var>

<kte>

sin

<exp>

<exp>

<op>

<exp>

<var>

<var>

<exp>

<exp>

<exp>

<op>

<var>

<exp>

<var>

<exp>

<op>

<exp>

<fun>

<exp>

<kte>

sin

<var>

Figura 26: Exemplo de Cruzamento em rvores de Derivao8

Para fins de legibilidade, os parntesis foram propositavelmente omitidos.

O algoritmo para o operador de cruzamento est na Figura 27.

Dados:
Duas rvores de derivao P1 e P2
Profundidade mxima D
Faa:
CROSSOVER(P1, P2, D)
CROSSOVER(rvore de derivao P1, rvore de derivao P2,
profundidade mxima d)
Retorna: duas rvores derivao com profundidade mxima d
Selecione aleatoriamente um n no-terminal A P1
Construa uma lista de ns pertencentes a P2 cuja no-terminal seja A
Se a lista resultar vazia
Retorne com P1 e P2
Seno
Selecione aleatoriamente um n da lista
Permute as rvores de derivao abaixo de ambos os ns,
gerando dois novos programas P1 e P2
Se a profundidade de P1 maior que d
Copie P1 em P1
Se a profundidade de P2 maior que d
Copie P2 em P2
Retorne com P1 e P2

Figura 27: Algoritmo para Cruzamento entre rvores de Derivao

Para o operador de mutao, o processo semelhante. Aps a escolha aleatria


do ponto de mutao, substitui-se a subrvore abaixo dele por outra completamente nova,
usando o mesmo algoritmo da populao inicial.

REFERNCIAS BIBLIOGRFICAS
(Aho 1995) AHO, A. V.; ULLMAN, J. D. & SETHI, R.. Compiladores: princpios, tcnicas
e ferramentas . ISBN 8521610572. LTC, 1995.
(Andre 1994) ANDRE, D. Evolution of map making: learning, planning, and memory
using genetic programming. Proceedings of the First IEEE Conference on
Evolutionary Computation. Vol I. pp. 250-255. IEEE Press, 1994.
(Angeline 1993) ANGELINE, P. J. & POLLACK, J. Evolutionary module acquisition.
Proceedings of the 2nd Annual Conference on Evolutionary Programming, pp. 154163, 1993.
(Angeline 1994) ANGELINE, P. J. Genetic programming and emergent intelligence.
Advances in Genetic Programming, ISBN 0262111888. pp 75-98. MIT Press, 1994.
(Baker 1989) BAKER, J. E. An analysis of the the effects of selection in genetic algorithms
PhD thesis, Graduate Schol of Vanderbilt University. Nashiville, Tennessee, 1989.
(Banzhaf 1998) BANZHAF, W; NORDIN, P.; KELLER, R. E. & FRANCONE, F. D.
Genetic Programming: an introduction. ISBN 155860510X. Morgan Kaufmann,
1998.
(Barreto 1997) BARRETO, J. Inteligncia Artificial. No Limiar do Sculo XXI.
ISBN 859003822X. Edies, 1997.
(Blickle 1995) BLICKLE, T. & THIELE, L. A comparision of selection schemes used in
genetic algorithms. TIK-Report nr 11 version 2, Computer Engineering and
Communication Networks Lab. Swiss Federal Institute of Technology (ETH), Zurich,
Switzerland, December, 1995.
(Bohm 1996) BOHM, W. & GEYER-SCHULZ, A. Exact unifrom initialization for genetic
programming. Foundations of Genetic Algorithms IV (FOGA 4). ISBN 155860460X.
pp 379-407. Morgan Kaufmann, 1996.
(Brameier 1998) BRAMEIER, M.; KANTSCHIK, W.; DITTRICH, P. & BANZHAF, W.
SYSGP: A C++ library of different GP variants. Series Computational Intelligence,
Internal
Report
of
SFB
531,
University
of
Dortmund,
ISSN 1433-3325, Dortmund, 1998.
(Bruce 1995) BRUCE, W. S. The application of genetic programming to the automatic
generation of object-oriented programs. PhD thesis. School of Computer and
Information Sciences, New Southeastern University, 1995
(Cantu-Paz 1999) CANTU-PAZ, E. Topologies, migration rates, and multi-population
parallel genetic algorithms, In: Proceedings GENETIC AND EVOLUTIONARY
COMPUTATION CONFERENCE, 1, 1999, p.91-98.
(Caruana 1988) CARUANA, R. A.; SCHAFFER, J. D. Representation and hidden bias:
Gry vs. binary coding for genetic algorithms. In: Proceedings INTERNATIONAL
CONFERENCE ON MACHINE LEARNING, 5, 1988. Morgan Kaufmann, 1988.
(Cavicchio 1970) CAVICCHIO, JR., D. J. Adaptive search using simulated evolution.
Doctoral dissertation, University of Michigan, Ann Arbor, MI. (University Microlms
No. 25-199), 1970.
(Chellapilla 1997) CHELLAPILLA, K. Evolving computer programs without sub-tree
crossover IEEE Transactions on Evolutionary Computation. Vol. 1 Issue 3. pp 209216. IEEE Press, September, 1997.

(Coelho 1999) COELHO, A. An updated survey of evolutionary multiobjective


optimization techniques: State of the art and future trends. In: Proceedings
CONGRESS ON EVOLUTIONARY COMPUTATION 1999, p.1-11.
(Cohen 1995) COHEN, P. R. Empirical methods for artificial intelligence.
ISBN 0262032252. MIT Press, 1995.
(Costa 1995) COSTA, D. An evolutionary tabu search algorithm and the NHL scheduling
problem. Information Systems and Operational Research, 33 (3), p.161-178, 1995.
(Daida 1999) DAIDA, J. M. Challenges with verification, repeatability and meaningful
comparisions in genetic programming. Proceedings of the 4th Annual Conference in
Genetic
Programming
(GECCO99).
ISBN
1558606114.
pp. 1069-1076. Morgan Kaufmann, 1999.
(De Jong 1975) DE JONG, K. A. An Analysis of the Behavior of a Class of Genetic
Adaptative Systems. PhD thesis, University of Michigan, 1975.
(De Jong 1989) DE JONG, K.; SPEARS, W. Using genetic algorithms to solve NPcomplete problems. In: Proceedings INTERNATIONAL CONFERENCE ON
GENETIC ALGORITHMS, 3, 1989.
(Dessi 1999) DESSI, A.; GIANI, A. & STARITA, A. An analysis of automatic subroutine
discovery in genetic programming. Proceedings of the 4th Annual Conference in
Genetic
Programming
(GECCO99).
ISBN
1558606114.
pp. 996-1001. Morgan Kaufmann, 1999.
(Eshelman 1991) ESHELMAN, L.; SHAFFER, J. Preventing premature convergence in
genetic algorithm by preventing incest. In: Proceedings INTERNATIONAL
CONFERENCE ON GENETIC ALGORITHMS, 4, p.115-122, 1991.
(Finn 1996) FINN, J. D. & ANDERSON, T. W. The new statistical analysis of data. ISBN
0387946195. Springer-Verlag, 1996.
(Fonseca 1993) FONSECA, C.; FLEMING, P. Genetic algorithms for multiobjective
optimization: formulation, discussion and generalization. In: Proceedings
INTERNATIONAL CONFERENCE ON GENETIC ALGORITHMS, 5, p.416423, 1993.
(Franco 2001) FRANCO, L. & CANNAS, S. A. Generalization properties of modular
networks: implementing the parity function. IEEE Transactions on Neural Networks,
Vol 12, Issue 6, pp. 1306-1313. IEEE Press. November, 2001.
(Fraser 1994) FRASER, A. P. A genetic programming in C++. Technical Report 040.
Cybernetics Research Intitute, University of Salford.
(Gathercole 1997) GATHERCOLE, C. & ROSS, P. Tackling the boolean even-n-parity
problem with genetic programming and limited-error fitness. Proceedings of the
Second
Annual
Conference
in
Genetic
Programming
(GECCO97)
ISBN 1558604838. pp. 119-127. Morgan Kaufmann, 1997.
(Gathercole 1998) GATHERCOLE, C. An investigation of supervised learning in genetic
programming. PhD thesis. University of Edinburgh, 1998.
(Glover 1986) GLOVER, F. Future paths for integer programming and links to artificial
intelligence. Computers and Operations Research, v. 13, p.533-549, 1986.
(Glover 1994) GLOVER, F. Tabu search for nonlinear and parametric optimization (with
links to genetic algorithms). Discrete Applied Mathematics, v. 49, p.231-255, 1994.

(Glover 1995) GLOVER, F.; KELLY, J.; LAGUNA, M. Genetic algorithms and tabu
search: hybrid for optimization. Computers and Operations Research, v. 22(1), p.111134, 1995.
(Goldberg 1987) GOLDBERG, D. E.; RICHARDSON, J. Genetic algorithms with sharing
for multimodal function optimization. In: Proceedings INTERNATIONAL
CONFERENCE ON GENETIC ALGORITHMS, 2. 1987.
(Goldberg 1989) GOLDBERG, D. E. Genetic algorithms in search, optimization and
machine learning. Alabama: Addison Wesley, 1989. 413p.
(Goldberg 1990) GOLDBERG, D. E. A note on Boltzman tournament selection for genetic
algorithms and population oriented simulated annealing. Complex Systems, v. 4,
p.445-460, 1990.
(Goldberg 1991) GOLDBERG, D. E. & DEB, K. A comparative analysis of selection
schemes used in genetic algorithms. Foundations of Genetic Algorithms (FOGA).
ISBN 1558601708. pp 69-93. Morgan Kaufmann, 1991.
(Goldberg 1991) GOLDBERG, D. E.; DEB, K. A comparative analysis of selection
schemes used in genetic algorithms. In: RAWLINS, G. (Ed.), Foundations of Genetic
Algorithms. San Francisco, CA: Morgan Kaufmann. 1991.
(Gritz 1993) GRITZ, L. A C++ implementation of genetic programming. Department of
Electrical Engeneering and Computer Science. The George Washington University,
Washington, DC.
(Gruau 1995) GRUAU, F. & WHITLEY, D. A programming language for artificial
development. Proceedings of the Fourth Annual Conference on Evolutionary
Programming, San Diego, CA. pp 415-434. MIT Press, 1995.
(Gruau 1996) GRUAU, F. On syntactic constraints with genetic programming. Advances in
Genetic
Programming
II.
ISBN
0262011581.
pp.
377-394.
MIT Press, 1996.
(Hiroyasu 1999) HIROYASU, T.; MIKI, M.; WATANABE, S. Divided range genetic
algorithms
in
multiobjective
optimization
problems.
In:Proceedings
INTERNATIONAL WORKSHOP ON EMERGENT SYNTHESIS, p.57-66, 1999.
(Holland 1975) HOLLAND, J. H. Adaptation in natural and artificial systems.
The University of Michigan Press, Ann Arbor, MI, 1975.
(Horn 1993) HORN, J.; NAFPLIOTIS, N. Multiobjective optimization using the niched
pareto genetic algorithm. Technical Report IlliGAl Report 93005, University of
Illinois at Urabama-Champaign, 1993
(Horner 1996) HORNER, H. A C++ class library for genetic programming. Technical
Report. The Vienna University of Economics, Vienna, Austria, 1996.
(Kinnear Jr 1994) KINNEAR, K. E. Alternatives in automatic function definition:
a comparision of performance. Advances in Genetic Programming,
ISBN 0262111888. pp 119-141. MIT Press, 1994.
(Kitano 1990) KITANO, H. Empirical studies on the speed of convergence of neural
network training using genetic algorithms, In: Proceedings NATIONAL
CONFERENCE ON ARTIFICIAL INTELLIGENCE, 8, 1990.
(Kitano 1994) KITANO, H. Neurogenetic learning: an integrated method of designing and
training neural networks using genetic algorithms. Physica D, Amsterdam, v. 75, p.
225-238, 1994.

(Koza 1989) KOZA, J. R. Hierarquical genetic algorithms operating on populations of


computer programs. Proceedings of the 11th International Joint Conference on
Artificial Intelligent (IJCAI-89). Detroit, MI. pp 768-774. Morgan Kaufmann, 1989.
(Koza 1992) KOZA, J. R. Genetic Programming: On the Programming of Computers by
Means of Natural Selection. ISBN 0262111705. MIT Press, 1992.
(Koza 1994) KOZA, J. R. Genetic Programming II: Automatic Discovery of Reusable
Programs. ISBN 0262111896. MIT Press, 1994
(Kramer 2000) KRAMER, M. D. & ZHANG, D. GAPS: a genetic programming system.
The 24th Annual International Computer Software and Applications Conference 2000
(COMPSAC2000) ISBN-0769507921 pp614619. IEEE Press, October, 2000.
(Krishnamachari 1999) KRISHNAMACHARI, B. Global optimization in the design of
mobile communication systems. Ithaca, 1999. 175p. Master of Science in Electrical
Engineering, Cornell University.
(Kurahashi 2000) KURAHASHI, S.; TERANO, T. A genetic algorithm with Tabu search
for multimodal and multiobjective function optimization. In: Proceedings
INTERNATIONAL CONFERENCE ON GENETIC ALGORITHMS, 2. 2000, p.291298.
(Langdon 1996) LANGDON, W. B. Genetic Programming and data structures
PhD thesis. Department of Computer Science. University of London, 1996.
(Lee 1997) LEE, R. C. & TEPFENHART, M. UML and C++ - a practical guide to objectoriented
development.
ISBN
0130290408.
2nd
Edition.
Prentice
Hall, 1997
(Luke 2000) LUKE, S. Two fast tree-creation algorithms for genetic programming. IEEE
Transactions in Evolutionary Computation, Vol 4 Issue 3 pp. 274-283 IEEE Press.
September, 2000.
(Luke 2001) LUKE, S. & PAINAIT, L. A survey and comparison of tree generation
algorithms. Proceedings of the 6th Annual Conference in Genetic Programming
(GECCO 2001). ISBN 1558607749. Springer-Verlag, 2001.
(Malek 1989) MALEK, M.; GURUSWAMY M., et al. Serial and parallel simulated
annealing and tabu search algorithms for the traveling salesman problem. Annals of
Operations Research, v. 21, p.59-84, 1989.
(Mantawy 1999) MANTAWY, A.; ABDEL-MAGID, Y.; SELIM, S. A new genetic based
tabu search algorithm for unit commitment problem. Eletric Power Systems Research,
v. 49, p.71-78, 1999.
(Meyer 1992) MEYER, T. P.; PACKARD, N. H. Local forecasting of high-dimensional
chaotic dynamics. In: CASDAGLI, N.; EUBANK, S. (Eds.), Nonlinear Modeling and
Forecasting. Addison-Wesley. 1992.
(Mitchell 1997) MITCHELL, M. An introduction to genetic algorithms. Cambridge: Mit
Press. 1997. 207 p.
(Montana 1994) MONTANA, D. J. Strongly typed genetic programming. BBN Technical
Report #7866, Bolt Beranek and Newman, Cambridge, MA, 1994.
(Montana 1995) MONTANA, D. J. Strongly typed genetic programming. Evolutionary
Computation. Vol 3 Issue 2. ISBN 10636560. pp 199-230. MIT Press, 1995.

(Muhlenbein 1992) MUHLENBEIN, H. Parallel genetic algorithm in Combinatorial


Optimization. Computer Science and Operation Research, Pergamon Press.: p.441456, 1992.
(Muhlenbein 1993) MUHLENBEIN, H. & SCHIERKAMP-VOOSEN, D. Predictive
models

for

the

breeder

genetic

algorithms.

Evolutionary

Computation

Vol 1 Issue 1, ISBN 10636560. pp 25-49. MIT Press, 1993.


(Muhlenbein 1998) MUHLENBEIN, H.; GORGES-SCHELEUTER, M.; KRAMER, O.
Evolution algorithms in combinatorial optimization, Parallel Computing, v. 7, p.6585, 1998.
(Musser 2001) MUSSER, D. R.; DERGE, G. J. & SAINI, A. STL Tutorial and Reference
Guide: C++ Programming with the Standard Template Library. ISBN 0201379236.
Addison-Wesley, 2001.
(ONeil 2000) ONEIL, M. & RYAN, C. Grammar based function definition in
Grammatical Evolution. Proceedings of the 5th Annual Conference in Genetic
Programming. (GECCO 2000) ISBN 1558607080. pp. 485-490. MIT Press, 2000.
(OReilly 1995) OREILLY, U. An analysis of Genetic Programming. PhD thesis. OttawaCarleton Institute for Computer Science, Carleton University, 1995.
(OReilly 1996) OREILLY, U. Investigating the generality of automatically defined
functions. Proceedings of the 1st. Annual Conference in Genetic Programming. ISBN
0262611279. MIT Press, 1996
(Poli 1999) POLI, R.; PAGE, J. & LANGDON, W. B. Smooth uniform crossover, submachine code GP and demes: a recipe for solving high-order boolean parity problem.
Proceedings of the Genetic and Evolutionary Computation Conference, Vol 2, pp.
1162-1169. Morgan Kaufmann, 1999
(Potter 1997) POTTER, M. A.; DE JONG, K. Cooperative coevolution: an architecture for
evolving

coadapted

subcomponents.

In:

Proceedings

EVOLUTIONARY

COMPUTATION, 8(1),2000, pp.1-29.


(Potter 1997) POTTER, M.A.; DE JONG, K.- The Design and Analysis of a Computational
Model of Cooperative Coevolution. PhD thesis, George Mason University, 1997.

(Powell 1989) POWELL, D.; TONG, S.; SKOLNICK, M. EnGENEous: Domain Independent
machine learning for design optimization. In: Proceedings. INTERNATIONAL
CONFERENCE ON GENETIC ALGORITHMS, 3, p.151-159 1989.
(Ratle 2000) RATLE, A. & SEBAG, M. Genetic programming and domain knowledge:
beyond the limitations of grammar-guided machine discovery. In Proceedings of the
Sixth Conference on Parallel Problems Solving from Nature, LNCS, pp. 211-220.
Springer-Verlag, 2000
(Rodrigues 2001) RODRIGUES, E.; POZO, A.; VERGILIO, S. & MUSICANTE, M.
Chameleon:

uma

ferramenta

de

induo

de

programas.

SCCC

2001

II Workshop en Inteligencia Artificial. ISBN 0769513964. Punta Arenas, Chile,


November, 2001. IEEE Computer Society, 2001.
(Rosca 1996) ROSCA, J. P. & BALLARD, D. H. Discovery of subroutines in genetic
programming.

Advances

in

Genetic

Programming

II.

ISBN

0262011581.

pp 177-201. MIT Press, 1996.


(Rosca 1997) ROSCA, J. P. Hierarquical learning with procedural abstraction mechanisms.
PhD thesis. University of Rochester, Rochester, NY, 1997.
(Rumelhart 1986) RUMELHART, D.; HILTON, G. & WILLIAMS, R. Learning internal
representations by error propagation. Parallel Distributed Processing: Explorations in
the Micro-structures of Cognition. MIT Press, 1986.
(Ryan 1998) RYAN, C.; COLLINS, J. J. & ONEIL, M. Grammatical evolution: evolving
programs for an arbitrary language. Proceedings of the First Workshop on Genetic
Programming, 1998 Vol. LNCS 1391, pp. 83-96. Springer-Verlag, 1998.
(Schaffer 1985) SCHAFFER, D. Multiple objective optimization with vector evaluated
genetic algorithms. In: Proceedings INTERNATIONAL CONFERENCE ON
GENETIC ALGORITHMS, 1, p.93-100, 1985.
(Sethi

1996)

SETHI,

R.

Programming

languages

concepts

and

constructs.

ISBN 0201590654. Addison-Wesley, 1996.


(Spector 1995) SPECTOR, L. Evolving control structures with automatically defined
macros. Working Notes of the AAAI Fall Symposium on Genetic Programming 1995.
The American Association for Artificial Intelligence. pp. 99-105, 1995.

(Spector 1996) SPECTOR, L. Simultaneous evolution of programs and their control


structures.

Advances

in

Genetic

Programming

II..

ISBN

0262011581.

pp 137-154. MIT Press, 1996.


(Srinivas 1993) SRINIVAS, N.; DEB, K. Multiobjective optimization using nondominated
sorting in genetic algorithms. Technical reports, Department of Mechanical
Engineering, Indian Institute of Technology, Kanput, India, 1993.
(Tamaki 1996) TAMAKI, H.; KITA, H.; KOBAYASHI, S. Multiobjective optimization by
genetic algorithms. In: Proceedings INTERNATIONAL CONFERENCE ON
EVOLUTIONARY COMPUTATION , p. 517-522, 1996.
(Terada 1991) TERADA, R. Desenvolvimento de algoritmos e estruturas de dados. ISBN
0074609602. McGraw-Hill, Makron, 1991.
(Terry 1997) TERRY, P. D. Compilers and Compiler Generators, an introduction
with C++. ISBN 1850322988. International Thomson Computer Press, 1997.
(Tsutsui 1993) TSUTSUI, S.; FUJIMOTO, Y. Extended forking genetic algorithms for
order representation. In: Proceedings CONFERENCE ON EVOLUTIONARY
COMPUTATION,1994, p.170-175.
(Tsutsui 1993) TSUTSUI, S.; FUJIMOTO, Y. Forking genetic algorithms with blocking
and shrinking modes. In: Proceedings INTERNATIONAL CONFERENCE

ON

GENETIC ALGORITHMS, 5, p.206-213, 1993.


(Ulder 1991) ULDER, N.; AARTS, E.; BANDELT, H.; LAARHOVEN, P.; PASCH, E.
Genetic local search algorithms for the traveling salesman problem. Parallel Problemsolving from Nature Lecture Notes, Computer Science 496, p.109-116, 1991.
(Whigham 1995) WHIGHAM, P. A. Grammatically based genetic programming.
Proceedings of ML95 Workshop on Genetic Programming. From Theory to RealWorld Applications. pp 33-41. Morgan Kauffmann, 1995.
(Whigham 1996) WHIGHAM, P. A. Grammatical Bias for Evolutionary Learning. Ph.D.
thesis. School of Computer Science. University of New South Wales, Australian
Defense Force Academy, 1996.
(Willis 1997) WILLIS, M. J.; HIDEN, H. G.; MARENBACH , P.; MCKAY,

B. &

MONTAGE, G. A. Genetic programming: an introduction and survey of applications.


The Second International Conference on Genetic Algorithms in Engineering Systems:

Innovations

and

Applications

1997

(GALESIA

97).

pp 314-319. IEEE Press, 1997


(Wong 1996) WONG, M. L. & LEUNG, K. S. Evolving recursive functions for the evenparity problem using genetic programming Advances in Genetic Programming II.
ISBN 0262011581. pp. 222-240. MIT Press, 1996.
(Yu 1999) YU, T. Structure Abstraction and Genetic Programming. Proceedings of the
1999 Congress on Evolutionary Computation (CEC99). ISBN 0780355369 pp. 652659. IEEE Press, 1999.
(Zongker 1996) ZONKGER, D.; PUNCH, B. & RAND, B. Lil-gp 1.01 Users manual
Genetic Algorithms Research and Applications Group (GARAGe), Department of
Computer Science, Michigan State University, 1996.

Você também pode gostar