Anda di halaman 1dari 19

Levantamento bibliogrco sobre a Computao Evolucionria

E. Q. Silva

Technical Report

RT-INF_001-11 2011 -

Relatrio Tcnico

August

Agosto

The contents of this document are the sole responsibility of the authors. O contedo do presente documento de nica responsabilidade dos autores.

Instituto de Informtica Universidade Federal de Gois


www.inf.ufg.br

Levantamento bibliogrco sobre a Computao Evolucionria


Edjalma Queiroz da Silva
edjalma@ambientinformatica.com.br

Celso G. Camilo Jr
celso@inf.ufg.br

Introduo

Computao evolucionria um nome ambicioso para uma ideia simples: usar a teoria da evoluo como um algoritmo. Qualquer programa que usa o loop bsico como mostrado na Figura 1 poderia ser chamado de computao evolucionria. Algoritmos evolucionrios operam sobre as populaes. Nos escolheremos estruturas de dados para representar a populao, mensurar qualidade, e maneiras diferentes para variar as estruturas de dados [22]. Para um dado problema existem muitas maneiras de implementar um sistema de computao evolucionria para atacar o problema.

Figura 1: A estrutura fundamental de uma computao evolucionria Os algoritmos genticos foram propostos por Holland (1962). A programao evolucionria, introduzida por Fogel (1962), foi originalmente proposta para como uma tentativa de criar mtodos inteligentes. Esta abordagem visava utilizar mquinas de estado nito para prever eventos baseados em observaes prvias. Mas novamente a tcnica se mostrou til para a resoluo de problemas de otimizao. A rea da computao evolucionria (CE) tem muitos fundadores e muitos nomes. A estratgia evolutiva desenvolvida por Rechenberg (1973) foi inicialmente proposta com o objetivo de solucionar problemas de otimizao discreta e continua. Durante a dcada de 80, os

Mestrando em Cincia da Computao, INF-UFG Orientador

Computao Evolucionria

avanos realizados permitiram a aplicao dos algoritmos evolutivos para a soluo de problemas de otimizao de empresas comerciais e na indstria. A partir deste ponto iniciou-se uma convergncia sobre as pesquisas relativas aos algoritmos evolutivos. [22] Em termos histricos, trs algoritmos para computao evolutiva foram desenvolvidos independentemente:

algoritmos genticos: HOLLAND (1962), BREMMERMANN (1962) e FRASER(1957); programao evolutiva: FOGEL (1962); estratgias evolutivas: RECHENBERG (1965) e SCHWEFEL (1965). Atualmente, CE engloba um nmero crescente de paradigmas e mtodos, dos quais os mais importantes so os Algoritmos Genticos (AGs)[5, 26, 12, 30, 4, 6], Programao Evolucionria (PE) [15], Estratgias Evolucionrias (EEs) [1, 11], Programao Gentica (PG) [8, 13], e Sistemas Classicadores (SCs) [18, 2, 4, 3], entre outros. A computao evolucionria engloba, portanto, uma famlia de algoritmos inspirados na teoria evolutiva de Darwin. Os primeiros livros e teses sobre computao evolutiva, escritos por alguns dos prprios pioneiros da rea, j apresentavam demonstraes impressionantes acerca da capacidade dos algoritmos evolutivos (FOGEL et al., 1966; RECHENBERG, 1973; HOLLAND, 1975; DE JONG, 1975; SCHWEFEL, 1975), apesar das limitaes de hardware existentes na poca. No entanto, de modo similar a outras iniciativas de propor mtodos de soluo de problemas inspirados na natureza, tal como redes neurais articiais e sistemas nebulosos, os algoritmos evolutivos tambm tiveram que atravessar um longo perodo de rejeio e incompreenso antes de receber o reconhecimento da comunidade cientca. Os progressos vericados nos anos 90 conrmaram o poder impressionante dos algoritmos evolutivos na soluo de problemas de elevada complexidade, assim como evidenciaram suas limitaes. Uma referncia elaborada com o intuito de ser completa, didtica e muito adequada para descrever o estado da arte da pesquisa em computao evolutiva o Handbook of Evolutionary Computation (BCK et al., 1997), tendo sido atualizada recentemente (BCK et al., 2000). Outros trabalhos importantes para um aprofundamento no estudo desta tcnica, sob vrios pontos de vista, so: BCK (1996), DAVIS (1991), FOGEL (1999), GOLDBERG (1989), HOLLAND (1992), KINNEAR (1994), KOZA (1992), MICHALEWICZ (1996), MITCHELL (1996) e SCHWEFEL (1995). Os algoritmos evolutivos no devem ser considerados prontos para uso, mas sim um elenco de procedimentos gerais que podem ser prontamente adaptados a cada contexto de aplicao. Basicamente, eles so modelos computacionais que recebem como entrada: uma populao de indivduos em representao genotpica (gerao inicial), que correspondem a solues-candidatas junto a problemas especcos; e uma funo que mede a adequao relativa de cada indivduo frente aos demais (funo de adequao, adaptabilidade ou tness). A representao genotpica corresponde a uma descrio de cada indivduo da populao atravs de uma lista ordenada (cromossomo) ou rvore de atributos, descritos a partir de um alfabeto nito. Cada atributo da lista ou rvore equivalente a um gene, e o valor do atributo corresponde a um alelo. O tamanho da lista ou rvore est diretamente associado ao nmero

Computao Evolucionria

mnimo de atributos necessrios para descrever cada indivduo (soluo-candidata) da populao. No caso de representao em lista, os indivduos da populao geralmente tm tamanho nico, embora j existam abordagem que permitem o tratamento de cromossomos de tamanho varivel, ou seja, indivduos mais e menos complexos co-existindo em uma dada gerao. A representao em rvore necessria sempre que uma lista de atributos no for capaz de descrever um indivduo da populao, e a o tamanho da rvore sempre varivel.

