70
CENTRO UNIVERSITÁRIO DO MARANHÃO – UNICEUMA PRÓ-REITORIA ACADÊMICA COORDENAÇÃO DO CURSO DE SISTEMAS DE INFORMAÇÃO MATHEUS SOUSA OLIVEIRA UM ESTUDO SOBRE ALGORITMOS GENÉTICOS

Monografia - Algoritmos Geneticos - Matheus - Final

Embed Size (px)

Citation preview

Page 1: Monografia - Algoritmos Geneticos - Matheus - Final

CENTRO UNIVERSITÁRIO DO MARANHÃO – UNICEUMA PRÓ-REITORIA ACADÊMICA

COORDENAÇÃO DO CURSO DE SISTEMAS DE INFORMAÇÃO

MATHEUS SOUSA OLIVEIRA

UM ESTUDO SOBRE ALGORITMOS GENÉTICOS

São Luís2007

Page 2: Monografia - Algoritmos Geneticos - Matheus - Final

MATHEUS SOUSA OLIVEIRA

UM ESTUDO SOBRE ALGORITMOS GENÉTICOS

Monografia apresentada ao curso de Sistema de Informação do Centro Universitário do Maranhão - UniCeuma, para obtenção do grau de Bacharel em Sistema de Informação.

Orientador: Prof. Marcelo Mendonça

São Luís2007

1

Page 3: Monografia - Algoritmos Geneticos - Matheus - Final

MATHEUS SOUSA OLIVEIRA

UM ESTUDO SOBRE ALGORITMOS GENÉTICOS

Monografia apresentada ao curso de Sistema de Informação do Centro Universitário do Maranhão - UniCeuma, para obtenção do grau de Bacharel em Sistema de Informação.

Aprovada em / /

BANCA EXAMINADORA

___________________________________________Prof. Marcelo Nunes Mendonça (Orientador)

___________________________________________1º Examinador

___________________________________________2º Examinador

2

Page 4: Monografia - Algoritmos Geneticos - Matheus - Final

Aos meus pais Mardônio e Maria das Graças, minha irmã Mychelle, minha prima Larisse e a minha namorada Rayllany.

3

Page 5: Monografia - Algoritmos Geneticos - Matheus - Final

AGRADECIMENTOS

Em especial aos meus pais Maria das Graças e Mardônio pela dedicação,

apoio e incentivo que me deram desde a hora em que me colocaram no mundo.

A minha irmã Mychelle, pela preocupação e palavras de apoio que me deu

ao decorrer da elaboração deste trabalho.

A minha namorada Rayllany, pelas palavras carinhosas e de apoio nas

horas mais precisas.

Ao amigo e orientador Marcelo Mendonça que me guia desde os meus

primeiros passos na área não somente em meio acadêmico, mas socialmente

também.

A todos os colegas de curso onde nos apoiamos uns nos outros para

vencermos mais esta barreira dentre os quatro longos anos letivos em que

convivemos, nas horas boas e nas horas difíceis.

Não menos importante, a todos que ajudaram diretamente e

indiretamente, pelo incentivo, compreensão e apoio nos momentos mais difíceis no

decorrer deste trabalho.

4

Page 6: Monografia - Algoritmos Geneticos - Matheus - Final

“Existe uma coisa que uma longa existência me ensinou: toda a nossa ciência, comparada à realidade, é primitiva e inocente; e portanto, é o que temos de mais valioso”.

Albert Einstein

5

Page 7: Monografia - Algoritmos Geneticos - Matheus - Final

RESUMO

Abordagem sobre Algoritmos Genéticos. Ressalta-se sua origem, sua forma de

organização e elaboração, bem como suas aplicabilidades. Fala-se também um

pouco sobre a biologia, pois foi a partir dela que originou a idéia para criação dos

algoritmos genéticos, mais precisamente a partir da Lei da Evolução das Espécies,

criada por Charles Darwin. Tem-se ainda a utilização de alguns de seus termos em

analogia aos da informática, pela similaridade com a área biológica; seu

funcionamento tenta produzir os mesmos processos encontrados na natureza como:

Seleção, Cruzamento (Crossover), Mutação, etc. Os GAs são algoritmos de

otimização onde seu objetivo é otimizar problemas tentando tornar sua resolução

mais ideal possível. Através de suas aplicabilidades, os algoritmos genéticos

mostram com eficiência seu potencial e poderio, atuando os mesmos em diversas

áreas do conhecimento. Por tal motivo, este trabalho procura apresentar de forma

superficial algumas delas.

Palavras-chave: Algoritmos Genéticos. GAs. Bioinformática. Inteligência Artificial.

Algoritmos Genéticos Simples.

6

Page 8: Monografia - Algoritmos Geneticos - Matheus - Final

ABSTRACT

Approach about genetic algorithms. Stand out in its origin, its form of collation and

elaboration, just like its applicabilities. It talks too a little about the biology, cause it

was from it the original idea to the genetic algorithms, more precisely from the

evolutionary theory, created by Charles Darwin. It has too the utilisation of some of

his terms in analogy to the informatics ones, by the similarity with the biologic area;

its functioning try produce the same processes found in nature, like: Selection,

Crossover, Mutation, et cetera. The GAs are optimization algorithms whose goal is to

optimize problems trying to make their resolution the more ideal possible. Through its

applicabilities, the genetic algorithms show with efficiency their potencial and power,

acting in many knowledge areas. For such motive, this work try to present some of

them in a superficial way.

Keywords: Genetic algorithms. GAs. Bioinformatics. Artificial intelligence. Simple

Genetic Algorithms.

7

Page 9: Monografia - Algoritmos Geneticos - Matheus - Final

LISTA DE FIGURAS

Figura 1 - Estrutura representativa do DNA de dupla fita......................................18

Figura 2 - Representação do Dogma Central........................................................20

Figura 3 - Pseudo-Código do comportamento padrão dos algoritmos

evolucionários........................................................................................................24

Figura 4 - Diagrama representativo dos algoritmos evolucionário como técnica de

busca.....................................................................................................................25

Figura 5 - Função Hipotética com um máximo local e outro global.......................26

Figura 6 - Exemplo de pontos de corte..................................................................38

Figura 7 - Representação do processo de cruzamento de um ponto....................39

Figura 8 - Representação de cruzamento de dois pontos.....................................40

Figura 9 - Representação de cruzamento uniforme..............................................40

Figura 10 - Exemplo ilustrativo de mutação..........................................................42

Figura 11 - Descrição da operação do operador de crossover de um ponto e

mutação.................................................................................................................42

8

Page 10: Monografia - Algoritmos Geneticos - Matheus - Final

LISTA DE TABELAS

Tabela 1 - Faz uma comparação entre os termos utilizados em linguagem

natura (na biologia) com a utilizada no GA............................................................30

Tabela 2 - Esboço do algoritmo genético em forma de etapas.............................31

Tabela 3 - Exemplo de como ocorre o processo de seleção atentando para não

cair no efeito de convergência genética................................................................37

Tabela 4 - Contem a área cientifica assinalando com a utilização do GA.............44

9

Page 11: Monografia - Algoritmos Geneticos - Matheus - Final

LISTA DE SIGLAS

GA Algoritmos Genéticos

GAs Algoritmos Genéticos Simples

DNA Sigla em inglês para o "ácido desoxirribonucléico"

RNA Sigla em inglês para o "ácido ribonucléico"

API Interface de Programação de Aplicativos

NP É o acrônimo em inglês para Tempo polinomial não determinístico

10

Page 12: Monografia - Algoritmos Geneticos - Matheus - Final

SUMÁRIO

LISTA DE FIGURAS..........................................................................................8

LISTA DE TABELAS.........................................................................................9

LISTA DE SIGLAS.............................................................................................10

1 INTRODUÇÃO...................................................................................................12

2 BIOLOGIA BÁSICA...........................................................................................15

2.1 Teoria da Evolução..........................................................................................15

2.2 Genética Básica..............................................................................................17

2.3 Historia dos Algoritmos Genéticos...................................................................20

3 CONCEITOS BÁSICOS EM GÁS......................................................................23

3.1 Entendendo Algoritmos evolucionários...........................................................23

3.2 O que são algoritmos genéticos?....................................................................26

3.3 Entendendo as terminologias para GÁS.........................................................28

4 ENTENDENDO UM GA SIMPLES.....................................................................31

4.1 Como escolher parâmetros do GA..................................................................32

4.2 Representação de um cromossomo................................................................33

4.3 Inicialização Cromossomial.............................................................................34

4.4 Função Para Cálculo da Aptidão.....................................................................35

4.5 Seleção............................................................................................................36

4.6Cruzamento ("Crossover")................................................................................37

4.7 Mutação...........................................................................................................41

5 APLICABILIDADES...........................................................................................43

6 CONSIDERAÇÕES FINAIS...............................................................................46

REFERÊNCIAS.................................................................................................48

11

Page 13: Monografia - Algoritmos Geneticos - Matheus - Final

1 INTRODUÇÃO

Desde a Pré-História o homem vem buscando e adquirindo conhecimento

com o intuito de facilitar seus afazeres do dia a dia, como uma das suas primeiras

descobertas veio a utilização do fogo no preparo de seus alimentos, onde com uma

pedra afiada teve a idéia de cortá-los, não precisando mais fazê-lo com os dentes. A

partir daí, as idéias forma evoluindo cada vez mais. O homem passou a interagir mais

com a natureza que o cercava, ao observá-la, teve várias idéias e também o

aperfeiçoamento de outras, como por exemplo, podemos citar que ao analisar o modo

de voar de algumas aves onde as mesma utilizam correntes de ar quente para

planarem veio à criação da asa delta e assim sucessivamente várias outras idéias

surgiram, ou seja, ao analisar a natureza o homem pode criar novas tecnologias

baseando-se na mesma.

Várias décadas se passaram e, junto com a evolução, surgiram também

problemas, tais problemas ganharam uma complexidade cada vez maior com o

