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. 2. Introduo ......................................................................................................................3 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 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 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 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

3.

4.

5.

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

Operadores genticos

No

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

 '   # ! )(&&&%$" 

  '   # ! 0)(&&&%$" 

      

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.

( $ " 10)''&%%#!

 ( $ " 20)''&%%#!

      

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 I

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 AE

indivduo

Espcie -2 AE

Espcie -1 AE

indivduo

Espcie -2 AE

Populao

aptido

Populao

Populao

aptido

Populao

Modelo do Domnio

representante

representante

Modelo do Domnio Espcie -3 representante AE

Espcie -3 representante AE

Espcie 1 - Avaliao

Populao

Espcie 2 - Avaliao

Populao

Espcie -1 AE

Espcie -2 AE

Populao

Populao

representante

Modelo do Domnio

representante

Espcie -3 AE aptido indivduo Espcie 3 - Avaliao Populao

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

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 Critrio de Aspirao Satisfeito

No x = x

Sim

No
Trmino

Sada x (melhor soluo at o momento)

Figura 14 Mtodo de Busca Tabu (Krishnamachari 1999)

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. dH(a,b) = |ai bi|
i=1 n

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 ? N

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 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 o 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), 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. a tendncia gerar a maior rvore possvel ao

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
nN

onde bn a aridade do no-terminal n

(1)

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 )

a (k , t )
k =1

(3)

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 FITNESS CASE 1 FITNESS CASE 2 FITNESS CASE 3 FITNESS CASE 4 FITNESS CASE 5 0 2 4 6 8

SADA 1 5 17 37 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: f p = ( pi si )
i =1 n

(5)

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 FITNESS CASE 1 FITNESS CASE 2 FITNESS CASE 3 FITNESS CASE 4 FITNESS CASE 5 Valor de fitness 0 2 4 6 8

SADA 1 5 17 37 65

PROGRAMA 0 6 20 42 72

ERRO ABSOLUTO 1 1 3 5 7 17

ERRO QUADRTICO 1 1 9 25 49 85

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. onde i {1,2,...N}, 1 + i 1 n + (n n ) N N 1 n- 0 e n+ + n- = 2 representa a probabilidade do melhor indivduo ser escolhido e (6)

pi =
n+ N

O valor de

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 =

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

(7)

4.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 + -

2 x Figura 22: Exemplo de Cruzamento Entre Dois Programas

+ x

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.
6

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> + | - | * | / x } <var>

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 a 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>

<exp>

<var>

<kte>

sin

<exp>

<op>

<exp>

<var>

<var>

<exp>

<exp>

<exp>

<op>

<exp>

<fun>

<exp>

<exp>

<op>

<exp>

<kte>

sin

<var>

<var>

<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 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. & ON

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.