O que so Algoritmos Evolucionrios - AEs?

A histria sugere que h muitas variantes de diferentes algoritmos evolucionrios. A idia comum subjacente a todas estas tcnicas a mesma: dada uma populao de indivduos, a presso ambiental faz com que haja a seleo natural (sobrevivncia do mais apto). O que provoca um aumento da aptido da populao. Dada uma funo de qualidade a ser maximizada, pode-se aleatoriamente criar um conjunto de solues candidatas, ou seja, elementos do domnio da funo, e aplicar a funo de qualidade como uma medida de tness abstratas quanto maior, melhor. Com base nesta tness, alguns dos melhores candidatos so escolhidos para a prxima gerao de sementes atravs da aplicao de recombinao e, ou mutao para eles. Recombinao e mutao leva a um conjunto de novos candidatos (os lhos) que concorrem - com base na sua aptido (e possivelmente idade) - com os antigos por um lugar na prxima gerao. Este processo pode ser repetido at que um candidato com qualidade suciente (uma soluo) encontrada ou um limite computacional denido anteriormente atingido.[21] Neste processo h duas foras fundamentais que formam a base de sistemas evolutivos: Operadores de variao (recombinao e mutao) para se criar a diversidade necessria. Seleo, que atua como uma fora empurrando a qualidade. O esquema geral de um algoritmo evolutivo dado na gura 2 em uma forma de pseudocdigo; A Figura 3 mostra um diagrama em forma de uxograma.[21]

Figura 2: O Regime geral de um algoritmo evolutivo em pseudo-cdigo Algoritmos evolucionrios possuem uma srie de caractersticas que podem ajudar a posicion-los dentro da famlia de mtodos gerar e testar: AEs so populaes com base que processam toda uma coleo de solues candidatas simultaneamente.

Computao Evolucionria

AES utilizam principalmente a recombinao como um processo de misturar informaes, para se alcanar candidatos (solues) aptos. AEs so estocsticos.[21]

Figura 3: esquema geral de um algoritmo evolutivo como um uxograma Algoritmos evolucionrios usam modelos computacionais dos processos naturais de evoluo como uma ferramenta para resolver problemas. Apesar de haver uma grande variedade de modelos computacionais propostos, todos eles tm em comum o conceito de simulao da evoluo das espcies atravs de seleo, mutao e reproduo, processos estes que dependem do desempenho dos indivduos desta espcie dentro do ambiente. Os algoritmos evolucionrios funcionam mantendo uma populao de estruturas, denominadas indivduos ou cromossomos, que se comportam de forma semelhante evoluo das espcies. A estas estruturas so aplicados os chamados operadores genticos, como recombinao e mutao, entre outros. Cada indivduo recebe uma avaliao que quanticada da sua qualidade como soluo do problema em questo. Com base nesta avaliao sero aplicados os operadores genticos de forma a simular a sobrevivncia do mais apto. Os operadores genticos consistem em aproximaes computacionais de fenmenos vistos na natureza, como a reproduo sexuada, a mutao gentica e quaisquer outros que a imaginao dos programadores consiga reproduzir. De maneira geral, os algoritmos evolucionrios so utilizados para resolver aqueles problemas cujos algoritmos so extraordinariamente lentos (problemas NP-completos) ou incapazer de obter soluo (como, por exemplo, problemas de maximizao de funes multi-modais).

3
3.1

O que Algoritmo Gentico - AG?


Histria

A histria dos algoritmos genticos se inicia na dcada de 40, quando os cientistas comeam a tentar seu inspirar na natureza para criar o ramo da inteligncia articial. A pesquisa se desenvolveu mais nos ramos da pesquisa cognitiva e na ucompreenso dos processos de

Computao Evolucionria

raciocnio e aprendizado at o nal da dcada de 50, quando comeou-se a buscar modelos de sistemas genricos que pudessem gerar solues candidatas para problemas que eram difceis demais para resolver computacionalmente.[23] Uma das primeiras tentativas de se associar a evoluo natural a problemas de otimizao foi feita em 1957, quando Box apresentou seu esquema de operaes evolucionrias. Estas eram um mtodo de perturbar de forma sistemtia duas ou trs variveis de controle de uma instalao, de forma anloga ao que entendemos hoje como operadores de mutao e seleo (Goldberg, 1990). Logo depois, no comeo da dcada de 1960, Bledsoe e Bremmerman comearam a trabalhar com genes, usando tanto a representao binria quanto a inteira e a real, e desenvolvendo os precursores dos operadores de recombinao (crossover).[23] Uma tentativa de usar processos evolutivos para resolver problemas foi feita por I. Rechenberg, na primeira metade da dcada de 60, quando ele desenvolveu as estratgias evolucionria (evolutionary strategies) (Rechenberg, 1965). Esta mantinha uma populao de dois indivduos com cromossomos compostos de nmeros reais em cada instante, sendo que um dos dois era lho do outro, e era gerado atravs da aplicao exclusiva do operador de mutao. O processo descrito por Rechenberg tinha ampla fundamentao terica, sendo que a mutao era aplicada a partir de uma distribuio gaussiana dos parmetros e foi usado com sucesso em vrios problemas prticos. Mesmo no incluindo conceitos amplamente aceitos atualmente, tais como populaes maiores e operador de crossover, o trabalho de Rechenberg pode ser considerado pioneiro, por ter introduzido a computao evolucionria s aplicaes prticas.[23] Em trabalhos posteriores as estratgias evolucionrias supririam estas falhas, sendo modicadas para incluir conceitos de populao e operador de crossover. A maneira como elas aplicam este operador interessante pois inclui a ideia de utilizar a mdia como operador alm de poder envolver muitos pais, idias estas que podem ser aplicadas aos algoritmos genticos quando usamos cromossomos com uma representao contnua. Entretanto, apesar de no ser o primeiro investigador da rea, aquele que seria designado o pai dos algoritmos genticos mostrou-se nalmente no nal da dcada de 60, quando John Holland inventa os Algoritmos Genticos, embora concentrado eminentemente na codicao discreta. Holland estudou formalmente a evoluo das espcies e props um modelo heurstico computacional que quando implementado poderia oferecer boas solues para problemas extremamente dicieis que eram insolveis computacionalmente at aquela poca.[23] Em 1975 Holland publicou seu livro, Adptation in Natural and Articial Systems, no qual faz um estudo dos processos evolutivos, em vez de projetar novos algoritmos, como a maioria pensa. O trabalho de Holland apresenta os algoritmos genticos como uma metfora para os processos evolutivos, de forma que ele pudesse estudar a adaptao e a evoluo no mundo real, simulando-a dentro de computadores. Entretanto, os algoritmos genticos transcenderam o papel originalmente imaginado por Holland e transformaram-se em uma ferramenta de uso disseminado pelos cientistas da computao. Um fato interessante quanto ao trabalho de Holland e sua inuncia na rea de AG que ele usou originalmente cromossomos binrios, cujos genes eram apenas zeros e uns. Esta limitao foi abolida por pesquisadores posteriores, mas ainda hoje muitos cientistas insistem em usar apenas a representao binria, mesmo quando h outras que podem se mostrar mais adequadas para a resoluo do problema em questo. Desde ento os algoritmos genticos comearam a se expandir por toda a comunidade cientca, gerando uma srie de aplicaes que puderam ajudar a resolver problemas extremamente importantes que talvez no fossem abordados de outra maneira.[23] Alm deste progresso cientico, tambm houve o desenvolvimento comercial: nos anos 80 surgiram pacotes comerciais usando algoritmos genticos. Muitos artigos armam que o primeiro pacote comercial desenvolvido foi o Evolver R , que j estava disponvel desde 1988