decorrer dos tempos, consequentemente, o homem cada vez mais desenvolvia seu

intelecto ao tentar solucioná-los.

A partir da criação do computador, foram desenvolvidas várias tecnologias,

uma delas foi o algoritmo, que consiste em uma seqüência finita e não ambígua de

instruções computáveis para solucionar um problema.

Temos como objetivo, fazer uma abordagem acerca da ramificação,

denominada algoritmos genéticos, onde os mesmos constituem uma parte da

computação evolutiva, a qual está rapidamente crescendo como uma subdivisão da

Inteligência Artificial.

Para tal finalidade, apoiamo-nos em alguns trabalhos de estudiosos da área,

procurando de forma simples alcançar nosso objetivo. Para tanto, procuramos utilizar

uma linguagem clara e de fácil compreensão, pois esta foi uma preocupação que

tivemos ao analisarmos alguns destes trabalhos, inicialmente tivemos algumas

dificuldades em seu entendimento dado à linguagem que alguns pesquisadores

utilizavam.

12

Page 14: Monografia - Algoritmos Geneticos - Matheus - Final

O presente trabalho se justifica pela necessidade de estimular reflexões e

debates sobre a importância do assunto hora abordado, tendo em vista que trata-se de

um assunto relativamente novo e pouco conhecido. O mesmo apresenta como

conteúdo uma abordagem quanto ao surgimento dos algoritmos genéticos e um pouco

sobre a biologia, pois são utilizados termos análogos quando nos referenciamos aos

algoritmos genéticos e a genética, também encontraremos conceitos básicos, algumas

aplicabilidades e etc., levando assim, a um melhor entendimento sobre o assunto.

Sua estrutura está composta da seguinte maneira: o primeiro capítulo

corresponde à Introdução, na qual se delimita o problema, justifica a realização da

pesquisa e expõe os seus objetivos e metodologia do estudo, bem como suas

justificativas. No segundo capítulo, discorre-se sobre uma breve introdução a biologia,

dando ênfase maior à Teoria da Evolução e Genética Básica isso se origina da

similaridade que existe entre os algoritmos genéticos e os mesmo, também falamos

sobre a historia dos GA, buscando não só contextualizar sua origem, mas através da

mesma analisar e com isso entenderemos a idéia de sua criação. No terceiro, examina-

se seus conceitos básicos, bem como o entendimento dos algoritmos evolucionários e

também suprir com conhecimento a indagação sobre o que é um algoritmo genético e

suas terminologias. No quarto capítulo, falaremos sobre a importância da escolha dos

parâmetros do GA, dando dicas para o mesmo, pois dependerá diretamente dela os

resultados que serão obtidos na resolução dos problemas, falaremos um pouco sobre

as representações cromossomiais com a finalidade de aumentar o nosso

conhecimento, não ficando apenas na representação binária, pois é a mais utilizada na

maioria dos trabalhos pesquisados, também entenderemos como ocorre o processo do

funcionamento de um GA simples através dos métodos: Inicialização cromossomial,

função para o calculo da aptidão, seleção, etc. No quinto capítulo, apresentaremos

algumas aplicabilidades citando as áreas e as aplicações nas mesmas e algumas

ferramentas comercias que utilizam algoritmos genéticos. Finalmente, nas

considerações finais, faz-se uma reflexão sobre tudo até agora falado, exaltando a

importância da utilização dos algoritmos genéticos e como o mesmo podem ajudar na

elucidação de problemas que para algoritmos normais possa ser demasiadamente lento

e trabalhoso.

13

Page 15: Monografia - Algoritmos Geneticos - Matheus - Final

Esperamos, pois, que este trabalho venha contribuir para fundamentar

estudos posteriores, uma vez que este é apenas introdutório na área dos algoritmos

genéticos. Embora, não temos a pretensão de esgotar o assunto, pois o mesmo é vasto

e de graus de complexidade variados. Que o mesmo seja um ponto de partida para

aguçar a sede de conhecimento sobre o tema objeto deste trabalho monográfico.

14

Page 16: Monografia - Algoritmos Geneticos - Matheus - Final

2 BIOLOGIA BÁSICA

Tentando buscar um melhor entendimento acerca do assunto abordado,

resolvemos escrever este capitulo com a intenção de explicar as origens dos GAs,

como surgiram, a partir de que seus criadores tiveram a idéia de criá-los (não menos

importante) para termos uma idéia de como ocorre seu funcionamento através da

biologia.

2.1 Teoria da Evolução

Os algoritmos genéticos foram criados baseados na teoria da evolução, então

podemos começar citando o Big-Bang, pois segundo alguns autores, foi a partir dele

deu-se o inicio de tudo.

Foi à teoria que revolucionou o modo de pensar na biologia, tendo como seu

criador Charles Darwin um naturalista, que mais adiante vai ser considerado o pai da

evolução onde em sua teoria afirmava que os seres vivos evoluíram de um ancestral

comum, tendo herdado pequenas modificações, que poderiam ou não se propagar,

através de seleção natural.

O homem é um produto da evolução, sendo assim, muitos dos problemas

relacionados a ele podem ser entendidos apenas quando o homem é considerado

como um organismo evoluído e em evolução. O conhecimento profundo dos princípios

e mecanismos da evolução é, portanto, um pré-requisito para entender o homem

(MAYR apud MARQUES, 1977 Disponível: <http://www.brasilescola.com/biologia/teoria-

da-evolucao.htm>).

Para Darwin mutações seriam variações genéticas que provavelmente são

produzidas sucedendo outras visando um aperfeiçoamento das mesmas. Efetivamente

ele considera que a chave da origem de todas as raças atuais são frutos da seleção

natural e acumulação sendo exercidas nas diversas variações sucessivas fornecidas

pela natureza.

Os cientistas mais conceituados até o século XIX acreditavam ao menos em

uma das teorias do criacionismo (“Deus criou o universo da forma que ele é hoje”

15

Page 17: Monografia - Algoritmos Geneticos - Matheus - Final

LINDEN, 2006, p. 24) também da geração espontânea (“a vida surge de essências

presentes no ar” LINDEN, 2006, p. 24). Darwin em varias de suas viagens visitou vários

lugares e sua grande habilidade em observar a natureza permitiu-lhe perceber que

animais de uma espécie eram ligeiramente diferentes que seus parentes em outros

ecossistemas, sendo os mesmos mais adaptáveis as necessidades e oportunidades

encontradas em seu ecossistema específico. Ao fazer um levantamento de vários

dados e a análise dos mesmos, Darwin chegou a uma conclusão de suas dúvidas

assim criando a teoria da evolução das Espécies, dando assim, origem a sua grande

obra em 1859, chamada de “A Origem das Espécies”. Por ser uma idéia inovadora para

a época, seu livro foi amplamente combatido, mas atualmente é aceito por praticamente

toda a comunidade acadêmica mundial.

Na natureza dentro de um mesmo ecossistema todos os indivíduos

competem entre si por recursos limitados, isso é o que diz a teoria da evolução, como

exemplo podemos citar água e comida por serem mais vitais para a manutenção do

organismo. Os indivíduos (animais, vegetais, insetos, etc.) dentro de uma mesma

espécie que não obtém êxito têm a tendência de ter uma prole menor, levando assim a

uma pequena probabilidade de terem seus genes propagados ao longo de sucessivas

gerações, este processo conhecemos por seleção natural.

Os indivíduos que se perpetuam com suas sucessivas combinações de suas

características podem produzir um novo indivíduo bem mais adaptado as necessidades

que o seu meio ambiente o proporciona, ao mesclar essas características positivas de

cada um dos reprodutores, este individuo tem chances maiores de sobrevivência em

relação aos outros. Este processo da se a várias combinações de indivíduos sendo as

mesmas variações de seus pais. Sendo assim, o individuo descendente é ligeiramente

diferente do seu progenitor, podendo esta diferença ser positiva ou negativa conforme

preceitua LINDEN:

[...] um elefante só pode nascer do ventre de outro elefante. A pergunta razoável que se pode levantar é: de onde surgiu o primeiro elefante? De uma outra coisa parecida com, mas não muito diferente de, um elefante, ou seja, um outro animal parecido com o elefante como nós conhecemos atualmente (LINDEN, 2006, p. 25).

16

Page 18: Monografia - Algoritmos Geneticos - Matheus - Final

Com isso, podemos deduzir que nossas características são passadas de

geração pra geração.

A evolução natural não é um processo dirigido, com o objetivo de levar um

melhoramento ideal das espécies. Na verdade, não podemos afirmar que descendentes

de pais muito bem adaptados herdem todas as suas características sendo assim

indivíduos idênticos. Pais fortes podem produzir filhos com doenças terríveis ou

fraquezas inerentes. Sendo assim, é um mecanismo que leva a conseqüências naturais

de transmissão de informação.

A evolução é um processo onde os seres vivos são alterados por um conjunto

de modificações que herdam de com as passagens de gerações, podendo sendo

explicadas por fatores como mutação gênica, recombinação gênica, seleção natural e

isolamento. Para Darwin na época por não dispor de todas essas informações não pode

obter um melhor aproveitamento de suas pesquisas, mas graças a ele outros poderão

continuá-la.

2.2 Genética Básica

Darwin afirmar que a evolução e a seleção natural das espécies faziam com

que as mesmas fossem se adaptando naturalmente de acordo com o seu ecossistema,

por falta de mais informação ele não sabia quais eram os mecanismos básicos através

dos quais essas adaptações aconteciam, pois o processo de transmissão de

informação genética ainda era desconhecido. No inicio do século XX, Gregor Johann

Mendel que era um monge agostiniano, botânico e meteorologista austríaco,

compreendeu que o processo de transmissão de características positivas, estava

associado a uma unidade básica de informação, conhecida por gene através de

pesquisas.

Durante muito tempo, mais ou menos quase um século foi necessário para a

conclusão do processo que levou à descoberta de como estas características eram