Computao Evolucionria

e que inclui um programa adicional para o Excel R e uma API (Interface de Programao de Aplicativos) para desenvolver programas que acessem dados provenientes de diferentes aplicativos. Hoje existem dezenas de outros aplicativos que tm as mesmas caractersticas. Na dcada de 80, o progresso dos algoritmos evolucionrios e sua popularizao no meio cientco zeram com que surgissem as primeiras conferncias dedicadas exclusivamente a estes tpicos. Hoje em dia, os algoritmos genticos tm se beneciado muito da interdisciplinaridade.Cada vez mais cientistas da computao buscam inspirao em outra rea de pesquisa de forma a absorver suas ideias e fazer com que os Gas sejam mais ecientes e inteligentes na resoluo de problemas.[23]

3.2

Descrio

Algoritmos genticos (GA) so um ramo dos algoritmos evolucionrios e como tal podem ser denidos como uma tcnica de busca baseada numa metfora do processo biolgico de evoluo natural. Os algoritmos genticos so tcnicas heursticas de otimizao global. A questo da otimizao global ope os GAs aos mtodos como gradiente (hill climbing), que seguem a derivada de uma funo de forma a encontrar o mximo de uma funo, cando retidos em mximos locais, como vemos na gura 4.[23]

Figura 4: Funo hipottica com um mximo local e outro global. Uma tcnica de gradiente (hill climbing) se inicia em qualquer um dos pontos de inicio marcados seguir o gradiente (direo de maior crescimento) e acabar presa no ponto de mximo local (onde a derivada zero). Algoritmos genticos no tm esta dependncia to forte dos valores iniciais. Nos algoritmos genticos populaes de indivduos so criados e submetidos aos operadores genticos: seleo, recombinao (crossover) e mutao. Estes operadores utilizam uma caracterizao da qualidade de cada indivduo como soluo do problema em questo chamada de avaliao e vo gerar um processo de evoluo natural destes indivduos, que eventualmente dever gerar um indivduo que caracterizar uma boa soluo (talvez at a melhor possvel) para o nosso problema.[23] Denindo de outra maneira, podemos dizer que algoritmos genticos so algoritmos de busca baseados nos mecanismos de seleo natural e gentica. Eles combinam a sobrevivncia entre os melhores com uma forma estruturada de troca de informao gentica entre dois indivduos para formar uma estrutura heurstica de busca. Como dito anteriormente, os GAs no so mtodos de hill climbing, logo eles no caram estagnados simplesmente pelo fato de terem encontrado um mximo local. Neste ponto, eles se parecem com a evoluo natural, que

Computao Evolucionria

s porque encontrou um indivduo que instantaneamente o melhor de um certo grupo no pra de procurar outros indivduos ainda melhores.[23] Na evoluo natural isto tambm decorre de circunstancias que mudam de um momento para outro. Uma bactria pode ser a melhor em um ambiente livre de antibioticos, mas quando este so usados, outras que antes eram menos fortes tornam-se as nicas sobreviventes por serem as nicas adptadas. No caso dos algoritmos genticos, o ambiente normalmente um s. Entretanto, conforme as geraes vo se passando e os operadores genticos vo atuando, faz-se uma grande busca pelo espao de solues, busca esta que seria realizada pela evoluo natural (das bactrias ou de qualquer outro organismo) se elas cassem permanentemente em um ambiente imutvel. Mas, ao contrrio do que as pessoas costumam pensar, importante ser ressaltado que a evoluo natural no um processo dirigido obteno da soluo tima. Na verdade, o processo simplesmente consiste em fazer competir uma srie de indivduos e pelo processo de sobrevivncia do mais apto, os melhores indivduos tendem a sobreviver.[23] Um GA tem o mesmo comportamento que a evoluo natural: a competio entre os indivduos que determina as solues obtidas. Eventualmente, devido sobrevivncia do mais apto, os melhores indivduos prevalecero. claro que pode acontecer de uma gerao ser muito pior que a gerao que antecedeu, apesar de isto no ser muito comum (nem provvel). Sendo assim, devemos salientear que um GAs, apesar do seu nome implicar no contrrio, no constituem um algoritmo de busca da soluo tima de um problema, mas sim uma heurstica que encontra boas solues a cada execuo, mas no necessriamente a mesma todas as vezes (podemos encontrar mximos - ou mnimos - locais, prximos ou no do mximo global).[23] A codicao da informao em cromossomos um ponto crucial dentro do GA, e , junto com a funo de avaliao, o que liga o GA ao problema a ser resolvido. Se a codicao for feita de forma inteligente, esta j incluir as idiossincrasias do problema (como por exemplo restries sobre quando podemos ligar ou desligar uma mquina etc.) e permitir que se evitem testes de viabilidade de cada uma das solues geradas. Ao m da execuo do nosso algoritmo a soluo deve ser decodicada para ser utilizada na prtica. Assim como na natureza, a informao deve ser codicada nos cromossomos (ou genomas) e a reproduo (que no caso dos GAs equivalente reproduo sexuada) se encarregar de fazer com que a populao evolua. A mutao cria diversidade, mudando aleatoriamente genes dentro de indivduos e, assim como na natureza, aplicada de forma menos frequente que a recombinao, que o fruto da reproduo (e que, dentro deste artigo ser chamada de crossover).[23] A reproduo e a mutao so aplicadas em indivduos selecionados dentro da nossa populao. A seleo deve ser feita de tal forma que os indivduos mais aptos sejam selecionados mais frequente do que aqueles menos aptos, de forma que as boas caractersticas daqueles passem a predominar dentro da nova populao de solues. De forma alguma os indivduos menos aptos tm que ser todos descartados da populao reprodutora. Isto causaria uma rpida convergncia gentica de todas as solues para um mesmo conjunto de caractersticas e evitaria uma busca mais ampla pelo espao de solues. A convergncia gentica se traduz em uma populao com baixa diversidade gentica que, por possuir genes similares, no consegue evoluir, a no ser pela ocorrncia de mutaes aleatrias que sejam positivas. Isto pode ser traduzido em outro conceito interessante, a perda da diversidade, que pode ser denida como sendo o nmero de indivduos que nunca so escolhidos pelo mtodo de seleo de pais. Quanto maior for a perda de diversidade, mais rpida ser a convergncia gentica de nosso GA (Blickle, 1997).

Computao Evolucionria

O que Estratgia Evolutiva - EE?

As EEs foram desenvolvidas inicialmente na Alemanha, na dcada de 60 [20], focalizando a resoluo de problemas contnuos de otimizao paramtrica, sendo estendidas recentemente para tratamento de problemas discretos.

4.1

Conceitos Bsicos

A computao evolutiva dividida em trs grandes reas: algoritmos genticos (AGs), programao evolutiva (PEs) e estratgias evolutivas (EEs) [9]. Em todos estes trs paradigmas, simulada uma evoluo neo-Darwiniana, onde uma populao de solues candidatas de um problema submetida a um processo de recombinao (cruzamento), mutao e competio pela sobrevivncia. Assumindo algumas hipteses, possvel provar que as EEs convergem ao timo global com probabilidade 1, considerando um tempo de busca sucientemente longo. Uma primeira verso de EEs focaliza um processo de busca no esquema 1 genitor - 1 descendente. Isto foi denominado (1+1)-EE , onde um nico lho criado a partir de um nico genitor e ambos so confrontados numa competio por sobrevivncia, onde a seleo elimina a soluo mais pobre. Um aspecto negativo observado a convergncia lenta, alm da busca ponto a ponto ser susceptvel a estagnar em mnimos locais. Outras verses foram desenvolvidas com o objetivo de resolver tais problemas. Estas estratgias so denominadas multi-indivduos, onde o tamanho da populao maior que 1. As EEs multi-membros foram aperfeioadas tendo-se atualmente dois principais tipos (+)-EE e (,)-EE. Na primeira, indivduos produzem descendentes, gerando-se uma populao temporria de (+) indivduos, de onde so escolhidos indivduos para a prxima gerao. Na verso (,)-EE, indivduos produzem descendentes, com < , sendo que a nova populao de indivduos formada por apenas indivduos selecionados do conjunto de descendentes. Assim, o perodo de vida de cada indivduo limitado a apenas uma gerao. Este tipo de estratgia tem bom desempenho em problemas onde o ponto timo em funo do tempo, ou onde a funo afetada por rudo. EEs: Algoritmo Padro Considerando cada elemento composto por um par de vetores na forma v = (x,), o algoritmo para o modelo ( + ) - EE mostrado a seguir: 1. Inicializa-se uma populao de indivduos com varincia 1 para cada posio de x. 2. Faz-se uma recombinao dos pais at gerar descendentes. 3. Faz-se a mutao dos descendentes. e das varincias seguindo as seguintes expresses: xi j = xi j + N (0, ) i j = i j . exp( N (0,1) + N j (0,1)) onde i = 1,...,; j = 1,...,n. N(0,1) representa um nmero Gaussiano com mdia zero e varincia 1, nota-se que esse nmero o mesmo para todos os indivduos quando multiplicado pelo fator . O numero Gaussiano que multiplica a deve ser obtido independentemente para valor de j. Os parmetros e foram sugeridos por Back [10, 16, 14] como: = ( 2n )-1 e = (4x2n)1. Note-se que na mutao dos descendentes a varincia ser diferente a cada gerao (auto-adaptao) 4. Avalia-se o tness1 de genitores e descendentes, onde sero escolhidos os indivduos
Entende-se por tness a medida do desempenho do individuo na gerao atual. Neste caso, a tness corresponde ao valor da funo objetivo do problema.
1