fisicamente armazenadas dentro da célula. O bioquímico Friedtich Mieschner em 1869,

concluiu que os núcleos celulares possuíam varias substancias especificas, podendo

ser separadas em duas categorias principais: proteínas e moléculas acidas. Ate aquele

17

Page 19: Monografia - Algoritmos Geneticos - Matheus - Final

momento estas informações eram desconhecidas, elas foram denominadas de “ácidos

nucléicos”.

Na Rússia em 1909, um químico natural conhecido por Phoebus A. T.

Levene, em suas pesquisas identificou a ribose como açúcar de um dos dois tipos de

ácidos nucléicos, o acido ribonucléico, e certos componentes do outro acido nucléico, o

acido desoxirribonucléico este ultimo foi descoberto em 1929. Ele também identificou

corretamente a estrutura básica do DNA que continha adenina, guanina, timina,

citosina, desoxirribose, e um grupo fosfato, ou seja, fosfato-açucar-base. Na época era

praticamente um consenso o fato de que as proteínas eram a base do processo de

armazenamento de informação genética.

Fredrick Griffith e Oswald T. Avery dois bacteriologiastas fizeram a correção

desta suposição, onde após exaustivas pesquisas chegaram a conclusão de que a

molécula que armazenava as informações relativas a hereditariedade era o DNA, e não

as proteínas ou o RNA. No entanto, naquela época não se entendia como o processo

funcionava, o que só ficou claramente entendido após descobertas feitas por Francis

Crick e James Watson em seus trabalhos, onde os mesmos desenvolveram a dupla

hélice do DNA e a forma como os ácidos nucléicos interagiam dentro desta molécula.

Atualmente, com as descobertas da estrutura do DNA por Crick e Watson podemos

observar o funcionamento do mesmo, como unidade básica de armazenamento e

transmissão de informação genética, onde concluímos o entendimento deste processo

ao saber como funciona em nível molecular. A da Figura 1 mostra a estrutura do DNA.

Figura 1 - Estrutura representativa do DNA de dupla fita (TICONA, 2003, p. 8).

18

Page 20: Monografia - Algoritmos Geneticos - Matheus - Final

Todos os indivíduos seja ele animal, vegetal ou até mesmo organismos

inferiores como vírus e bactérias, basicamente são formados por uma ou mais células,

onde dentro de cada uma delas o organismo possui uma copia completa do conjunto de

um ou mais cromossomos que descrevem o organismo, este conjunto é denominado

genoma.

O cromossomo é composto por pares, sendo que o numero de pares (n) varia

de espécie para espécie. Nós seres humanos possuímos 23 pares de cromossomos

por célula, mas não somos os portadores do maior numero de pares da natureza, os

burros, por exemplo, tem 31 pares de cromossomos e as carpas, 52. Um cromossomo

é composto por genes, onde os mesmos são blocos de seqüência de DNA, sendo

assim, cada gene é uma região do DNA tendo uma posição especifica no cromossomo,

esta é chamada de lócus, e controla uma característica hereditária especifica, como

por exemplo: cor do cabelo, altura, cor dos olhos dentre tantas outras que podemos

citar, ou seja, características estas que nos torna o que somos. Geralmente a

seqüência das bases que compõe o gene corresponde a uma ou mais proteínas ou

RNA complementar.

Proteínas são a base do funcionamento das células, sendo estas compostas

por cadeias de aminoácidos e responsáveis praticamente por todo o trabalho realizado

nas células. Dentre os vários tipos de proteínas podemos destacar as enzimas a

hemoglobina, certos hormônios e o colágeno dos ossos, tendões e pele, tendo funções

fundamentais para a sobrevivência. Nelas podemos encontrar as mais diversificadas

funções, incluindo entre outras coisas, a regulação da contração muscular, produção de

anticorpos expansão e contração dos vasos sanguíneos para manter a pressão normal

etc.

Portanto definimos o DNA como grande armazenador de informações

genéticas de um organismo, e as proteínas tendo o papel de verdadeiras trabalhadoras

celulares. O DNA e as proteínas têm uma relação pelo dogma central da biologia.

Afirmando que uma seqüência de DNA, que contem toda a informação necessária para

se auto-replicar, é transcrita em RNA e esta por sua vez é traduzida para uma proteína.

A representação do Dogma Central está representada pela Figura 2.

19

Page 21: Monografia - Algoritmos Geneticos - Matheus - Final

Figura 2 - Representação do Dogma Central (TICONA, 2003, p. 9).

2.3 História dos Algoritmos Genéticos

A descoberta dos algoritmos genéticos deu se na década de 40, quando os

cientistas ao observar a natureza se inspiraram no seu processo tentando assim imita-

lo criando assim o ramo da inteligência artificial. A pesquisa desenvolveu-se mais no

ramo cognitivo e na compreensão dos processos de raciocínios e aprendizado até o

final da década de 50, quando deu inicio a busca de modelos de sistemas genéricos

que gerassem soluções candidatas para resolução de problemas muito complexos

sendo assim de difícil resolução computacional.

Foi em 1957 que foram feitas as primeiras tentativas de se associar a

evolução natural a problemas de otimização, o mesmo foi apresentado por Box em seu

esquema de operações evolucionarias. Seu método era perturbar de forma sistêmica

duas ou três variáveis de controle de uma instalação, onde de forma semelhante

podemos comparar a atualmente com operadores de mutação e seleção. Com o passar

do tempo vários pesquisadores também desenvolveram suas pesquisas, na década de

1960 dois pesquisadores tiveram grande êxito ao começarem a trabalhar com genes,

Bledsoe e Bremmerman usaram tanto a representação binária quanto a inteira e a real,

desenvolvendo os precursores dos operadores de recombinação (crossover).

É chegada a primeira metade da década de 60, I. Rechenberg fez a primeira

tentativa na utilização de processos evolutivos para resolver problemas de desenhos

aerodinâmicos de asas, onde através de suas pesquisas ele desenvolveu as

estratégias evolucionárias (evolution strategies). Onde mantinha uma população de dois

20

Page 22: Monografia - Algoritmos Geneticos - Matheus - Final

indivíduos com cromossomos compostos de números reais em cada instante, onde um

dos dois era filho do outro, onde era gerado através da aplicação exclusiva do operador

de mutação. Rochenberg descreve que o processo tinha ampla fundamentação teórica,

pois a mutação era aplicada a partir de uma distribuição gaussiana dos parâmetros e foi

utilizado com sucesso em vários problemas práticos. As pesquisas de Rochenberg

atualmente não são amplamente aceitas, tais como populações maiores e operador de

crossover, mas seu trabalho pode ser considerado pioneiro, por ter introduzido a

computação evolucionaria as aplicações práticas.

Trabalhos posteriores as estratégias evolucionarias conseguiram de forma

efetiva suprir estas falhas, onde foram feitas inclusões de conceitos de população e

operador de crossover. De maneira interessante ao aplicar a este operador onde ao

incluir a idéia de utilizar a media como operador alem de poder envolver muitos pais,

idéias estas de grande importância pois as mesmas podem ser utilizadas em algoritmos

genéticos quando usamos cromossomos com uma representação contínua. Entretanto,

mesmo não sendo o primeiro investigador da área, aquele que seria considerado o pai

dos algoritmos genéticos só foi finalmente descoberto no final da década de 60, quando

John Holland desenvolve os Algoritmos Genéticos, embora concentrado

eminentemente na codificação discreta. Holland ao estudar formalmente a evolução das

espécies propôs uma hipótese de modelo computacional que ao ser implementado

poderia oferecer boas soluções para problemas extremamente difíceis que eram

insolúveis computacionalmente ate aquela época. Foi em 1975 que Holland publicou

sua obra, “Adaptation in Natural and Artificial Systems”, no qual aborda um estudo

sobre os processos evolutivos, ao invés de projetar novos algoritmos, como a maioria

cogita. Seu trabalho apresenta os algoritmos genéticos como uma metáfora para os

processos evolutivos, de forma que ele estudasse a adaptação e a evolução no mundo

real e assim simular dentro de computadores. Mas, os algoritmos genéticos acabaram

por ampliar consideravelmente seu papel originalmente imaginado por Holland e

transformaram-se em uma poderosa ferramenta onde se é utilizada de forma

disseminada por cientistas da computação.

Podemos citar um fato interessante no trabalho de Holland e sua influência na

área de GA, onde ele utilizou originalmente cromossomos binários, cujos genes eram

21

Page 23: Monografia - Algoritmos Geneticos - Matheus - Final

apenas zeros e uns. Pesquisadores da área acabaram por abolir esta limitação, mesmo

assim vários cientistas ainda sim insistem em utilizar a representação binária, mesmo

existindo outras que podem se mostrar muito mais eficientes na resolução do problema

em questão.

A partir de então os algoritmos genéticos começaram a se expandir por toda

a comunidade científica, com a sua utilização puderam resolver problemas

extremamente importantes que talvez não fossem abordados de outra maneira. Como

bem assevera LINDEN:

É bem provável que alguém inventasse outra maneira de resolve-los, mas talvez esta não fosse tão eficiente e/ou interessante quanto os algoritmos genéticos. (LINDEN, 2006, p. 33)

Desta forma, com seu desenvolvimento veio também a utilização para fins

comerciais onde nos anos 80 surgiu pacotes comerciais utilizando algoritmos genéticos.

Evolver é considerado o primeiro pacote comercial por vários artigos, que já estava

disponível desde 1988 e que incluía um programa adicional para o Excel e uma API

(Interface de Programação de Aplicativos) para o desenvolvimento de programas que

acessassem dados provenientes de diferentes aplicativos. Atualmente podemos

encontrar vários aplicativos que tem as mesmas características.

Com isso vieram as primeiras conferências cientificas dedicadas

exclusivamente a estes tópicos na década de 80, ocasionado pelo progresso dos

algoritmos evolucionários e sua popularização no meio cientifico. Atualmente os

algoritmos genéticos obtiveram benefícios muito da interdisciplinaridade, pois cada vez

mais cientistas da computação buscam idéias em outras áreas de pesquisa para

compor suas inspirações de forma ao absorverem suas idéias possam fazer com que

os GAs sejam mais eficientes e inteligentes na resolução de problemáticas.

22

Page 24: Monografia - Algoritmos Geneticos - Matheus - Final

3 CONCEITOS BÁSICOS EM GAs

Neste capítulo tentaremos explicar de forma sucinta os conceitos associados

aos algoritmos genéticos, de onde vem à inspiração para seu desenvolvimento e uma

representação de como são desenvolvidos. Apresentaremos vários conceitos básicos,

mas de grande importância para um melhor entendimento a cerca do tema abordado no

presente trabalho onde facilitaram melhor a compreensão dos demais capítulos que

virão a seguir.

3.1 Entendendo Algoritmos evolucionários

Estes vieram com a finalidade de resolver problemas com respeito à evolução

genética para o estudo e a análise de diversos indivíduos de diversas populações que

associadas aos genes em um cromossomo assumindo valores correspondentes aos

alelos. Os Algoritmos evolucionários através de modelos computacionais dos processos

naturais de evolução resolvem problemas utilizando estes processos como uma

ferramenta. Mesmo existindo vários modelos computacionais propostos, todos eles

utilizam o conceito de simulação da evolução das espécies através de seleção,

mutação e reprodução existindo assim algo em comum entre os mesmos, estes

processos dependem do “desempenho” dos indivíduos desta espécie dentro do

“ambiente”.

Operadores genéticos em sua essência tentam reproduzir fenômenos vistos

na natureza computacionalmente, como a reprodução sexuada, a mutação genética e

qualquer outro que a mente de um programador possa reproduzir.

Através do pseudo-código encontrado em fontes de pesquisa (Figura 3)

podemos mostrar de forma resumida e não muito detalhada o comportamento padrão

dos algoritmos evolucionários:

23

Page 25: Monografia - Algoritmos Geneticos - Matheus - Final

T:=0 // Inicializamos o contador de tempoInicializada_Populacao P(0) // Inicializamos a população aleatoriamenteEnquanto não terminar faça // condição de termino: por tempo, por avaliação, etc.

Avalie_População P(t) // Avalie a população neste instanteP’:=Selecione_Pais P(t) // Selecionamos sub-população que gerará nova

geração P’:=Recombinação_e_mutação P’ // Aplicamos os operadores genéticosAvalie_População P’ // Avalie esta nova populaçãoP(t+1)=Selecione_sobreviventes P(t), P’ // Selecione sobreviventes desta geraçãoT:=t+1 // Incrementamos o contador de tempo

Fim enquantoFigura 3 – Pseudo-Código do comportamento padrão dos algoritmos evolucionários (LINDEN, 2006, p. 38)

Podemos entender o funcionamento básico dos algoritmos evolucionários no

algoritmo acima (Figura 3) onde consiste em buscar dentro da atual população aquelas

soluções que possuem as melhores características (função Selecione_Pais) e tentar

combiná-las de forma a gerar soluções ainda melhores (função

Recombinação_e_mutação), sendo assim repete-se o processo até que tenha se

passado tempo suficiente ou que tenha-se obtido uma solução satisfatória para nosso

problema.

Em cada repetição do loop principal (Figura 3, o “enquanto“ em negrito)

podemos denominar como uma geração do algoritmo. Como já foi citado acima que os

algoritmos evolucionários imitam de certa forma os processos da natureza, este

conceito é semelhante ao conceito de geração existente na vida real, mas com a

exceção de que muitas vezes nos algoritmos evolucionários duas gerações não

convivem, como veremos adiante ao estudar o primeiro tipo de algoritmo genético.

Podemos perceber ao analisar o pseudo-código (Figura 3) que os algoritmos

evolucionários são exatamente dependentes de fatores probabilísticos, tanto na fase de

inicialização da população quanto na fase de evolução (associe principalmente ao

processo de seleção dos pais). Sendo assim os seus resultados são dificilmente

reprodutíveis, tornando assim um caso raro destes resultados serem perfeitamente

iguais. Contudo mesmo o nome algoritmos evolucionários indicar o contrario, são

heurísticas “Heurística são algoritmos polinomiais que não têm garantia nenhuma

sobre a qualidade da solução encontrada, mas que usualmente tendem a encontrar a

24

Page 26: Monografia - Algoritmos Geneticos - Matheus - Final

solução ótima ou ficar bem próximos dela.” (LINDEN, 2006, p. 38) sendo assim, não

asseguram que seus resultados obterão uma resolução ideal em todas as suas

execuções.

Sendo assim podemos deduzir que se você tem um algoritmo com o tempo

de execução curto o suficiente para a solução de um problema, não haverá a

necessidade da utilização de um algoritmo evolucionário. Uma melhor aplicabilidade

para um algoritmo evolucionário que descobrimos em nossas pesquisas, seria quando

na resolução de um problema um algoritmo for demasiadamente lento, como em

problemas NP-completos, que “[...] é o subconjunto dos problemas de decisão em