Computao Evolucionria

com os melhores valores de tness (competio), os quais sero os pais na prxima gerao. 5. Repete-se o processo a partir do passo II at ser atingido o critrio de parada especicado. No passo 1 a populao inicial gerada aleatoriamente, porm atendendo as restries impostas pelo problema. O passo 2 iniciado o processo da gerao da populao de descendentes, que s estar nalizada aps o trmino do passo 3, ou seja, aps a mutao. No passo 4 ocorre a competio entre todos os indivduos, tanto genitores como descendentes. O critrio de competio a tness, que neste problema corresponde funo objetivo a ser otimizada. Este processo determinstico, levando em considerao que apenas indivduos sobrevivam e passem para a prxima gerao na qualidade de genitores. O critrio de parada especicado no passo 5 geralmente uma certa quantidade de geraes denidas pelo usurio.

O que Programao Evolucionria - PE?

A programao evolucionria foi inicialmente proposta por Laurence Fogel em 1962, como uma ferramenta estocstica de otimizao similar aos algoritmos genticos, entretanto enfatiza a relao entre a gerao de pais e a gerao de descendentes, ao invs de utilizar operadores genticos. A programao evolucionria um mtodo de otimizao, capaz de resolver problemas onde a resoluo analtica encontra diculdade para solucionar o problema. Como os algoritmos genticos, existe a premissa da anlise do tness para a obteno da melhor soluo. O problema de otimizao pode ser formulado de forma a minimizar uma funo objetivo. Desta forma o problema de minimizao global pode ser formulado como um par(S, ) onde S Rn o conjunto limitado em Rn e : S R uma funo de valores reais n-dimensional. O problema a determinao do ponto xmin S tal que (xmin) o mnimo global de S. Mais especicamente, necessrio encontrar xmin S tal que: x S : (xmn) (x) onde no precisa ser contnua, mas precisa ler limitada. Bck e Schwefel (1993) demonstram que o algoritmo de programao evolucionria com taxa de mutao adaptativa possui um melhor desempenho em relao ao algoritmo com taxa de mutao constante. Deve-se enfatizar que a programao evolucionria no utiliza nenhum operador de crossover como operador evolutivo. Existem dois pontos relevantes que diferenciam os algoritmos genticos da programao evolucionria: primeiro a representao das solues no so codicadas, no caso dos algoritmos genticos cannicos (representao binria ou genotpica) a anlise realizada em cromossomos codicados, geralmente de forma binria. Na programao evolutiva, a representao segue de acordo com o problema (representao fenotpica), por exemplo, uma rede neural pode ser representada da mesma forma que implementada. E em segundo, o operador de mutao modica a soluo de acordo com uma distribuio estatstica, de forma a existir uma pequena variao entre geraes. O algoritmo apresentado abaixo representa o algoritmo de programao evolucionria com taxa de mutao adaptativa (Yao et al., 1999): 1. Gerar a populao inicial com indivduos e k = 1. Cada indivduo escolhido como um par de vetores reais, (xi, i), i 1, ..., , onde xi so as variveis objetivos e i so os desvios padro para a mutao. 2. Avaliar o resultado do tness para cada indivduo (xi, i), i 1, ..., , da populao baseado no funo objetivo (xi).

Computao Evolucionria

10

3. Cada elemento pai (xi, i), i = 1, ..., , cria um descendente (xi , i). Para j = 1, ..., n. Tem-se que : xi(j) = xi(j)+i(j) Nj(0,1)(equao 1) i (j) = i(j) exp( N (0,1) + Nj(0,1)) (equao 2) onde xi(j), xi(j), i(j) e i(j) representam o j-simo componente do vetor xi , xi , i e i , respectivamente. N(0,1) indica a gerao de um nmero aleatrio de distribuio normal e mdia zero e desvio padro igual a 1; Nj(0,1) indica a gerao de um nmero aleatrio com distribuio normal para cada j. Os fatores e so geralmente designados como (2n)-1 e (2n)-1. 4. Calcular o tness de cada membro da nova gerao (xi,i), i 1, ..., . 5. Conduzir uma comparao de cada par entre a gerao pai (xi, i) e a gerao descendente (xi,i), i 1, ..., . Para cada elemento, q oponentes so escolhidos de forma aleatria entre todos os elementos da gerao pai e gerao descendente. Para cada comparao, se o tness individual maior que o do oponente, ele recebe uma vitria. 6. Selecionar os indivduos de (xi, i) e (xi , i) , i 1, ..., , que possuem maior nmero de vitrias para formarem a prxima gerao pai. 7. Suspender o algoritmo se um critrio de parada for alcanado, caso contrrio k = k+1 e retorna-se ao passo 3. Pode-se resumir o algoritmo de programao evolucionria a uma seqncia simples de passos, conforme mostrado na seqncia abaixo. 1. Gerar a populao inicial 2. Enquanto no atingir o critrio de parada faa 3. Avaliar o tness de cada elemento da populao 4. Cada elemento pai gera um descendente utilizando as equaes (1) e (2) 5. Avaliar o tness de cada elemento da nova gerao 6. Cada elemento da gerao pai comparado algumas vezes com alguns elementos da nova populao, o elemento com o melhor tness, a cada comparao, acumula uma vitria . 7. Selecionar os elementos com o maior nmero de vitrias para compor a nova gerao 8. Fim Enquanto 9. Retorna resultado

6
6.1

O que Programao Gentica - PG?


Introduo