NP[...]“ (WIKIPÉDIA, 2007, Disponível: http://pt.wikipedia.org/wiki/NP-completo) ou

incapaz de achar uma solução como em problemas de maximização de funções multi-

modais, então ai entraria os algoritmos evolucionários.

Vários termos foram citados até agora, as vezes até de difícil compreensão,

mas os algoritmos evolucionários são de simples implementação.

Vamos agora tentar entender melhor como os algoritmos evolucionários se

posicionam como técnicas de busca através de um esquema apresentado na Figura 4.

Existe um ramo de busca chamado de “Técnicas Aleatórias-Guiadas” onde os

algoritmos evolucionários fazem parte, isto é, eles tem componentes aleatórios, mas

utilizam informações do estado corrente para guiar a pesquisa, tendo assim uma

diferença de métodos puramente aleatórios como a técnica de Random Walk. Ao

analisar a figura podemos entender como os algoritmos evolucionários se dividem em

vários tipos distintos (marcados em cinza).

25

Page 27: Monografia - Algoritmos Geneticos - Matheus - Final

Figura 4 - Diagrama representativo dos algoritmos evolucionário como técnica de busca (LINDEN, 2006, p. 39).

3.2 O que são algoritmos genéticos?

GA ou Algoritmo Genético é o ramo dos algoritmos evolucionários e como tal

são definidos como uma técnica de busca baseada numa metáfora do processo

biológico de evolução natural.

Pelo fato de os algoritmos genéticos nem sempre encontrarem a solução

ideal e que dificilmente conseguiram repetir o mesmo resultado consideramos os

mesmo como técnicas heurísticas de otimização global. Esta questão que diz respeito a

otimização global opõe aos métodos como gradiente (hill climbing), que tem como

objetivo encontrar o maximo de uma função ficando facilmente retidos em máximos

locais, entenderemos melhor ao visualizar a Figura 5, onde o método de hill climb uma

técnica gradiente se inicia em qualquer um dos pontos de inicio marcados seguirá o

gradiente, ou seja, direção de maior crescimento e acabará presa no ponto maximo

local onde a derivada é 0. Os algoritmos genéticos não tem dependência forte dos

valores inicias como no citado a pouco.

26

Page 28: Monografia - Algoritmos Geneticos - Matheus - Final

Figura 5 - Função Hipotética com um máximo local e outro global (LINDEN, 2006, p. 40).

Anteriormente vimos que o método de hill climbing é diferente dos GAs pois

os algoritmos genéticos não ficam estagnados simplesmente pelo fato de terem

encontrado um máximo local. Na verdade quando nos referimos a este ponto, os GAs

se parecem com a evolução natural, pois ao encontrar um individuo que é

instantaneamente o melhor de um certo grupo ele não para de “procurar” outros

indivíduos ainda melhores. Isto também ocorre na evolução natural ao existirem

circunstancias que mudam de um momento para outro, como organismos que se

encontram em um determinado ambiente ao se depararem com um desequilíbrio os

mais fortes sobreviverão, ou seja, se adaptarão as diversidades, podemos citar o vírus

da gripe como um exemplo real disto.

Para os algoritmos genéticos o ambiente geralmente é um só. Mas temos que

ter cuidado ao fazer qualquer afirmação, pois ao se passarem as gerações e os

operadores genéticos vão atuando, faz-se uma grande busca pelo espaço de soluções,

fazendo uma analogia entre os GAs e a Natureza, esta busca seria realizada pela

evolução natural se elas ficassem permanentemente em um ambiente imutável.

A evolução natural não é um processo dirigido à obtenção da solução ideal como

muitos costumam pensam. Na verdade o processo consiste na adaptação do melhor

individuo, pois ao competirem entre si só os mais fortes, ou melhor, os mais adaptáveis

se sobressaem e assim sobrevivem. Como os GAs tentam imitar a natureza os mesmo

por sua vez tem o mesmo comportamento que a evolução natural, posto que é “[...] a

27

Page 29: Monografia - Algoritmos Geneticos - Matheus - Final

competição entre os indivíduos é que determina as soluções obtidas.” (LINDEN, 2006,

p. 41). Sendo assim, os indivíduos mais adaptáveis prevalecerão, mas podem

acontecer casos em que a atual geração ser muito pior que a lhe antecedeu, sendo que

isto não é muito provável de acontecer logo não é muito comum este tipo de caso.

Novamente frisamos que GAs, apesar de seu nome implicar no contrário, não

constituem um algoritmo de busca da solução ideal de um problema, mas sim uma

heurística que encontra boas soluções a cada execução, mas não quer dizer que

encontrará a mesma todas às vezes, pois podem ser encontrado máximos ou mínimos

locais, próximos ou não do maximo global, nós atentamos a este detalhe pois o autor

em que baseamos nosso trabalho sempre nos alerta para este pequeno detalhe mas de

grande importância para o entendimento do algoritmo genético.

Um ponto crucial dentro dos algoritmos genéticos é a codificação da

informação em cromossomos, pois em conjunto com a função de avaliação torna-se o

fator predominante que liga o GA ao problema a ser resolvido. Sendo assim uma boa

codificação feita de forma inteligente já incluirá as idiossincrasias do problema, ou seja,

um bom levantamento a cerca do mesmo levando em conta todos os detalhes que

implicam a problemática (restrições sobre quando podemos ligar ou desligar um carro

etc.) sendo assim evitaremos testes de viabilidade de cada uma das soluções geradas.

A solução deve ser decodificada ao termino da execução do nosso algoritmo para

assim podermos utilizá-la na prática.

Nos GAs não diferente de como ocorre na natureza a informação deve ser

codificada dentro dos cromossomos ou genomas e a reprodução será a encarregada de

fazer com que a população evolua, lembrando que esta reprodução é baseada na

sexuada pois é a utilizada por todos os animais superiores garantindo assim uma

diversidade biológica, lembremos que a reprodução assexuada não cria diversidade,

visto que cada filho é idêntico ao pai sendo assim não nos interessará.

Iremos aplicar a reprodução e a mutação em indivíduos selecionados dentro

da nossa população. Devemos fazer a seleção de uma forma em que os indivíduos

mais aptos sejam selecionados frequentemente do que aqueles menos aptos, sendo

assim teremos um melhor aproveitamento, pois iremos colher as melhores

características levando a uma população de soluções bem mais selecionada e

28

Page 30: Monografia - Algoritmos Geneticos - Matheus - Final

preparada. Não é necessário os indivíduos menos aptos serem descartados da

população reprodutora, pois caso isso ocorresse causaria uma rápida convergência

genética de todas as soluções para um mesmo conjunto de características e com isso

nosso espaço de soluções iria ser reduzido consideravelmente. Em uma convergência

genética podemos dizer que temos uma baixa diversidade genética por possuir genes

similares, que não conseguem evoluir, a não ser pela ocorrência de mutações

aleatórias que sejam positivas. Isso nós leva a outro conceito interessante que é a

perda de diversidade onde o número de indivíduos que nunca são escolhidos pelo

método de seleção de pais “Quanto maior for a perda de diversidade, mais rápida será

a convergência genética de nosso GA.” (BLICKLE apud LINDEN, 1997, p. 43).

3.3 Entendendo as terminologias para GÁS

Para um melhor entendimento do assunto que o nosso trabalho aborda

decidimos escrever este capitulo com a finalidade de nos familiarizarmos com as

terminologias utilizadas na área dos algoritmos genéticos. Pela grande familiaridade

que os GAs tem com a genética e a teoria da evolução das espécies, pois foi de onde

surgiu a inspiração para sua criação, há uma grande analogia entre os termos da

biologia e os termos usados no campo dos Algoritmos Genéticos Simples.

Tomamos por base os sistemas naturais onde um ou mais cromossomos se

combinam formando assim as características genéticas básicas de um individuo. Ao

estudarmos GAs termos como cromossomos e individuo serão constantemente vistos

sendo os mesmos intercambiáveis. Em nossos estudos observamos que a

representação binária é muito utilizada em vários textos básicos da área, muitas vezes

pode-se escrever string (de bits) tendo o mesmo significado que cromossomo.

Os genes são formados por vários cromossomos, podendo ter um

determinado valor entre vários possíveis, estes chamados de alelos. Onde o locus

(plural: loci) é a posição do gene. Pela grande familiaridade os termos biológicos

também podem ser aplicados na área de GAs, mas podemos utilizar o termo

características para significar gene, valores para alelos e posição locus.

29

Page 31: Monografia - Algoritmos Geneticos - Matheus - Final

Termos como genoma, genótipo e fenótipo também são de grande

importância para nosso estudo. Onde genótipo é a estrutura do cromossomo, podemos

trocar o termo pela palavra estrutura dentro da área de GA. Podemos entender por

conjunto de parâmetros do algoritmo a palavra fenótipo onde na biologia corresponde à

interação do conteúdo genético com o ambiente. Já o genoma não possui um termo

análogo na área de GA, mas para a biologia seu significado corresponde ao pacote

genético.

Durante o estudo foram observadas duas tabelas e, a partir delas foi criada

uma tabela própria (Tabela 1) com os termos que seriam mais concernentes de serem

citados, entende-se que assim alguém ao se deparar com estes termos terá um melhor

aproveitamento deste trabalho, ao fazer esta recompilação de dados decidiu-se

compartilhar este conhecimento adquirido e assim resumir tudo o que já foi citado.

Linguagem natural GA

cromossomo individuo, string, cromossomo, árvore

gen características

alelo valor

locus posição

genótipo estrutura

fenótipo conjunto de parâmetros

população conjunto de pontos (indivíduos) no Espaço de Busca

geração iteração completa do GA que gera uma nova população

aptidão brutasaída gerada pela função objetivo para um individuo da

população

aptidão normalizada Aptidão bruta normalizada, entrada para o algoritmo de

30

Page 32: Monografia - Algoritmos Geneticos - Matheus - Final

seleção

aptidão máxima melhor individuo da população corrente

aptidão media aptidão media da população corrente

Tabela 1 - Faz uma comparação entre os termos utilizados em linguagem natura (na biologia) com a utilizada no GA.

Utilizaremos mais os termos que corresponde aos GAs, pois os mesmos

correspondem mais a nossa área podendo os termos da área biológica serem utilizados

de vez em quando pois em nossas pesquisas em varias fontes estes termos também

são utilizados então entendemos que serão de grande importância para um melhor

aproveitamento do nosso trabalho.

4 ENTENDENDO UM GA SIMPLES

Começaremos este capitulo fazendo uma breve apresentação entre os

leitores deste singelo trabalho e os algoritmos genéticos, todos os passos até aqui

apresentados são de grande importância para o entendimento do assunto abordado.

Devemos ficar atentos quando se diz respeito a escolha dos parâmetros nos

algoritmos genéticos pois os mesmos estão diretamente ligados a quão bom será os

resultados que iremos obter. Mais adiante será explicado melhor como ocorrerá esta

escolha bem como a sua importância.

Logo abaixo apresentaremos um esboço do algoritmo genético (Tabela 2)

onde o mesmo é composto por varias etapas que iremos explicar adiante. Atentamos a

questões importantes que talvez nos indaguem ao inicializarmos a construção do nosso

algoritmo, questões estas como:

Como criaremos cromossomos e qual tipo de codificação utilizaremos?

Como escolheremos os pais para a realização do crossover?

31

Page 33: Monografia - Algoritmos Geneticos - Matheus - Final

Com a criação de uma nova população a partir de duas outras pode

causar a perda da melhor solução?

[Início] Gera-se aleatoriamente uma população de n cromossomos

[Adaptação] Verifica-se a função objetiva f(x) de cada cromossomo x

[População] Uma nova população será gerada através da repetição a seguir:

[Seleção] Selecionamos um par de cromossomos da população conforme a adaptação de cada um (os mais aptos tem maior chance de serem escolhidos)

[Crossover] Através dos cromossomos dos pais geram-se dois descendentes (filhos) por crossover. Lembremos que o ponto para se realizar o crossover deve ser aleatório.

[Mutação] Com certa probabilidade, o descendente sofre mutação em cada locus (posição no cromossomo).

[Aceitação] Colocamos os descendentes gerados em uma nova população, juntamente com a melhor solução da antiga geração]

[Troca] Substituímos a antiga população pela nova geração.

[Teste] Se a condição de finalização é satisfatória, então pare, e assim retornaremos a melhor solução da população atual, caso contrário entraremos no laço

[Adaptação]

[Laço] Voltaremos a uma nova seleção.Tabela 2 - Esboço do algoritmo genético em forma de etapas.

Atente que está é apenas uma forma simplificada que serve apenas para o

entendimento da criação do GA, pois ainda fica implícito para nós ao visualizarmos ela

toda a complexidade do processo de obtenção dos de alguns elementos. De acordo

Ricardo Linden os processos acima citados são os seguintes:

[...] uma representação cromossomial que seja adequada ao problema; uma função de avaliação que penalize soluções implausíveis para nosso problema e que avalie satisfatoriamente o grau de adequação de cada individuo como solução do problema em questão (LINDEN, 2006, p. 52)

Sendo o GA altamente genérico, vários de seus componentes não mudam de

um problema para outro. Isso irá facilitar a sua implementação em uma linguagem

orientada a objetos, pois assim permitirá o reaproveitamento do código podendo ser

utilizado na resolução de muitos outros problemas.

4.1 Como escolher parâmetros do GA

32

Page 34: Monografia - Algoritmos Geneticos - Matheus - Final

Achamos interessante incluir este capitulo por a escolha dos parâmetros de

um GA ser crucial, pois a mesma poderá implicar no resultado final do resultado do

algoritmo genético.

Existem vários parâmetros que podemos escolher para melhorar o

desempenho do algoritmo genético, um deles é a forma como o cromossomo é

codificado e com isso adaptamos o GA as características particulares que cada classe

de problema traz. Dentre vários podemos citar os mais importantes como: tamanho da

população, número de gerações, probabilidade de crossover e probabilidade de

mutação. Estes parâmetros podem influenciar muito o resultado que será obtido pelo

algoritmo genético e sua influência depende da classe de problemas que se está

tratando.

Portanto, ao determinar um conjunto de valores otimizados para os

parâmetros dependerá da realização de um grande numero de experimentos e testes.

Em nossas pesquisas constatamos que vários dos valores encontrados na maioria das

literaturas estão na faixa de 60 a 65% quando se diz respeito a probabilidade de

crossover e entre 0,1 e 5% quando nos referenciamos a probabilidade de mutação.

Como acima citamos, algum dos fatores decisivos que afetam as respostas

encontradas para os problemas de GA é o tamanho da população e o número de

gerações, pois os mesmos definem diretamente o tamanho do espaço da busca a ser

descoberto, ou seja, a quantidade de soluções que podemos encontrar. Existe técnicas

que utilizam um GA como método de otimização para escolher os parâmetros, pois

devido a grande importância da escolha correta dos mesmos implicar na resposta que

os algoritmos genéticos irão encontrar.

4.2 Representação de um cromossomo

A representação cromossomial é vital para um algoritmo genético, pois é uma

maneira básica de traduzir a informação de um problema em uma maneira que possa

ser tratada pelo computador. Por ela ser completamente arbitraria, ou seja, varia de

acordo com a vontade de cada programador não havendo qualquer tipo de obrigação

33

Page 35: Monografia - Algoritmos Geneticos - Matheus - Final

para se adotar qualquer tipo de representação, portanto este é um outro ponto

importante a ressaltar. A grande maioria de pesquisadores frequentemente utiliza a

representação binária por a mesma ser a mais simples, na verdade, muitas pessoas

quando imaginam um GA, rapidamente fazem uma associação em cromossomos

binários. Entretanto, esta associação não é obrigatória e sim deve se adotar a que for

mais adequada a nossos propósitos.

De acordo com o pesquisador Ricardo Linden uma pergunta pode nos ocorrer

quando se diz respeito à representação cromossomial, sendo esta uma indagação de

quando a representação binária não será a mais adequada.

A representação binária tem dificuldades ao lidar com múltiplas dimensões de variáveis continuas, especialmente quando uma grande precisão é requerida. Isto decorre do fato de que um grande número de bits será necessário para atingir tal precisão e os cromossomos se tornarão extremamente grandes, dificultando a operação do GA. Além disto, há uma discretização inerente nos valores reais quando cromossomos binários são usados. É claro que podemos ignorar o efeito desta discretização quando usamos bits suficientes, mas esta quantidade pode fazer com que nossos cromossomos se tornem grandes demais (HERRERA apud LINDEN, 1998, p. 165)

Existem outros tipos de representações além do binário onde as mesmas são

pouco utilizadas, mas igualmente interessantes e eventualmente mais poderosas e

adequadas para problemas específicos. Dentre elas podemos citar como as mais

comuns:

Binário (EX: 010111);

Numérico (Ex: 5,8; 9,3);

Seqüencial (Ex: 3, 5, 4, 1, 2);

Lembremos que uma representação é de grande importância, pois ela poderá

ser a mais adequada a algum problema que viermos a resolver: Qualquer estrutura de

dados que pudermos imaginar!

Devemos entender que os operadores genéticos devem ser modificados para

serem adequados à representação apropriada.

4.3 Inicialização Cromossomial

34

Page 36: Monografia - Algoritmos Geneticos - Matheus - Final

Uma boa inicialização ou podemos também falar representação, é

fundamental para um algoritmo genético. Ela basicamente consiste em pegarmos a

informação do problema e traduzirmos o mesmo em uma maneira viável de ser tratada

pelo computador. Se conseguirmos adequá-la ao nosso problema, sendo esta

adequação feita da melhor forma possível, maior será a qualidade dos resultados que

obteremos. De acordo com Ricardo Linden temos que tomar cuidado quanto a esta

problemática, pois muitos programadores ficam tentados a adequar o problema a sua

representação sendo assim poderá levar a não obtenção do resultado ideal.

Chamamos de gene cada pedaço indivisível da representação, pois como já

foi dito anteriormente existe uma analogia com a biologia, mais precisamente as partes

que compõe um cromossomo biológico.

Lembremos que ao fazermos uma representação cromossomial não

precisamos seguir nenhuma regra pré-definida, pois a mesma irá variar de acordo com

o gosto do programador e da sua adequação ao problema. Porém, de acordo com

Ricardo Linden existe algumas regras gerais que é interessante segui-las:

a) A representação deve ser a mais simples possível; b) Se houver soluções proibidas ao problema, então elas não devem ter uma representação; c) Se o problema impuser condições de algum tipo, estas devem estar implícitas dentro da nossa representação. (LINDEN, 2006, p. 54)

Assim, percebemos que uma representação mais praticada entre os

programadores da área dos algoritmos genéticos sendo a mesma também a mais

simples, é a representação binária, pois um cromossomo é uma seqüência em forma de

bits tendo cada gene como um bit. Este bit ou conjunto de bits onde sua representação

é de grande importância e esta diretamente ligada ao problema.

Existem também outras formas de representar um cromossomo e podem até

obter resultados melhores.

4.4 Função Para Cálculo da Aptidão

Esta função é a maneira de os GAs calcularem a aptidão do indivíduo, ou

seja, determinar a qualidade de um individuo como solução para o problema. Se

35

Page 37: Monografia - Algoritmos Geneticos - Matheus - Final

pensarmos que esta função irá representar a nota dada ao individuo como resolução

para o problema teremos assim um melhor entendimento sobre o papel desta função

dentro dos GAs. Sendo que esta nota irá servir para a escolha de seleção de pais que

veremos a seguir, onde através dela iremos diferenciar as boas e as más soluções para

um problema.

Dentro dos GAs a função que calcula a aptidão de um individuo, em muitos

casos, é a única ligação verdadeira do programa com o problema, pois a mesma só

julga a qualidade da solução que esta sendo apresentada por aquele individuo e não

armazena informação sobre as técnicas de resolução do problema.

Em nossas pesquisas encontramos duas formas que podemos chamar esta

função: função de avaliação ou função de custo, onde sua finalidade é calcular um valor

numérico que reproduzirá quão bons os parâmetros representados no cromossomo

resolverão o problema. Através dos parâmetros, ou seja, os valores armazenados no

cromossomo que ela utiliza para produzir um valor numérico, onde seu significado

representa uma maneira de compararmos os resultados e assim obtermos uma

qualidade da solução obtida. Sendo os GAs técnicas de maximização, a função de

avaliação ou função de custo tem o objetivo de obter o resultado maximo, sendo assim

ao compararmos dois cromossomos onde o primeiro representa uma solução melhor

que o segundo a função de avaliação do primeiro deve ser maior do que a do segundo

cromossomo.

Portanto devemos atentar para a importância que esta função deve refletir os

objetivos a serem alcançados em uma resolução, pois ela é gerada diretamente pelas

condições impostas apresentadas no problema.

4.5 Seleção

Como um mecanismo de seleção natural o método de seleção de pais deve

simulá-lo, pois o mesmo segue a idéia que acontece na lei da evolução das espécies

onde há a seleção natural das espécies biológicas. Consiste em que os pais capazes

geram filhos, igualmente os pais menos aptos também podem gerar descendentes.

Logo devemos dar maior importância para os indivíduos com maior função de

36

Page 38: Monografia - Algoritmos Geneticos - Matheus - Final

avaliação, mas não menos importante vêm os indivíduos com função de avaliação

extremamente baixa onde devem também ser mantidos mesmo em menor quantidade.

Isto se deve ao fato desta decisão ser razoável, pois os indivíduos com péssima

avaliação podem ter características genéticas que sejam de grande valor a criação de

um novo individuo onde no mesmo pode conter uma melhor solução para o problema

que será resolvido, se por acaso deixarmos de lado estes indivíduos podemos correr o

risco de perder uma solução ideal, pois neles pode haver características não

encontradas em nenhum outro cromossomo da nossa população e com isso essas

características podem ser perdidas.

Portanto devemos ficar atentos sobre a questão de deixarmos apenas os

melhores indivíduos se reproduzirem, pois a população ficará composta de indivíduos

cada vez mais semelhantes e com isso acaba diminuindo a diversidade da população

prejudicando a evolução, pois a mesma não irá seguir de forma satisfatória. Devido a

este fato acaba resultando em um efeito denominado convergência genética, mas se

selecionarmos os indivíduos menos aptos conseguiremos evitar este efeito, ou no

mínimo minimiza-lo. Na natureza ocorre que os indivíduos mais fracos também geram

filhos, mesmo que isto seja com uma ocorrência menor comparando com os indivíduos

mais aptos, ou podemos chamá-los também de mais fortes. Sendo assim como os GAs

são desenvolvidos a partir de como se ocorre na natureza é interessante também

reproduzir esta possibilidade. Podemos implementar este efeito ou características

através do método da roleta viciada em nossos GAs. Mostrando de uma forma mais

visual podemos criar uma tabela onde mostrará uma população e sua respectiva

avaliação da aptidão (Tabela 3).

Indivíduo Avaliação da Aptidão

1000 1

0111 9

1010 16

1010 36

Total 62

Tabela 3 - Exemplo de como ocorre o processo de seleção atentando para não cair no efeito de convergência genética (tabela meramente ilustrativa).

37

Page 39: Monografia - Algoritmos Geneticos - Matheus - Final

Onde de um lado colocamos os indivíduos e do outro a sua avaliação. Cada

individuo possui suas características em seus respectivos cromossomos.

O cromossomo é representado pelo número binário ‘0001’ e o número ‘1’ uma

característica desse cromossomo, então o cromossomo ‘0001’ tem a pior avaliação mas

atentemos ao detalhe que ele possui uma boa característica que é representada pelo

numero ‘1’ na ultima posição do cromossomo pois nos dois melhores indivíduos ou seja

os indivíduos de melhor avaliação, não possuem esta característica. Sendo assim se

utilizássemos apenas os dois melhores indivíduos para reprodução, nossa resolução

não poderá ser a ideal.

4.6 Cruzamento ("Crossover")

Existem vários operadores de cruzamento ou crossover, alguns simples

outros mais complexos. Damos inicio falando sobre um dos operadores mais simples,

denominado de crossover de um ponto. Por ser um operador extremamente simples é

bem conveniente começarmos por ele para um melhor entendimento. Ao termino do

processo de seleção os pais já foram escolhidos. É chamado de ponto de corte a

interseção entre dois genes em um cromossomo, cada individuo de n genes contem n-1

pontos de corte, onde este ponto de corte separa os genes uns dos outros onde

compõe o material genético de cada pai. Em nossos estudos nos deparamos com a