Seres vivos so divididos em espcies. Ao longo do tempo (que pode ser relativamente curto ou muito longo) as espcies mudaram, ou seja, elas evoluem. Existem vrios componentes essenciais para a evoluo natural. Indivduos (por exemplo, animais ou plantas) dentro de uma populao de espcies so diferentes. Como resultado, alguns sobrevivem at a idade adulta (seleo natural), vivem mais e so mais propensos a procriarem . Estes animais (ou plantas,

Computao Evolucionria

11

etc) so ditos mais apto. s vezes, a variao tem um componente gentico, ou seja, os lhos podem herdar de seus pais. Consequentemente, aps um nmero de geraes, a proporo de indivduos dentro das espcies com esta caracterstica favorvel tende a aumentar. Ou seja, ao longo do tempo a espcie como um todo muda ou evolui. [17]

Figura 5: comportamento tpico de algoritmos evolutivos envolvendo seleo e cruzamento (crossover)

6.2

Descrio

Programao gentica (PG) tem sido aplicada com sucesso a um grande nmero de problemas difceis como reconhecimento de padres, minerao de dados, controle de robtica, sntese de arquiteturas neurais articiais (redes neurais), bioinformtica, gerando modelos para ajustar os dados, msica e gerao de imagem.[17] Qualquer tcnica de gerao automtica do programa pode ser visto como a procura de qualquer programa entre todos os programas possveis. Alm de ser enorme o campo de busca. Essa busca assumidamente contnua, e assim tcnicas clssica de otimizao numrica so incapazes de resolver os nossos problemas. Tcnicas de pesquisa estocstica, como PG, tm sido utilizado.[17] Programao Gentica, uma forma de computao baseada na simulao da evoluo de indivduos. Tem como base, o fato de que a evoluo na natureza criativa, pois produz muitas vezes resultados inesperados, impensados e no-lineares, diferente do modo da programao usual. Algumas caractersticas importantes da Programao Gentica so descritas a seguir [7]. Tanto os algoritmos genticos quanto a programao gentica so abordagens baseadas nas idias da teoria da evoluo. As duas abordagens utilizam populaes de indivduos, selecionam indivduos de acordo com sua aptido e introduzem variao gentica utilizando um ou mais operadores genticos. A diferena fundamental entre os dois reside na natureza dos indivduos: nos algoritmos genticos os indivduos so cadeias lineares (cromossomos) e sua sintaxe livre, na programao gentica os indivduos so entidades no lineares (rvores) e devem ter sua sintaxe preservada. Na programao gentica as solues so codicadas para permitir que os cromossomos (programas) sejam executados diretamente usando um interpretador apropriado. No algoritmo gentico o cruzamento de pais iguais levam a lhos iguais. Na programao gentica isto no acontece: dois pais iguais geram lhos diferentes abrindo a possibilidade para partir de uma populao pr-denida prxima a uma soluo de projeto desejada, aumentando a velocidade de convergncia.

Computao Evolucionria

12

Na programao Gentica as rvores (indivduos) possuem funes e terminais, que determinam suas caracteristicas e denem seu comportamento no ambiente. Cada funo um ramo da rvore, e cada terminal uma folha. As funes podem ser, por exemplo, operaes lgicas ou matemticas, e os terminais podem ser variveis, constantes, ou funes que no recebem argumentos[19]. Programao gentica usa uma estrutura cromossmica em rvore inspirada pela programao funcional LISP, Nikolav et al. (1999), Andre and Teller (1996). Um exemplo mostrado na Figura 6.

Figura 6: Expresso T3 lho de T1 e T2. As linhas pontilhadas indicam o contedo trocado durante a operao de crossover. Um indivduo de uma populao em programao gentica uma composio hierrquica de funes primiticas e terminais apropriados a um domnio de problema em particular. Neste

Diferenas entre AG, EE e PE

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 [24]: Programao Evolucionria, Estratgias Evolucionrias, Algoritmos Genticos e Programao Gentica. Estes mtodos esto sendo utilizados, cada vez mais, pela comunidade de inteligncia articial para obter modelos de inteligncia computacional [25]. 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 [29], com o objetivo inicial de estudar os fenmenos relacionados adaptao das espcies

Computao Evolucionria

13

e da seleo natural que ocorre na natureza (Darwin 1859), bem como desenvolver uma maneira de incorporar estes conceitos aos computadores [34]. Os AGs possuem uma larga aplicao em muitas reas cientcas, 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 [34]. Programao Gentica (PG) uma tcnica de gerao automtica de programas de computador criada por John Koza [8], 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). As EEs e PEs so semelhantes sendo que nestas ltimas os indivduos no so submetidos a cruzamentos. Os AGs enfatizam o aspecto cromossmico de cada indivduo. Nas EEs, um indivduo representado por um par de vetores reais da forma v=(x,), onde x representa o ponto de busca no espao e o vetor de desvio padro associado. Nas verses atuais, a descendncia obtida submetendo-se os indivduos da gerao a dois operadores: cruzamento e mutao. O cruzamento feito de forma aleatria e a mutao feita tipicamente atravs de uma perturbao Gaussiana de mdia nula e desvio padro unitrio, porm outros tipos de mutao so possveis [9, 20, 35]. Observa-se que o parmetro (que determina a mutao de x) tambm est sujeito ao processo de evoluo tambm atravs de mutao. Esta uma caracterstica fundamental das EEs, que permite o auto-ajuste de seus parmetros. Como dito anteriormente, existem dois pontos relevantes que diferenciam os algoritmos genticos da programao evolucionria: primeiro a representao das solues no so codicadas, no caso dos algoritmos genticos cannicos (representao binria ou genotpica) a anlise realizada em cromossomos codicados, geralmente de forma binria. Na programao evolutiva, a representao segue de acordo com o problema (representao fenotpica), por exemplo, uma rede neural pode ser representada da mesma forma que implementada. E em segundo, o operador de mutao modica a soluo de acordo com uma distribuio estatstica, de forma a existir uma pequena variao entre geraes.