Figura 6 onde representa um exemplo de pontos de corte onde o cromossomo é

formado de 5 genes e consequentemente por 4 pontos de corte possíveis.

38

Page 40: Monografia - Algoritmos Geneticos - Matheus - Final

Figura 6 - Exemplo de pontos de corte (LINDEN, 2006, p. 67)

É feito da seguinte forma, o ponto de corte é sorteado aleatoriamente logo em

seguida separam-se os pais em duas partes, a direita ficando de um lado e a esquerda

do outro. È importante fresarmos que essas partes necessariamente não precisam ser

do mesmo tamanho.

[...] vamos perceber que se o numero de genes for impar, é impossível que as duas partes de cada pai tenha exatamente o mesmo tamanho [...] (LINDEN, 2006, p. 67)

Um filho é composto pela junção da parte esquerda de um pai com a parte

direita do outro e o outro filho é composto pelas as partes restantes. O exemplo deste

processo pode ser visto através da Figura 7, sendo o mesmo parecido com o que

acontece na natureza, onde dois cromossomos dão origem a outros dois novos

cromossomos conhecido por formação cromossomial de um individuo pertencente a

uma mesma espécie que utiliza a reprodução sexuada. Uma diferença é que na

natureza não existe restrição a apenas um ponto de corte.

Existem crossover de um ponto, de dois pontos, consequentemente existe de

três, o de quatro e assim por diante, em nossas pesquisas também constatamos a

existência de um operador complexo chamado de crossover uniforme. Por enquanto

ficaremos apenas no de um ponto.

39

Page 41: Monografia - Algoritmos Geneticos - Matheus - Final

Figura 7 - Representação do processo de cruzamento de um ponto.

Como já aviamos falado o cruzamento de vários pontos ou cruzamento

multiponto como também é conhecido, onde existem vários pontos de cruzamento que

podem ser utilizados. Entendemos melhor ao visualizarmos a Figura 8 onde

representaremos o cruzamento de dois pontos.

Figura 8 - Representação de cruzamento de dois pontos

No cruzamento uniforme não se utiliza pontos de cruzamento, mas se

determina por meio de uma mascara, onde os genes de cada cromossomo o filho irá

herdar. Um valor “1” que se encontra na mascara ira ser o gene correspondente no pai

40

Page 42: Monografia - Algoritmos Geneticos - Matheus - Final

que o filho ira herdar isso para os dois cromossomos pais e filhos, através da Figura 9

encontramos um exemplo onde podemos entender de forma melhor.

Figura 9 - Representação de cruzamento uniforme

4.7 Mutação

Ao termino da composição dos filhos executaremos o operador de mutação.

Onde o mesmo é operado da seguinte forma. Como este operador tem uma

probabilidade extremamente baixa da ordem de 0,5%, nós sorteamos um numero entre

0 e 1. Se por acaso este número for menor que a probabilidade predeterminada, então

o operador atuará sobre o gene em questão alterando-lhe o valor randomicamente.

Então repetiremos o processo para todos os genes que fazem parte dos dois filhos.

O que decide se o operador de mutação será ou não aplicado é um dos

parâmetros do GA sendo o mesmo um valor probabilístico onde simplesmente a

experiência pode determinar. Quanto ao valor probabilístico o seu conceito fundamental

é que ele deve ser baixo, pois caso ele seja muito alto, o algoritmo genético ficará

análogo com uma técnica chamada random walk, onde sua solução é determinada de

41

Page 43: Monografia - Algoritmos Geneticos - Matheus - Final

foram aleatória, ou seja, simplesmente sorteando-se elementos não utilizando

informações correntes ou passadas.

Se a taxa de mutação for colocada em 100%, ou seja, se todos os genes do

cromossomo forem alterados, os algoritmos genéticos se comportarão de forma

estranha. Sendo assim todos os bits do cromossomo serão invertidos, pois quando um

número for selecionado será sempre menor do que um, a probabilidade

predeterminada. Então a qualidade da população rapidamente será modificada para

pior e dificilmente o GA apresentará uma solução ideal para o problema.

Quando a taxa de mutação é baixa previne que a busca fique parada em sub-

regiões do espaço de busca. Então, possibilitará que qualquer ponto do espaço de

busca seja atingido. Sendo assim ao termos uma taxa muito alta a busca se tornará

essencialmente aleatória. Um exemplo de como ficará o cromossomo após a mutação

pode ser visto na Figura 10.

Figura 10 - Exemplo ilustrativo de mutação

O processo consiste em aplicarmos em dois pais escolhidos o operador de

crossover através do método da roleta viciada e logo após aplicarmos o operador de

mutação. Através da Figura 11 podemos olhar melhor como funciona.

42

Page 44: Monografia - Algoritmos Geneticos - Matheus - Final

Figura 11 - Descrição da operação do operador de crossover de um ponto e mutação (LINDEN, 2006, p. 69)

5 APLICABILIDADES

Podemos dizer que a aplicabilidade dos GAs é praticamente infinita, pois

sempre que houver a necessidade de buscar ou otimizar um problema para que sua

resposta seja a ideal os utilizaremos como ferramenta de solução, também podemos

incluir a solução de equações como uma utilizadora de GAs. Lembremos que ao

utilizarmos algoritmos genéticos simples devemos limitar sua aplicação principalmente

quando existir um algoritmo exato capaz de resolver o problema em um tempo

relativamente curto, dentro de uma memória finita. Pelo número de problemas com

estas características serem grandes o suficiente, podemos justificar a introdução de

uma nova resolução.

43

Page 45: Monografia - Algoritmos Geneticos - Matheus - Final

O maior problema que podemos encontrar ao utilizarmos um algoritmo

genético para resolver problemas está em torná-lo adequado aos requisitos de GAs, ou

seja, devemos encontrar uma representação cromossomial para cada aspecto do

problema considerado. Em nossas pesquisas encontramos algumas indagações que

através das mesmas podemos entender como um problema é resolvido, mas é

importante falarmos que nem todos os problemas recebem estas considerações. São

elas:

● Qual a representação adotada?● Para esta representação, qual é o mecanismo dos operadores genéticos?● Qual foi a função de avaliação utilizada?● Qual é o critério de termino utilizado?. (LINDEN, 2006, p. 285)

Os GAs possuem uma larga aplicação em muitas áreas cientificas, dentre

elas podemos citar: Síntese de Circuitos Analógicos, Programação Genética,

Gerenciamento de Redes, Problemas de otimização complexos, Bioinformática, Setor

Elétrico, Filogenética, etc. A tabela a baixo (Tabela 4) traz algumas áreas cientificas e a

utilização do GA para as mesmas.

ÁREA CIENTIFICA UTILIZAÇÃO DO GASíntese de Circuitos Analógicos É utilizado para produzir uma certa entrada e

uma saída desejada, como na tensão existente em circuitos analógicos, onde o GA gera a topologia, o tipo e o valor dos componentes do circuito.

Síntese de Protocolos È utilizado para determinar quais as funções do protocolo devem ser executadas em hardware e quais devem ser executadas em software para que seja alcançado um maior desempenho.

Alocação de Capacitores Como o próprio nome sugere, é utilizado para melhor alocar os capacitores melhorando assim a regulação e a voltagem fornecida como também aumenta a capacidade de liberação de energia do sistema, pois a extensão dos benefícios conseguidos depende fortemente de

44

Page 46: Monografia - Algoritmos Geneticos - Matheus - Final

como os capacitores são colocados e controlados.

Escalonamento de Horários É utilizado na definição de horários das matérias, de acordo com a preferência dos professores, a necessidade de que duas turmas com alunos em comum não tenham horários coincidentes, que alunos estudem sempre em um único bloco da faculdade e muitas outras restrições possíveis. Sendo assim seu espaço de busca é praticamente infinito, pois o numero de combinações também depende do numero de turmas e salas.

Escala de Tarefas É utilizado para o problema de escala de tarefas (job shop scheduling problem) onde cada tarefa consiste em uma seqüência de operadores, que tem que ser processadas e um conjunto fechado e limitado de maquinas (Computadores), de forma que o conjunto dessas tarefas seja realizado no menor tempo possível.

Filogenética Sua utilização consiste em avaliar os relacionamentos evolucionários entre uma serie de n organismos, ou seja, a relação de parentesco entre esses organismos.

Ciências biológicas - Bioinformática

É utilizado para transformar a imensa massa bruta de informação em processos biológicos de forma a permitir a compreensão destes processos e, eventualmente, o desenvolvimento de novos remédios que garantam o progresso e a melhoria das condições de vida da humanidade.

Tabela 4 – Contem a área cientifica assinalando com a utilização do GA.

A quantidade de aplicativos que atualmente utilizam GAs é tão grande que

seria inviável elaborar e apresentar aqui uma lista de produtos disponíveis no mercado.

Alguns softwares que citaremos estão disponíveis para compra e/ou licenciamento. São

eles:

Evolver, onde o mesmo é uma ferramenta para auxiliar o Microsoft

Excel na resolução rápida com problemas complexos de otimização

em finanças, distribuição, a programação, produção, orçamentos,

engenharia, e muito mais, para maiores detalhes o mesmo está

disponível em: http://www.palisade.com/evolver/.

45

Page 47: Monografia - Algoritmos Geneticos - Matheus - Final

OptiGA, é um controle de ActiveX (OCX) utilizado na implementação

de Algoritmos Genéticos para aplicações em Visual Basic. O mesmo

está disponível em: http://www.optiwater.com/optiga.html.

GeneticServer, é um componente ActiveX que pode ser facilmente

usado para construir aplicações genéticas personalizadas em Visual

Basic, para maiores informações visite: http://www.nd.com/genetic/.

Como já havíamos falado existem muitos outros produtos alem dos acima

citados, também encontraremos muitos deles não comercias onde os mesmos podem

ser encontrados na internet.

6 CONSIDERAÇÕES FINAIS

É sabido que a partir dos conhecimentos adquiridos no decorrer dos séculos

o homem obteve grandes avanços em diversas áreas do conhecimento, ressaltando a

área da inteligência artificial, mais precisamente os algoritmos genéticos, uma vez que

é o objeto de estudo do nosso trabalho. Atrelado ao desenvolvimento do intelecto do

ser humano, sugiram problemas próprios da complexidade trazidas pelos mesmos,

46

Page 48: Monografia - Algoritmos Geneticos - Matheus - Final

levando o homem a tentar soluciona-los, alguns de formas simples outros de forma

complexa, ou seja, de diferentes formas sendo característico de cada um.

Quando nos referimos aos algoritmos genéticos, os mesmo vieram com o

propósito de solucionar problemas onde os algoritmos normais não o conseguiam ou

eram demasiadamente lentos na obtenção da solução. Como foi mostrado no trabalho

os GA são uma importante e poderosa ferramenta para efetuar buscas em espaços

praticamente infinitos, porém, sua aplicabilidade é basicamente limitada a este tipo de

problema. Desta forma, afirmamos que não se trata de uma técnica que revolucionará

toda a ciência da computação, mas é importante entendermos que, como ferramenta de

busca, os mesmos se mostram muito eficientes, encontrando ótimas soluções para

problemas que talvez não pudessem ser solucionados de forma diversa.

Com base no exposto acima, podemos citar como principais vantagens na

utilização de GAs, como solução de problemas específicos: são extremamente simples

de implementar e modificar, uma vez que não é necessário conhecimento matemático

aprofundado do problema, apresenta um bom desempenho em problemas de

otimização de grande escala, na otimização multiobjetivo fornecem uma lista de

parâmetros ótimos e não uma só solução, ou seja, nem sempre o algoritmo genético

trará a mesma solução mas pode apresentar varias soluções ideais dependendo dos

parâmetros escolhidos, dentre outras.

É importante ressaltar ainda, que os GAs não oferecem nenhuma garantia de

desempenho, pois os mesmos são diretamente dependentes dos parâmetros

escolhidos pelo programador, podendo assim um mesmo problema ser resolvido de

varias formas, porem, quando estes parâmetros são ajustados da forma mais perfeita

possível, ai sim, poderemos encontrar a solução ideal. Apesar do GA não ser o método

mais preciso por ser um método heurístico, no momento é o mais eficiente.

Esperamos, pois, que o nosso trabalho monográfico venha contribuir para

melhorar o conhecimento acerca da aplicabilidade dos GAs em nossa área, pois é

interessante conhecer o processo para a obtenção do mesmo antes de pensarmos em

começar alguma implementação e com isso o algoritmo genético poderá chegar ao seu

total objetivo tendo um melhor desempenho.

47

Page 49: Monografia - Algoritmos Geneticos - Matheus - Final

Por fim, afirmamos que existem varias áreas em aberto dentro da pesquisa

teórica dos algoritmos genéticos, por tal motivo, tivemos como objetivo sinalizar

caminhos e não dar explicações de forma acabada com intuito de estimular outras

pesquisas. Ademias, devemos enfatizar que não há nenhum motivo plausível para

pararmos de aprender com a natureza, apesar de os GAs funcionarem muito bem na

atualidade, mas certamente a inclusão de técnicas utilizadas na natureza podem

melhorar demasiadamente o desempenho de tais algoritmos.

48

Page 50: Monografia - Algoritmos Geneticos - Matheus - Final

REFERÊNCIAS

ALVES, Ricardo Arantes. Algoritmos Genéticos. São Paulo: EDIÇÕES INTELIGENTES, 2005.

CARVALHO, André Ponce de Leon F. de. Algoritmos Genéticos. Disponível em: <http://www.icmc.usp.br/~andre/research/genetic/index.htm#intro>. Acessado em: 24 abril 2007.

CASTRO, Leandro de; ZUBEN, Fernando Von. Algoritmos Genéticos (AG’s). Disponível em: <ftp://ftp.dca.fee.unicamp.br/pub/docs/vonzuben/ia707_02/topico9_02.pdf>. Acessado em: 24 abril 2007.

CORTES, Maria Bernadete de Sousa. Algoritmos Genéticos Em Problemas de Programação Não Linear Contínua. Disponível em: < http://www.eps.ufsc.br/teses96/cortes/index/index.htm>. Acessado em: 24 abril 2007.

FURTADO, João Carlos; LORENA, Luiz Antonio Nogueira. Algoritmo Genético Construtivo na otimização de problemas combinatoriais de agrupamentos. Disponível em: < http://www.lac.inpe.br/~lorena/sbpo98/agc-clust.pdf>. Acessado em: 24 abril 2007.

LINDEN, Ricardo. Algoritmos Genéticos – Uma importante ferramenta da Inteligência Computacional. Rio de Janeiro: Brasport, 2006.

LOPES, Vanessa Meneses. Algoritmos Genéticos. Disponível em: < http://www.zemoleza.com.br/trabalho_ver.asp?codTrabalho=33541&carreira=11>. Acessado em: 24 abril 2007.

LUCAS, Diogo C.. Algoritmos Genéticos: uma Introdução. Disponível em: < http://www.inf.ufrgs.br/~alvares/INF01048IA/ApostilaAlgoritmosGeneticos.pdf>. Acessado em: 24 abril 2007.

MIRANDA, Marcio Nunes de. Algoritmos Genéticos – Fundamentos e Aplicações. Disponível em: <http://www.gta.ufrj.br/~marcio/genetic.html#Introdução>. Acessado em: 24 abril 2007.

NARCISO, Marcelo Gonçalves. Uso de Algoritmos Genéticos em Sistema de Apoio a Decisão para Alocação de Recursos no Campo e na Cidade. Disponível em: < http://www.lac.inpe.br/~lorena/marcelo/PLC-CT.pdf>. Acessado em: 24 abril 2007.

NEITZEL, Luís Carlos. Aplicações práticas de Algoritmos Genéticos. Disponível em: < http://www.geocities.com/Athens/Sparta/1350/ia/IA3_aplica/index.htm>. Acessado em: 24 abril 2007.

48

Page 51: Monografia - Algoritmos Geneticos - Matheus - Final

PACHECO, Marco Aurélio Cvalcanti. ALGORITMOS GENÉTICOS: PRINCÍPIOS E APLICAÇÕES. Disponível em: <http://www.ica.ele.puc-rio.br/cursos/download/CE-Apostila-Comp-Evol.pdf>. Acessado em: 24 abril 2007.

REZENDE, Solange Oliveira (org). Sistemas Inteligentes Fundamentos e Aplicações. São Paulo: EDITORA MANOLE, 2005.

RIBEIRO, Elder. Algoritmos Genéticos – Fundamentos e Aplicações. Disponível em: <http://www.zemoleza.com.br/trabalho_ver.asp?codTrabalho=24575&carreira=11>. Acessado em: 24 abril 2007.

SILVA, Paulo Ricardo da; ZAMBONI, Rafael Régis; MARQUES, Ana Flavia. Teoria da Evolução. Disponível em: <http://www.brasilescola.com/biologia/teoria-da-evolucao.htm>. Acessado em: 25 julho 2007.

SOARES, Gustavo Luís. Algoritmos Genéticos: Estudo, Novas Técnicas e Aplicações. Disponível em: <http://www.cpdee.ufmg.br/~joao/TesesOrientadas/VAS1997_1.pdf>. Acessado em: 25 julho 2007.

TICONA, Waldo Gonzalo Cancino. Aplicação de Algoritmos Genéticos Multi-Objetivo para Alinhamento de Seqüências Biológicas. Disponível em: < http://www.jeo.org/emo/tesis_waldo_msc_final.pdf.gz>. Acessado em: 24 abril 2007.

WIKIPEDIA, The Free Encyclopedia. Algoritmo. Disponível em: < http://pt.wikipedia.org/wiki/Algoritmo>. Acessado em: 25 Agosto 2007.

WIKIPEDIA, The Free Encyclopedia. Algoritmo genético. Disponível em: < http://pt.wikipedia.org/wiki/Algoritmo_gen%C3%A9tico>. Acessado em: 25 Agosto 2007.

WIKIPEDIA, The Free Encyclopedia. Algoritmo evolutivo. Disponível em: < http://pt.wikipedia.org/wiki/Algoritmo_evolutivo>. Acessado em: 25 Agosto 2007.

WIKIPEDIA, The Free Encyclopedia. Ingo Rechenberg. Disponível em: < http://en.wikipedia.org/wiki/Ingo_Rechenberg>. Acessado em: 25 julho 2007.

WIKIPEDIA, The Free Encyclopedia. NP-completo. Disponível em: < http://pt.wikipedia.org/wiki/NP-completo>. Acessado em: 25 julho 2007.

WIKIPEDIA, The Free Encyclopedia. Charles Darwin. Disponível em: < http://pt.wikipedia.org/wiki/Charles_Darwin>. Acessado em: 25 Agosto 2007.

WIKIPEDIA, The Free Encyclopedia. Evolução. Disponível em: < http://pt.wikipedia.org/wiki/Evolu%C3%A7%C3%A3o>. Acessado em: 25 Agosto 2007.

WIKIPEDIA, The Free Encyclopedia. Genética. Disponível em: < http://pt.wikipedia.org/wiki/Gen%C3%A9tica>. Acessado em: 25 Agosot 2007.

49

Page 52: Monografia - Algoritmos Geneticos - Matheus - Final

WIKIPEDIA, The Free Encyclopedia. Gregor Mendel. Disponível em: < http://pt.wikipedia.org/wiki/Gregor_Mendel>. Acessado em: 25 Agosto 2007.

WIKIPEDIA, The Free Encyclopedia. John Henry Holland. Disponível em: < http://en.wikipedia.org/wiki/John_Henry_Holland>. Acessado em: 25 Agosto 2007.

WIKIPEDIA, The Free Encyclopedia. Programação genética. Disponível em: < http://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_gen%C3%A9tica>. Acessado em: 25 Agosto 2007.

50