Exemplos de Aplicaes Reais


1. Projeto digital desenvolvida pelos autores, assim como a representao gentica para as potenciais solues do problema. A aplicao consiste em evoluir dispositivos digitais bsicos e o principal objetivo avaliar o desempenho de um sistema de hardware evolutivo em termos de representao cromossmica e algoritmo de evoluo.[38] 2. Anlise de dados: clustering[31]

Computao Evolucionria

14

3. Controle de processos: determinao de parmetros para controle timo [33, 32], controle inteligente de um pndulo invertido [36], identicao de sistemas no-lineares[28] 4. A gerao de trajetria de robs ou de qualquer uma de suas partes um problema pertencente classe dos processos dependentes de ordenao, ou seja, processos em que a seqncia executada tem efeito fundamental sobre o desempenho. Para a resoluo desse problema, um GA modicado apresentado para otimizar o caminho intermedirio entre uma posio A e outra B. Essas modicaes (que esto descritas no artigo com detalhes) foram feitas para melhorar as caractersticas de herana de trajetria, e tambm para considerar melhor as regras (de movimentao) e uma seqncia de melhor qualidade. O brao rob analisado possui trs hastes e trs pontos de articulao. O autor concluiu que a utilizao do GA foi um sucesso. [5] 5. Este trabalho investiga a aplicao de um GA trabalhando em paralelo (PGA) para tratar um caso especial de linha de produo, conhecido como n/m/P/Cmax (n- tarefas, mmquinas, P-permutao e Cmax -tempo total do programa de produo). Neste problema deve-se respeitar as seguintes restries: [37] (a) todos as tarefas seguem uma mesma seqncia de mquinas (1,2,3, ..,m). (b) quando uma tarefa sai de uma mquina i, imediatamente ela passa mquina i+1, ou seja, o tempo de espera entre duas mquinas zero para a mesma tarefa (c) uma mquina se ocupa de apenas uma tarefa por vez. Portanto, uma tarefa s utilizar uma mquina, quando a mesma estiver desocupada. 6. Neste artigo, os autores procuram aperfeioar a geometria da bucha isolante de transformador, de forma que o campo em sua superfcie no ultrapassasse um valor limite predeterminado. Para avaliao de cada geometria, foi utilizado o mtodo de equaes integrais de fronteira. Os autores observaram a facilidade de aplicao de GAs em relao aos Mtodos Determinsticos que fazem uso da informao do gradiente. Por outro lado, indicaram superioridade das tcnicas determinsticas sobre os GAs, se analisada a quantidade nal de clculos de funo. Porm, advertiram que a caracterstica de globalidade pode valer a pena, pois o problema tratado pode ter muitas solues locais.[39] 7. dada uma pea musical (ou vrias), identicar as partes dessa pea que se repitam, aproximadamente ou no, e que possuam um signicado relevante no contexto dessa pea. O objectivo deste trabalho consistiu em estudar a viabilidade da aplicao de algoritmos evolucionrios ao problema da extraco de padres musicais. [27]

Frameworks AE - ECJ

ECJ2 um sistema de pesquisa em Computao Evolucionria escrito em Java3 . Ele foi projetado para ser extremamente exvel, com quase todas as classes (e todas as suas conguraes) determinadas(modicadas) dinamicamente em tempo de execuo, atravs de um arquivo de parmetros fornecido pelo usurio. Todas as estruturas do sistema esto organizadas para ser facilmente modicvel. Sendo assim, o sistema foi projetado focado na ecincia.
2 3

http://cs.gmu.edu/ eclab/projects/ecj/ - Um sistema baseado em JAVA de Pesquisa em Computao Evolutiva. http://www.oracle.com/us/technologies/java/index.html?ssSourceSiteId=otnen

Computao Evolucionria

15

ECJ desenvolvido no Laboratrio da Universidade George Mason, ECLab4 (Laboratrio Computao Evolucionria).

9.1
9.1.1

Caractersticas
Caractersticas Gerais

Interface Grca com Usurio Independente de plataforma Arquivos Hierrquico de parmetros Multi-tarefa Abstraes para implementar uma variedade de formas de CE. 9.1.2 Caractersticas CE

Modelos de ilha atravs de TCP/IP assncrona Master/Slave de avaliao sobre mltiplos processadores, com suporte para gerao, assncrona steady-state e distribuio Algoritmos Genticos coevolucionrio / Programao estilo evoluo do Estado e de geraes Steady, com ou sem evoluo atravs do Elitismo Estratgias evolutivas de estilo (, ) e ( + ) Arquitetura muito exvel de reproduo (muitos operadores de seleo) Ganchos para outros mtodos de otimizao multiobjetivo dentre outras. 9.1.3 rvore Representaes GP

Programao baseada em conjunto com rigidez de tipos genticos Constantes Aleatria Efmera Funes e macros denidas automaticamente Vrias orestas de rvores Seis algoritmos de criao de rvores Extenso conjunto de operadores de reproduo GP Encoding gramaticais Oito aplicao pr-construidas para domnios de problema GP (ant, regression, multiplexer, lawnmower, parity, two-box, edge, serengeti)
4

http://cs.gmu.edu/ eclab/

Computao Evolucionria

16

9.1.4

Representaes Vetoriais (GA/ES)

Genomas de comprimento xo e de comprimento varivel Representaes arbitrrias Variedade de mutao e operadores de crossover Muitos problemas de domnios de aplicaes vetoriais pr-construidas (rastrigin, sum, rosenbrock, sphere, step, noisy-quartic, booth, griewangk, nk, hiff, median). 9.1.5 Outras representaes

Genomas baseado no pacote de regra de multi-conjunto.

10

Concluso

A computao evolutiva representa uma iniciativa de implementao computacional de regras de evoluo muito simples: os indivduos sofrem variaes aleatrias de gerao em gerao (via operadores genticos responsveis pela implementao dos processos de busca), estando sujeitos seleo natural sob recursos limitados. Os indivduos mais adaptados (exemplares localizados em regies promissoras do espao de busca) sobrevivem e se reproduzem, propagando seu material gentico s prximas geraes. Assumindo que o tamanho da populao xo ao longo das geraes (simulao da existncia de recursos limitados), ento os indivduos mais adaptados da gerao atual tero maior chance de transmitir seu cdigo gentico para a prxima gerao. Existe portanto um compromisso entre mecanismos de explorao global do espao de busca (manuteno de diversidade na populao) e de explorao local das regies promissoras detectadas (aplicao de operadores genticos em conjunto com processos de seleo baseadas no nvel de adaptao de cada indivduo). Este levantamento bibliogrco procurou formalizar os principais conceitos, dando uma viso ampla e introdutria da Computao Evolucionria, especialmente os Algoritmos Evolucionrios: Algoritmos Genticos, Estratgias Evolutivas e Programao Evolucionria.

Referncias
[1] Evolutions strategie: Optimierung Technischer Systems nach Prinzipien der Biolgischen Evoltuion. Frommann-Holzboog Verlag, 1973. [2] Classier Systems and Genetic Algorithms. Articial Intelligence, 1989. [3] A critical Review of Classier Systems, chapter Chapter. Proc. Third Int. Conf. Genetic Algorithms, 1989. [4] Genetic Algorithms in Search. Optimization and Machine Learning, 1989. [5] Handbook of Genetic Algorithms. Van Nostrand Reinhold, 1991. [6] Genetic Algorithms. Scientic American, 1992. [7] Genetic Programming. MIT Press, 1992.

Computao Evolucionria

17

[8] Genetic Programming: On the Programming of Computers by means of Natural Selection. MIT Press, 1992. [9] Fast Evolution Strategies. Proc. 5th Annual Conf. Evolutionary Programming, 1993. [10] An Overview of Evolutionary Algorithms for Parameters Optimization. Evolutionary Computation, 1993. [11] Evolution Strategy. Computational Intelligence - Imitating Life, 1994. [12] Genetic Algorithms: A 25 Year perspective. R. J. Marks II, and C. J. Robinson, 1994. [13] Genetic Programming II: Automatic Discovery of Reusable Programs. MIT Press, 1994. [14] Programming and Evolution Evolutionary Strategies: Similarities and Differnces. Proc. Od European Conf. on Alife, 1995. [15] Articial Intelligent Through Simulated Evolution. John Wiley, 1996. [16] Evolutionary Computation: An Overview. Proc. 3rd IEEE Conf. on Evolutionary Computation, 1996. [17] Foundations of genetic programming. Springer, 1998. [18] Learning and Programming in Classsier System. Machine Learning, 1998. [19] In ductive genetic programming with immune network dynamics. Advances in Genetic Programming, 1999. [20] Optimal Reactive Power Dispatch using Evolutionary Computation: Extend Algorithms. IEE Proc.-Gene., 1999. [21] Introduction To Evolutionary Computing. Springer, 2003. [22] Evolutionary Computation for Modeling and Optimization. Springer, 2005. [23] Algoritmos genticos. Brasport, 2008. [24] BANZHAF, W; NORDIN, P. K. R. E. . F. F. D. Genetic programming: an introduction. Morgan Kaufmann, 1998. [25] BARRETO, J. Inteligncia articial - no limiar do sculo xxi. ppp Edies, 1997. [26] DeJong, K. An analysis of the Behavior of a Class of Genetic Adptive Systems. PhD thesis, Univ. Of Michigan, 1975. [27] Grilo, C. F. A. Aplicao de algoritmos evolucionrios extraco de padres musicais. Universidade de Coimbra, 2002. [28] H. Iba, T. Kurita, H. G. T. S. System identication using structured genetic algorithms. Proc. Fifth Int. Conf. Genetic Algorithms, 1993. [29] HOLLAND, J. Adaptation in natural and articial systems. The University of Michigan, 1975.

Computao Evolucionria

18

[30] Holland, J. H. Induction: Processes of Inference, Learning, and Discovery. PhD thesis, MIT Press, 1986. [31] J. N. Bhuyan, V. V. R.; Elayavalli, V. K. Genetic algorithm for clustering with an ordered representation. Proc. Fourth Int. Conf. Genetic Algorithms, 1991. [32] J. P. Nordvok, J. M. R. Genetic algoritms and their potential for use in process control: A case study. Proc. Fourth Int. Conf. Genetic Algorithms, 1991. [33] K. Krishnakumar, D. E. G. Control system optimization using genetc algorithms. Journal of Guidance, Control and Dynamics, 1992. [34] MITCHELL, M. An introduction to genetic algorithms. Cambridge: Mit Press, 1997. [35] Nogueira, M. O. R. S. Estratgias evolutivas aplicadas resoluo de otimizao multimodal. Simpsio Brasileiro de Automao Inteligente, 1999. [36] Odetayo, M. O.; McGregor, D. R. Genetic algorithm for inducing control rules for a dynamic system. Proc. Third Int. Conf. Genetic Algorithms, 1989. [37] Stppler S., B. C. The aplication of a parallel genetic algorithm to the n/m/p/cmax owshop problem. University of Bremen. [38] Tatiane J. de Campos, Jose R. de Oliveira, M. J. Programao gentica aplicada ao desenvolvimento de hardware evolutivo. Congresso Brasileiro de Automtica, 2004. [39] Vasconcelos J.A., Saldanha R.R., K. L. N. A. Algoritmo gentico aplicado otimizao em eletromagnetismo. Primeiro Congresso Brasileiro de Eletromagnetismo, 1995.

Anda mungkin juga menyukai