Você está na página 1de 49

INSTITUTO DE ESTUDOS SUPERIORES DA AMAZÔNIA

CURSO: ENGENHARIA DA COMPUTAÇÃO

ÁUREA CELESTE DA COSTA RIBEIRO

MONICA CHIEKO HOSOGOSHI

ESTUDOS DOS ALGORITMOS GENÉTICOS

USANDO TÉCNICAS COMPUTACIONAIS

BELÉM

2005
INSTITUTO DE ESTUDOS SUPERIORES DA AMAZÔNIA

CURSO: ENGENHARIA DA COMPUTAÇÃO

ÁUREA CELESTE DA COSTA RIBEIRO

MONICA CHIEKO HOSOGOSHI

ESTUDOS DOS ALGORITMOS GENÉTICOS

USANDO TÉCNICAS COMPUTACIONAIS

Monografia de Conclusão de Curso,


apresentado como requisito parcial para
obtenção do grau de Bacharel em
Engenharia de Computação.

Orientador Prof. Dr. Felipe Almeida

BELÉM

2005
INSTITUTO DE ESTUDOS SUPERIORES DA AMAZÔNIA

CURSO: ENGENHARIA DA COMPUTAÇÃO

ÁUREA CELESTE DA COSTA RIBEIRO


MONICA CHIEKO HOSOGOSHI

ESTUDOS DOS ALGORITMOS GENÉTICOS


USANDO TÉCNICAS COMPUTACIONAIS

Esta monografia foi julgada adequada para a obtenção do título de Bacharel em Engenharia
da Computação e aprovada na sua forma pelo Instituto de Estudos Superiores da Amazônia.

Data:__/__/____

Conceito:________

____________________________________________

Prof. Dr. José Felipe Almeida


Orientador

____________________________________________
Prof. Dr. Dionne Cavalcante Monteiro
Coordenador de Engenharia da Computação

______________________________________________
Prof. Msc. Rodrigo Melo e Silva de Oliveira
UFPA

BELÉM

2005
Para nossa família, nossa eterna gratidão.
AGRADECIMENTOS

A Deus, que sempre iluminou a nossa caminhada.

Ao nosso Orientador Prof. Dr. Felipe Almeida pela paciência e dedicação.

Ao nosso Coordenador do Curso Prof. Dr. Dionne Monteiro pelo estímulo e atenção que nos
concedeu durante o curso.

Ao nosso amigo Rodrigo Oliveira pelo apoio e colaboração para a realização deste.

Aos nossos Colegas e amigos em especial a Cristina, Carlos Cristiano, Shirlen e Thais do
IESAM pela amizade, companheirismo e troca de experiências.

A todos nossos familiares e amigos pelo apoio e colaboração.


“Transportai um punhado de terra todos os dias e fareis uma montanha”.
Confúcio
LISTAS DE ILUSTRAÇÕES

P.
Figura 1 - Fluxograma de um algoritmo genético tradicional..................................................... 19
Quadro1 - Medida de aptidão de cada indivíduo na população corrente.................................. 21
Figura 2 - Amostragem estocástica universal............................................................................ 22
Quadro 2 - População de strings e seus valores de fitness....................................................... 23
Figura 3 - Esquema gráfico do processo de cruzamento.......................................................... 24
Figura 4 - Crossover de 1 ponto................................................................................................ 25
Figura 5 - Crossover de 2 pontos.............................................................................................. 25
Figura 6 - Crossover uniforme................................................................................................... 25
Figura 7 - Esquema do processo de mutação........................................................................... 26
Figura 8 - Gráfico da função de Schaffer .................................................................................. 28
Figura 9 – Codificação binária................................................................................................... 29
Figura 10 - Primeiro teste com o ga1.f....................................................................................... 30
Figura 11 - Segundo teste com o ga1........................................................................................ 31
Figura 12 - Terceiro teste com o ga1.f....................................................................................... 31
Figura 13 - Quarto teste com o ga1.f......................................................................................... 32
Figura 14 - Quinto teste com o ga1.f......................................................................................... 32
Figura 15 - Primeiro teste com o ga2.f....................................................................................... 33
Figura 16 - Segundo teste com o ga2.f...................................................................................... 33
Figura 17 - Terceiro teste com o ga2.f....................................................................................... 34
Figura 18 - Quarto teste com o ga2.f......................................................................................... 34
Figura 19 - Quinto teste com o ga2.f......................................................................................... 35
Figura 20 - Primeiro teste com o ga3.f....................................................................................... 35
Figura 21 - Segundo teste com o ga3.f...................................................................................... 36
Figura 22 - Terceiro teste com o ga3.f....................................................................................... 36
Figura 23 - Quarto teste com o ga3.f......................................................................................... 37
Figura 24 - Quinto teste com o ga3.f......................................................................................... 37
Figura 25 - Primeiro teste com o ga4.f....................................................................................... 38
Figura 26 - Segundo teste com o ga4.f...................................................................................... 38
Figura 27 - Terceiro teste com o ga4.f....................................................................................... 39
Figura 28 - Quarto teste com o ga4.f......................................................................................... 39
Figura 29 - Quinto teste com o ga4.f......................................................................................... 40
Quadro 3 – Erro médio do cruzamento...................................................................................... 45
SUMÁRIO .P
1 INTRODUÇÃO............................................................................................................... 10
CAPÍTULO 1 – HISTÓRICO............................................................................................. 12
1.1 ORIGEM DOS ALGORITMOS GENÉTICOS.............................................................. 13
1.2 TERMINOLOGIA DOS ALGORITMOS GENÉTICOS ................................................ 15
1.3 ALGORITMOS GENÉTICOS ..................................................................................... 16
CAPÍTULO 2 - DESCRIÇÃO DA TÉCNICA DE ALGORITMO GENÉTICO......... 19
2.1.ALGORITMO GENÉTICO TRADICIONAL....................................................... 19
2.2 COMPONENTES DE UM ALGORITMO GENÉTICO.................................................. 20
2.2.1 Problema.................................................................................................................. 20
2.2.2 Indivíduo.................................................................................................................. 20
2.2.2.1 Representação..................................................................................................... 20
2.3 OPERAÇÕES BÁSICAS.............................................................................................. 20
2.3.1 Inicialização............................................................................................................. 21
2.3.2 Avaliação................................................................................................................. 21
2.3.3 Seleção.................................................................................................................... 21
2.3.4 Reprodução............................................................................................................. 22
2.3.5.Cruzamento.............................................................................................................. 23
2.3.6 Mutação.................................................................................................................... 26
2.3.7 Atualização.............................................................................................................. 27
2.3.8 Finalização............................................................................................................... 27
2.3.9 Elitismo.................................................................................................................... 27
CAPÍTULO 3 – RESULTADOS......................................................................................... 28
3.1 TESTES....................................................................................................................... 30
3.1.1 Gráficos do ga1 f em cinco testes, cruzamento de um ponto sem elitismo..... 30
3.1.2 Gráficos do ga2.f em cinco testes, cruzamento de um ponto com elitismo..... 33
3.1.3 Gráficos do ga3.f em cinco testes, cruzamento de dois pontos sem elitismo. 35
3.1.4 Gráficos do ga4.f em cinco testes, cruzamento de dois pontos com elitismo
........................................................................................................................................... 38
3.2 RESULTADOS QUANTO A PRECISÃO E MELHOR GERAÇÃO............................... 40
3.2.1 Testes com o ga1.f ................................................................................................. 40
3.2.2 Testes com o ga2.f.................................................................................................. 41
3.2.3 Testes com o ga3.f.................................................................................................. 42
3.2.4 Testes com o ga4.f.................................................................................................. 43
3.3 CONSIDERAÇÕES SOBRE OS RESULTADOS OBTIDOS....................................... 45
2 CONSIDERAÇÕES FINAIS............................................................................................ 46
3 REFERÊNCIAS............................................................................................................... 47
RESUMO

Este trabalho trata da implementação da Técnica de Computação Evolucionária


chamada Algoritmos Genéticos. Dessa forma, é feita uma descrição sobre a parte conceitual
do método e os passos usados em seu desenvolvimento. Para a validação do código
implementado, usou-se uma função matemática como função - objetivo. O desempenho da
técnica é observado em vários testes com a variação dos operadores genéticos em quatro
códigos, que simulam dois tipos de cruzamento com e sem elitismo. Após os testes obteve-
se a afinação da técnica para chegar ao valor máximo da função.

Palavras Chave: Algoritmos genéticos; Função - objetivo; Valor máximo; Computação

evolucionária.
ABSTRACT

This work describes the implementation of the Evolutionary Computation al


Technique called Genetic Algorithms. In that way, it is made a description on the conceptual
part of the method and the steps used in its development. For the validation of the
implemented code, a mathematical function was used as fitness function. The technique is
evaluated in several tests with the variation of the genetic operators in four codes that
simulate two crossing types with and without elitism. After the tests it was obtained the tuning
of the technique to arrive to the maximum value of the function.

Key-words: Genetic algorithms; Function objective; Maximum value; Evolutionary


computation.
1 INTRODUÇÃO

A atual tendência é modelar características humanas e naturais de forma

computacional. O homem vem fazendo com que algoritmos computacionais aproximem-se

cada vez mais da natureza e do ser humano seja em forma de aprender ou de pensar. Um

desses ramos da ciência de aproximação natural nos computadores é a computação

evolutiva que nos leva a modelar a teoria da evolução das espécies de Darwin ao longo das

gerações, abstraindo de uma determinada população as melhores informações genéticas

para a perpetuação de classes de indivíduos, fazendo com que para determinados

problemas, chegue-se à solução através desta técnica computacional. Assim, o principal

objetivo deste trabalho é desenvolver um estudo relacionado com a Técnica Computacional

de algoritmos genéticos, fazendo-se um levantamento bibliográfico e revisão da literatura. A

aprendizagem dessa técnica computacional permite obter conhecimento em uma área da

computação evolutiva.

Os Algoritmos Genéticos são métodos de busca e otimização, inspirados no modelo

de evolução de Darwin. Nesta técnica, o problema pode ser codificado em cromossomos, os

operadores genéticos se aplicam sobre esses cromossomos ou sobre a população desses

e, ao final, é apresentada a solução ótima para o problema. Esta técnica de otimização tem

uma vantagem sobre técnicas anteriores, pois trabalha com um conjunto das possíveis

soluções ao invés de uma a uma em seqüência, reduzindo o fator tempo de busca

(GUERVÓS, 2005).

Os Algoritmos Genéticos são aplicados em problemas complexos, com espaço de

busca muito grande ou de difícil formulação matemática. Por isso, são utilizados em

diversas aplicações, por exemplo: na Indústria, na Economia, na Engenharia e em estudos

sobre questões de Meio ambiente, entre outros (PACHECO, 2005).

Na classificação de imagens de sensoriamento remoto, a técnica computacional dos

Algoritmos Genéticos é usada para classificar imagens de satélites. Nesse tipo de problema,

o objetivo é mapear e atualizar os levantamentos da cobertura do solo. Logo, amostras


11

representativas das classes são selecionadas nas imagens multiespectrais e um processo

seletivo, semelhante a evolução das espécies de Darwin, são empregados para se chegar à

solução que fornece conjunto de parâmetros que satisfaz os critérios de busca. Então, com

este resultado, a imagem toda pode ser classificada (CENTENO, 2005). Exemplo em

engenharia da computação: busca e classificação em bancos de dados.

O algoritmo genético é também utilizado para determinar o melhor regime

operacional de uma central hidrelétrica com diversos grupos geradores diferentes entre si.

Este método considera a vazão como parâmetro hidráulico, os custos de investimento e de

operação e manutenção e a receita decorrente da venda da energia elétrica gerada. Como

resultado obtém-se um conjunto de melhores soluções possíveis para a implementação

(ALMEIDA, 2005).

Este trabalho trata da implementação computacional da Técnica dos Algoritmos

Genéticos. Para isto foi feito um código usando-se a linguagem de programação em

FORTRAN. O desempenho dessa técnica foi validado com modificações nos parâmetros da

formulação do método conhecido como Cruzamento. Assim, este trabalho foi dividido nos

seguintes Capítulos: no Capítulo 1, é apresentado um histórico sobre os Algoritmos

Genéticos e suas terminologias; no Capítulo 2, é feita uma descrição dessa técnica

computacional, e por fim, são apresentados, no Capítulo 3, os resultados do Código

desenvolvido.
12

CAPÍTULO 1 - HISTÓRICO

A teoria da evolução foi descrita por Charles Darwin, 20 anos depois de sua viagem

pela ilha de Galápos. Estas idéias são apresentadas no livro “A origem das espécies por

meio da seleção natural”. Este livro foi bastante polêmico na época e em qualquer caso é

uma descrição incompleta da evolução (SOARES, 1997).

As hipóteses de Darwin foram apresentadas junto com Walace e chegaram às

mesmas conclusões, independentemente. Observaram, portanto, que pequenas mudanças

hereditárias nos seres vivos e a seleção natural são os dois fatores que provocam a

mudança nas gerações de espécies. Mas, Darwin não sabia qual era a base da herança,

pensava que os traços de um ser vivo eram como um fluido, e que os “fluidos” dos pais se

inseriam na descendência. Essa hipótese tinha o problema que ao final de certo tempo, uma

população tinha os mesmos traços em intervalos. Amabis; Martho (1997).

Foi Mendel que descobriu que as características são herdadas de forma discreta, e

que partiam do pai ou da mãe, dependendo da característica dominante ou recessiva. A

essas características que podiam tomar diferentes valores, Mendel chamou de genes, e aos

valores que podiam tomar alelos. Na realidade as teorias de Mendel foram esquecidas e não

voltaram à tona até o princípio do século XX. Soares (op. cit.).

Em 1930 o geneticista inglês Robert Aylmer não relacionou ambas as teorias,

demonstrando que os genes mendelianos eram os que proporcionavam o mecanismo

necessário para a evolução. Mais ou menos pela mesma época, o biólogo alemão Walther

Flemming descobriu os cromossomos, como certos filamentos nos quais se agregava a

cromatina do núcleo celular durante a divisão, mais adiante descobriram que as células de

cada espécie vivente tinham um número fixo e característico de cromossomos, até nos anos

50, quando Watson e Crick descobriram que a base molecular dos genes está no DNA. Os

cromossomos são compostos de DNA, e, portanto, os genes estão nos cromossomos

Soares (op.cit.).
13

Todas essas descobertas, nos dias atuais, formam a teoria do neodarwinismo, que

afirma que a história da maioria das espécies está relacionada por uma série de processos

que atuam dentro das populações: reprodução, mutação, competição e seleção. Amabis;

Martho (op. cit.). É necessário compreender os mecanismos de mudança para entender os

algoritmos evolutivos, esse trata de imitar estes mecanismos para resolver os problemas

complexos. Os mecanismos de mudança alteram a proporção de alelos de um tipo

determinado em uma população e dividem-se em dois tipos, os que diminuem a

variabilidade genética e os que a aumentam sua freqüência. Amabis; Martho (op. cit.).

Dentre os que diminuem a variabilidade genética, encontra-se principalmente a

Seleção natural, onde os indivíduos que tenham alguma característica que os façam menos

adaptados para realizar tarefas necessárias a sua sobrevivência, terão menos probabilidade

de reproduzir-se, logo seu schemas patrimônio genético terá menos probabilidade de ser

repassado a outras gerações. Essa seleção sucede-se a muitos níveis: competição entre

indivíduos da mesma espécie, competição entre diferentes espécies e competição entre

presa e predador. Amabis; Martho (op. cit.).

O principal mecanismo que aumenta a variabilidade genética é a mutação, essa

representa uma alteração do código genético, que pode acontecer por múltiplas razões, são

totalmente aleatórias e é o mecanismo básico de geração de variabilidade genética, apesar

de que se pensa habitualmente, as maiorias das mutações ocorrem de forma natural,

existem substâncias mutagênicas que aumentam sua freqüência. Amabis; Martho (op. cit.).

1.1 ORIGEM DOS ALGORITMOS GENÉTICOS

John Holland desde pequeno, perguntava-se como a natureza conseguia criar seres

cada vez mais perfeitos, não sabia a resposta, mas tinha certa idéia de como achá-la, então

fez alguns pequenos modelos da natureza com características iguais as reais e observou

seu comportamento, para fazer suas conclusões deste feito, desde pequeno fazia

simulações de batalhas, copiava mapas e os cobria de pequenos exércitos que se

enfrentavam entre si. (GUERVÓS, 2005).


14

Nos anos 50, quando entrou em contato com os primeiros computadores, pode levar

a prática algumas de suas idéias, mas não encontrou um ambiente fértil para divulgá-las. Foi

no princípio dos anos 60, na universidade de Michigan, que dentro de um grupo de lógica

computacional (logic of computers), suas idéias começaram a ser testadas e a darem frutos.

Lendo livros sobre a teoria evolucionista, começou a descobrir meios de por em prática seus

propósitos de entender a natureza. Aprendeu que a evolução era uma forma de adaptação

mais poderosa que uma simples aprendizagem, e tomou a decisão de aplicar as idéias da

evolução em programas de computadores para determinados fins.

(GUERVÓS, 2005).

Nesta universidade, Holland ministrava aulas sobre sistemas adaptativos, e com a

participação ativa de seus alunos, criaram as idéias que mais tarde gerariam os algoritmos

genéticos. Os objetivos em sua pesquisa para a criação dos algoritmos genéticos, segundo

Guervós op. Cit. Foram:

- Imitar os processos de evolução dos sistemas da natureza;

- Construir sistemas artificiais que tivessem os mecanismos de evolução dos sistemas

naturais.

Depois de 15 anos, David Goldberg tornou-se aluno de Holland e como Engenheiro

industrial trabalhava com desenhos de pipelines, teve a idéia de aplicar os algoritmos

genéticos em seu trabalho. Holland não acreditava na possibilidade, pois pensava que o

problema era muito complexo para aplicar a técnica (Guervós op. cit.).

Goldberg teve sucesso em sua idéia, escreveu um algoritmo genético em um

computador pessoal, o Aple II. Todas estas e outras aplicações, criadas por estudantes de

Holland, tornaram os Algoritmos Genéticos um campo de estudo, discutido em conferencias

próprias, como a ICGA, a primeira celebrada em 1985 (Guervós op. cit.).


15

1.2 TERMINOLOGIA DOS ALGORITMOS GENÉTICOS

Para um melhor entendimento do funcionamento e os entes envolvidos em um

algoritmo genético, é necessário entender a terminologia envolvida, cita-se as principais:

GENÓTIPO: é a forma (arranjo) de como os genes e cromossomos estão distribuídos, que

correspondem a determinado fenótipo.

FENÓTIPO: é o conjunto das características de certo indivíduo observado ou descrito por

outros métodos, fornecidas pela manifestação do genótipo.

POPULAÇÃO: conjunto de indivíduos da mesma espécie; grupos inteiros de organismos de

um tipo; um grupo intercruzante de animais ou vegetais; grupo amplo do qual podemos

tomar uma amostra.

ESPÉCIE: grupo de indivíduos intercruzante que são isolados reprodutivamente de outros

grupos semelhantes, contendo fenótipos semelhantes.

INDIVÍDUO: é aquele exemplar de uma espécie que interage com o meio ambiente.

CROMOSSOMO: componente genético responsável pelo fenótipo do indivíduo, conjunto de

genes.

GENE: unidade básica do cromossomo que define, de acordo com seu valor e posição, uma

característica; um determinador hereditário que especifica uma função biológica; uma

unidade de herança (DNA) localizada em um lugar fixo no cromossomo.


16

SELEÇÃO NATURAL: mecanismo que garante aos indivíduos mais aptos melhores

chances de reprodução; fertilidade diferencial na natureza favorecendo os indivíduos que se

adaptam melhor e buscando eliminar aqueles indivíduos não adaptados ao meio.

REPRODUÇÃO: é a multiplicação de novos indivíduos a partir de outros que pertencem à

mesma espécie.

AJUSTE OU AVALIAÇÃO: medida que determina o grau de aptidão de um indivíduo ao seu

meio ambiente.

1.3 ALGORITMOS GENÉTICOS

Os Algoritmos Genéticos são técnicas de busca e otimização. Com isso, podem ser

vistos como um conjunto de procedimentos de buscas adaptativas. Um ponto chave deles é

que o processo de adaptação não se dá por incrementação de uma estrutura do algoritmo,

mas mantendo uma população de estruturas a partir das quais se geram novas populações.

Para isto são utilizados os operadores genéticos. Os operadores genéticos correspondem

as seguintes etapas segundo Lucas (2005):

Avaliação: onde a aptidão, o fitness, capacidade das


espécies adaptarem-se ao meio, é feita no problema, para
estabelecer quão bem as possíveis soluções respondem ao
problema; Seleção: Indivíduos selecionados para a
reprodução, a probabilidade de serem selecionados é
proporcional à sua aptidão; Cruzamento: Características das
soluções escolhidas são recombinadas, gerando novos
indivíduos; Mutação: características dos indivíduos
resultantes do processo de reprodução são alteradas,
acrescentando assim variedade a população; Atualização:
Os indivíduos criados nesta geração são inseridos na
população; Finalização: Verifica se as condições de
encerramento da evolução foram atingidas, retornando para
a etapa de avaliação em caso negativo e encerrando a
execução em caso positivo.
17

Atribuiu-se a forma particular de trabalhar dos Algoritmos Genéticos pelas seguintes

características:

A) Busca Codificada

Pére 2000 (citado por Lucas, 2002, p. 6):

Os Algoritmos Genéticos não trabalham sobre o domínio do


problema, mas sim sobre representações de seus elementos.
Tal fator impõe ao seu uso uma restrição: para resolver um
problema é necessário que o conjunto de soluções viáveis
para este possa ser de alguma forma codificada em uma
população de indivíduos.

B) Generalidade

Whi 2000 (citado por Lucas, 2002, p. 6):

Os algoritmos genéticos simulam a natureza em


um de seus mais fortes atributos: a adaptabilidade. Visto
que a representação e a avaliação das possíveis soluções
são as únicas partes (de um considerável conjunto de
operações utilizadas em seu funcionamento) que
obrigatoriamente requisitam conhecimento dependente do
domínio do problema abordado, basta à alteração destas
para portá-los para outros casos. A preocupação de um
programador de Algoritmos Genéticos não é então de que
forma chegar a uma solução, mas sim com o que ela
deveria se parecer.
C) Paralelismo explícito

Lucas (2002) diz:

O alto grau de paralelismo intrínseco aos


Algoritmos Genéticos pode ser facilmente verificado se
considerarmos o fato de que cada indivíduo da população
existe como um ente isolado e é avaliado de forma
independente. Se na natureza todo processo de seleção
ocorre de forma concorrente, nos Algoritmos Genéticos
essa característica se repete.

D) Busca estocástica

Gey 97, Mic 99 (citado por Lucas, 2002, p. 7):

Ao contrário de outros métodos de busca de


valores ótimos, os algoritmos genéticos não apresentam
um comportamento determinístico. Não seria correto, no
entanto, afirmar que tal busca se dá de forma
completamente aleatória — as probabilidades de aplicação
dos operadores genéticos fazem com que estes operem de
forma previsível estatisticamente, apesar de não
permitirem que se determine com exatidão o
comportamento do sistema.
18

E) Busca Cega

Gey 97, Pére 2000 (citado por Lucas, 2002, p. 7):

Um algoritmo genético tradicional opera ignorando


o significado das estruturas que manipula e qual a
melhor maneira de trabalhar sobre estas. Tal
característica lhe confere o atributo de não se valer de
conhecimento específico ao domínio do problema, o que
lhe traz generalidade por um lado, mas uma tendência a
uma menor eficiência por outro.

F) Eficiência mediana

Dav 91, Gey 97, Bur 95(citado por Lucas, 2002, p. 7):

Por constituir um método de busca cega, um


algoritmo genético tradicional tende a apresentar um
desempenho menos adequado que alguns tipos de
busca heurística orientada ao problema. Para resolver
tal desvantagem, a tática mais utilizada é a hibridização,
onde heurísticas provenientes de outras técnicas são
incorporadas.

G) Paralelismo Implícito

Gol 89 (citado por Lucas, 2002, p. 7):

Os Algoritmos Genéticos buscam uma solução


ótima, partindo de várias soluções, ao mesmo tempo,
enquanto que os métodos clássicos de otimização efetuam
a busca voltados a uma única solução a cada instante.
Assim, pode-se perceber que existe um paralelismo
implícito, que permite encontrar a melhor solução ótima
dentre todas as possíveis soluções (ótimo global).

H) Facilidade no uso de Restrições

Bar 96 (citado por Lucas, 2002, p. 7):

Ao contrário de muitos outros métodos de busca,


os Algoritmos genéticos facilitam a codificação de
problemas com diversos tipos de restrição, mesmo que
elas apresentem graus diferentes de importância. Neste
caso, se dois indivíduos violam restrições, é considerado
mais apto àquele que viola as mais flexíveis (soft
constraints) em detrimento do que viola as mais graves
(hard constraints).
19

CAPÍTULO 2 - DESCRIÇÃO DA TÉCNICA DE ALGORITMO GENÉTICO

2.1.ALGORITMO GENÉTICO TRADICIONAL

O Algoritmo Genético tradicional realiza, segundo Fialho 2005 (citado por Bittencourt,

1998), as seguintes funções:

1.Gera a população inicial de forma aleatória;

2.Avalia cada indivíduo da população;

3.Enquanto critério de parada não for satisfeito faça:

3.1.Seleciona os indivíduos mais aptos de acordo com a avaliação;

3.2.Cria novos indivíduos aplicando os operadores crossover e mutação;

3.3.Armazena os novos indivíduos em uma nova população;

3.4.Avalia cada cromossomo da nova população.

Estas funções são representadas num fluxograma de forma simplificada, conforme

Figura 1.

Figura 1-Fluxograma de um algoritmo genético tradicional


Fonte: Lucas, 2000
20

Deve-se notar que a codificação empregada e o algoritmo têm que garantir a


restrição do espaço de busca. Isso é fundamental para a convergência do método, os limites
estão relacionados ao problema estudado.

2.2 COMPONENTES DE UM ALGORITMO GENÉTICO

Nos tópicos que seguem, são descritos os componentes de um algoritmo genético

segundo Lucas (2002).

2.2.1 Problema

Geralmente, o problema é quando se tem um grande espaço de busca ou problemas

complexos e sem formulação matemática precisa.

2.2.2 Indivíduo

São os responsáveis por codificarem as possíveis soluções para o problema a ser

tratado, e através de sua manipulação que as respostas são achadas.

2.2.2.1 Representação

É fundamental no desempenho de um algoritmo genético e deve: descrever o

espaço de busca relevante ao problema, codificar ”geneticamente” a essência do problema

e ser compatível com os operadores.

Por exemplos:

Vetores de reais (2.345, 4.3454, 5.1)

Cadeias de bits (1101110)

Vetores de inteiros (1,3,4,5,9)

-ou outra estrutura de dado.

2.3 OPERAÇÕES BÁSICAS

As operações básicas de um algoritmo genético são Lucas (2002): inicialização,

avaliação, seleção, reprodução, cruzamento, mutação, atualização e finalização.


21

2.3.1 Inicialização

Na inicialização faz-se o uso de funções aleatórias para gerar os indivíduos, na qual

visa fornecer maior “biodiversidade”, fundamental para garantir uma boa abrangência do

espaço de pesquisa.

2.3.2 Avaliação

Nesta fase, cada indivíduo da população é avaliado a fim de que seja determinado o

seu grau de adaptação, isto é, a nota associada ao indivíduo que avalia quão boa é a

solução por ele representada.

No exemplo, a função matemática f(x) = x2 mede aptidão de cada indivíduo. No

Quadro 1, C1 é um indivíduo mais apto que C2.

Cromossomo x f(x)

C1 0 0 1 0 0 1 9 81

C2 0 0 0 1 0 0 4 16

Quadro 1-Medida de aptidão de cada indivíduo na população corrente


Fonte: Autoria própria, 2005

2.3.3 Seleção

A Seleção é a imitação da seleção natural, onde determina quais indivíduos da

população podem participar da fase de reprodução, normalmente privilegia os indivíduos

mais aptos. Assim, perpetuando as melhores características na espécie. Segundo Daw

(citado por LUCAS, 2002) ela é um processo:

Dirigido: a seleção é feita de forma determinística, isto é, um indivíduo só

sobreviverá no ambiente e nele se reproduzir se for capaz de responder de forma adequada

a todos os fenômenos de seu meio;

Cumulativo: os benefícios do processo da seleção são mantidos de geração para

geração.
22

Tem-se a seleção proporcional a aptidão (roleta) considera-se um círculo dividido em

n regiões (tamanho da população), onde a área de cada região é proporcional à aptidão do

indivíduo conforme a Figura 2. Colocam-se sobre este círculo uma "roleta" com n cursores,

igualmente espaçados. Após um giro da roleta a posição dos cursores indica os indivíduos

selecionados. Este processo é denominado amostragem universal estocástica.

Evidentemente, os indivíduos cujas regiões possuem maior área terão maior probabilidade

de serem selecionados vários vezes. Como conseqüência, a seleção de indivíduos pode

conter várias cópias de um mesmo indivíduo enquanto outros podem desaparecer.

Figura 2 - Amostragem estocástica universal


Fonte: Miranda, 2005

E também seleção torneio onde se escolhe n (tipicamente 2) indivíduos

aleatoriamente da população e o melhor é selecionado.

2.3.4 Reprodução

Uma vez feita à seleção será feita à reprodução na quais os indivíduos são

reproduzidos com base na aptidão, ou seja, os melhores adaptados têm maiores chances

de participar da reprodução. Isto é, os cromossomos ou strings com maiores valores têm

maior probabilidade de formar a próxima geração. Este operador é o modelo artificial da

seleção natural. E a aptidão ou fitness é a habilidade que o indivíduo possui para sobreviver

a predadores, doenças e outros obstáculos. Esta função no meio artificial é que decidirá

quais os cromossomos ou strings que sobreviverão e quais morrerão.


23

Por exemplo, o resultado da decodificação binária da string 10101 representa a sua

aptidão ou fitness e a função objetivo ou payoff poderia maximinizar este valor conforme o

Quadro 2 abaixo:

10101 = 1 x 24 + 0x23 + 1x22 + 0x21 + 1x20 = 21 (fitness)

POPULAÇÃO "FITNESS"

0001 1

0110 6

1010 12

Quadro 2 - População de strings e seus valores de fitness


Fonte: Fialho, 2005

2.3.5.Cruzamento

Em seguida o cruzamento que é a troca de gene, responsável pela combinação das

características genéticas dos pais durante a reprodução, permitindo que elas sejam

herdadas pelas próximas gerações. Ou seja, onde se determina aleatoriamente quais

strings que casarão e logo, também aleatoriamente, em que posição da string se processará

o cruzamento ou crossover.

Por exemplo, considerando - se dois strings: A e B, com seguintes decodificações

binárias:
24

"A" = 0 1 1 0 1

"B" = 1 1 0 0 0

Caso seja escolhida a posição de corte K=4 após a quarta posição da string, o

cruzamento terá a seguinte configuração, em decorrência da troca, conforme destacado em

negrito:

"A" = 0 1 1 0 0

"B" = 1 1 0 0 1

Na figura abaixo se visualiza melhor o cruzamento:

Figura 3 - Esquema gráfico do processo de cruzamento (um ponto)


Fonte: Fialho, 2005

Têm-se vários tipos de cruzamento como veremos a seguir:

Cruzamento de 1 ponto: Um ponto de corte é escolhido aleatoriamente a série binária

desde o começo do cromossomo até o ponto de cruzamento é copiada do primeiro pai e o

resto copiado do segundo pai.


25

11001011+11011111 = 11001111

Figura 4 - Crossover de 1 ponto


Fonte: Manoel, 2004

Cruzamento de 2 pontos: Dois pontos de cruzamento são definidos aleatoriamente, a

série binária desde o início do cromossomo até o primeiro ponto de cruzamento é copiada

do primeiro pai, a parte do primeiro ponto de cruzamento até o segundo ponto é copiada do

segundo pai e o resto do cromossomo é copiado do primeiro pai novamente.

11001011 + 11011111 = 11011111

Figura 5 - Crossover de 2 pontos


Fonte: Manoel, 2004

Cruzamento uniforme: os bits são copiados aleatoriamente do primeiro ou segundo pai.

11001011 + 11011101 = 11011111

Figura 6 - Crossover uniforme


Fonte: Manoel, 2004
26

2.3.6 Mutação

A mutação é a troca aleatória de um gene, responsável pela introdução e

manutenção da diversidade genética na população, alterando arbitrariamente um ou mais

genes de um cromossomo escolhido aleatoriamente. Ocorrendo a introdução de novos

elementos na população. Assim, todo o processo de busca, influenciando diretamente a

velocidade de convergência e evitando que aconteça a supremacia de uma determinada

sub-população, o que geraria o chamado elitismo.

Por exemplo, pode ser verificado na figura abaixo uma analogia do processo de

mutação, onde é alterada a cor dos strings nas posições "2", "4" e "7", da situação "A" para

a situação "A’" (FIALHO, 2005).

Figura 7 - Esquema do processo de mutação


Fonte: Fialho, 2005
27

2.3.7 Atualização

Na atualização os indivíduos resultantes do processo do cruzamento e mutação são

inseridos na população segundo o algoritmo genético tradicional como vimos mais

anteriormente.

2.3.8 Finalização

A finalização é o fim do processo caso se tenha satisfeito a condição de parada

como vimos anteriormente também.

2.3.9 Elitismo

O Elitismo é o método utilizado em Algoritmos Genéticos para melhorar a

convergência e é também uma adição aos métodos de seleção que forçam os Algoritmos

Genéticos a reterem certo número de melhores indivíduos em cada Geração. Tais

indivíduos podem ser perdidos se eles não forem selecionados para a reprodução ou se

eles forem destruídos por cruzamento ou mutação. (CATARINA, 2005)


28

CAPÍTULO 3 – RESULTADOS

Para observar o comportamento de um Algoritmo Genético, utilizaram-se os códigos

ga1.f, ga2.f, ga3.f e ga4.f (Universidade...2005) que modelam um Algoritmo Genético para

obter o máximo de uma função, com cruzamentos de 1 e 2 pontos com ou sem elitismo.

Problema:

Maximinizar a função de Schaffer :

F = 0.5 - ((sin((x**2+y**2)**.5) )**2 -.5 )/(1+.001*(x**2+y**2) )**2

Figura 8 - Gráfico da função de Schaffer


Fonte: Autoria própria, 2005

A função de Schaffer, como observado na Figura 8, tem vários pontos de pico (

máximos locais), denotados pelas delimitações de cores variadas. O máximo dessa função

é representado pelo ponto central de cor vermelha, que é próximo do ponto (0,0). Essa

situação ilustra a dificuldade de encontrar este resultado.


29

Para modelar o algoritmo Genético utilizou-se uma representação binária, onde a

função aptidão que mede o fitness de cada indivíduo é a própria função de Schaffer. A taxa

de mutação utilizada é de 2 % e a taxa de cruzamento de 100%, com 50 bits (sendo 25 por

parâmetro (x,y)), a precisão de 5 casas decimais entre cada unidade ( 10 elevado a 5) e a

faixa é -100 a 100 para x e y, o método de seleção do tipo roleta, com máximo de 10.000

gerações, sendo que cada contém 200 indivíduos.

Desse modo a codificação binária foi feita da seguinte forma:

Figura 9 – Codificação binária


Fonte: Autoria Própria,2005
30

Tipos de cruzamentos observados nos códigos:

ga1.f - Cruzamento de 1 ponto sem Elitismo

ga2.f - Cruzamento de 1 ponto com Elitismo

ga3.f - Cruzamento de 2 pontos sem Elitismo

ga4.f – Cruzamento de 2 pontos com Elitismo

Cada código foi testado cinco vezes cada, a fim de observar o comportamento do

Algoritmo em cada caso.

3.1 TESTES

3.1.1 Gráficos do ga1 f em cinco testes, cruzamento de um ponto sem elitismo

Figura 10 - Primeiro teste com o ga1.f


Fonte: Autoria Própria, 2005
31

Figura 11 - Segundo teste com o ga1.f


Fonte: Autoria própria, 2005

Figura 12 - Terceiro teste com o ga1.f


Fonte: Autoria própria, 2005
32

Figura 13 - Quarto teste com o ga1.f


Fonte: Autoria própria, 2005

Figura 14 - Quinto teste com o ga1.f


Fonte: Autoria própria, 2005
33

3.1.2 Gráficos do ga2.f em cinco testes, cruzamento de um ponto com elitismo:

Figura
Figura 15 - Primeiro teste com o ga2.f
Fonte: Autoria, própria, 2005

Figura 16 - Segundo teste com o ga2.f


Fonte: Autoria própria, 2005
34

Figura 17 - Terceiro teste com o ga2.f


Fonte: Autoria própria, 2005

Figura 18 - Quarto teste com o ga2.f


Fonte: Autoria própria, 2005
35

Figura 19 - Quinto teste com o ga2.f


Fonte: Autoria própria, 2005

3.1.3 Gráficos do ga3.f em cinco testes, cruzamento de dois pontos sem elitismo:

Figura 20 - Primeiro teste com o ga3.f


Fonte: Autoria própria, 2005
36

Figura 21 - Segundo teste com o ga3.f


Fonte: Autoria própria, 2005

Figura 22 - Terceiro teste com o ga3.f


Fonte: Autoria própria, 2005
37

Figura 23 - Quarto teste com o ga3.f


Fonte: Autoria própria, 2005

Figura 24 - Quinto teste com o ga3.f


Fonte: Autoria própria, 2005
38

3.1.4 Gráficos do ga4.f em cinco testes, cruzamento de dois pontos com elitismo:

Figura 25 - Primeiro teste com o ga4.f


Fonte: Autoria própria, 2005

Figura 26 - Segundo teste com o ga4.f


Fonte: Autoria própria, 2005
39

Figura 27 - Terceiro teste com o ga4.f


Fonte: Autoria própria, 2005

Figura 28 - Quarto teste com o ga4.f


Fonte: Autoria própria, 2005
40

Figura 29 - Quinto teste com o ga4.f


Fonte: Autoria própria, 2005

3.2 RESULTADOS QUANTO A PRECISÃO E MELHOR GERAÇÃO

3.2.1 Testes com o ga1.f

-teste 1 (figura 9)

Melhor Indivíduo: x = 0.0620305538 y = -0.0569760799

Valor do Máximo: 0.99291569

Melhor geração: 1314

-teste 2 (figura 10)

Melhor Individuo: x = 0.0112771988 y = -0.0149011612

Valor do Maximo: 0.999650478

Melhor geração: 7023


41

-teste 3 (figura 11)

Melhor Indivíduo: x = 3.09057832 y = -0.546616316

Valor do Máximo: 0.990284085

Melhor geração: 48

-teste 4 (figura 12)

Melhor Indivíduo: x = -2.21600533 y = 2.22252607

Valor do Máximo: 0.990284085

Melhor geração: 162

-teste 5 (figura 13)

Melhor Individuo: x = 0.0459849834 y = 0.0153064728

Valor do Maximo: 0.997650623

Melhor geração: 7223

3.2.2 Testes com o ga2.f

-teste 1 (figura 14)

Melhor Indivíduo: x = -1.1920929E-05 y = 0.000143051147

Valor do Máximo: 1

Melhor geração: 435

Seqüência: 01111111111111111111111101000000000000000000011000

-teste 2 (figura 15)

Melhor Indivíduo: x = -3.57627869E-05 y = -0.000160932541

Valor do Máximo: 1.

Melhor geração: 6764

Seqüência: 01111111111111111111110100111111111111111111100101
42

-teste 3 (figura 16)

Melhor Indivíduo: x = 0. y = 5.96046448E-06

Valor do Máximo: 1

Melhor geração: 1216

Seqüência: 10000000000000000000000001000000000000000000000001

-teste 4 (figura 17)

Melhor Indivíduo: x = -5.96046448E-06 y = -5.96046448E-05

Valor do Máximo: 1.

Melhor geração: 707

Seqüência: 01111111111111111111111110111111111111111111110110

-teste 5 (figura 18)

Melhor Indivíduo: x = -6.55651093E-05 y = 0.000131130219

Valor do Máximo: 1

Melhor geração: 645

Seqüência: 01111111111111111111101011000000000000000000010110

3.2.3 Testes com o ga3.f

-teste 1 (figura 19)

Melhor Indivíduo: x = 0.0267863274 y = -0.00237822533

Valor do Máximo: 0.99927628

Melhor geração: 3309

Seqüência: 10000000000010001100011100111111111111111001110001

-teste 2 (figura 20)

Melhor Indivíduo: x = -0.00691413879 y = -0.065112114

Valor do Máximo: 0.995714486


43

Melhor geração: 9291

Seqüência:01111111111111011011110000111111111101010101010100

-teste 3 (figura 21)

Melhor Indivíduo: x = -0.0585496426 y = 0.0341773033

Valor do Máximo: 0.99540633

Melhor geração: 28

Seqüência: 01111111111011001101000011000000000001011001100110

-teste 4 (figura 22)

Melhor Indivíduo: x = 2.44756937 y = 1.96464062

Valor do Máximo: 0.990284085

Melhor geração: 256

Seqüência:10000011001000100000010101000001010000011110001100

-teste 5 (figura 23)

Melhor Indivíduo: x = 0.0111401081 y = -0.0592172146

Valor do Máximo: 0.996370018

Melhor geração: 4014

Seqüência:10000000000000111010011010111111111101100100110001

3.2.4 Testes com o ga4.f

.-teste 1 (figura 24)

Melhor Indivíduo: x = -0.000125169754 y = 5.96046448E-06

Valor do Máximo: 1.

Melhor geração: 282

Seqüência: 01111111111111111111010111000000000000000000000001

-teste 2 (figura 25)


44

Melhor Indivíduo: x = -1.05759501 y = -2.95491219

Valor do Máximo: 0.990284085

Melhor geração: 66

Seqüência:01111110101001010111001010111110000110111101111000

-teste 3 (figura 26)

Melhor Indivíduo: x = 8.34465027E-05 y = 5.96046448E-05

Valor do Máximo: 1.

Melhor geração: 3114

Seqüência:10000000000000000000011101000000000000000000001010

-teste 4 (figura 27)

Melhor Indivíduo: x = -5.96046448E-05 y = 3.57627869E-05

Valor do Máximo: 1

Melhor geração: 3418

Seqüência: 01111111111111111111101101000000000000000000000110

-teste 5 (figura 28)

Melhor Indivíduo: x = -0.000125169754 y = 5.96046448E-06

Valor do Máximo: 1

Melhor geração: 282

Seqüência:01111111111111111111010111000000000000000000000001
45

3.3 CONSIDERAÇÕES SOBRE OS RESULTADOS OBTIDOS

Observa-se que no caso do ga1, nem sempre se pode encontrar o ponto máximo da

função apenas máximo locais. Quando foi usado o cruzamento de 2 pontos, a resposta foi

encontrada em todos os testes. A aplicação do elitismo garantiu a convergência mais rápida

em todos os casos.

Observando a tabela 1, que coloca a média de erro nos testes de cada caso,

observamos que nos casos sem elitismo o erro médio é maior dos que nos casos com

elitismo e que nos casos sem elitismo, entre os algoritmos sem elitismo o que teve o menor

erro médio foi o de cruzamento de dois pontos sem elitismo.

Ga1.f, ga2.f ga3.f ga4.f


Cruzamento 1 pt, Cruzamento 1 pt, Cruzamento 2 Cruzamento 2
sem elitismo com elitismo pts, sem elitismo pts, com elitismo

Erro Médio 0,005843008 0 0,0019348502 0


Quadro 3 – Erro médio do cruzamento
Fonte: Autoria própria, 2005
46

2 CONSIDERAÇÕES FINAIS

Os testes realizados nos códigos dos Algoritmos genéticos envolvidos no trabalho

apresentaram o refinamento da melhor desempenho entre os casos dos operadores

genéticos aplicados. Dentre os casos analisados, o cruzamento de dois pontos foi o que

apresentou melhor desempenho, pois em todos os testes realizados com este caso,

encontrou-se o ponto máximo da função, de acordo com as Figuras 19 a 28.

Observou-se também que a utilização do Elitismo aumenta a velocidade de

convergência do algoritmo para encontrar o ponto máximo da função, otimizando o fator

tempo, como ilustra as Figuras 24 a 28. Nota-se ganho na precisão da resposta.

A busca pelo conhecimento e do domínio dos processos envolvidos em sistemas, faz

com que o homem busque cada vez mais as melhores respostas ou soluções para cada

problema encontrado. Sua curiosidade e necessidade em dominar fazem que esse

processo fique perene e consiga modelar sistemas, implementá-los e dominar as

variáveis envolvidas, podendo assim suprir suas necessidades.


47

REFERÊNCIAS

ALMEIDA, Roberto A. Determinação do regime operacional de centrais Hidrelétricas

utilizando o algoritmo genético. Disponível em:

<www.unesco.org.uy/phi/libros/hidromecanica/Trab%203.doc>. Acesso em: 5 Mar. 2005.

AMABIS, José Mariano. MARTHO, Gilberto Rodrigues. Fundamentos da biologia

moderna. 2 ed. rev. São Paulo: Moderna, 1997. p.552-558.

CATARINA, Adair S et. al. Utilização de um algoritmo genético na otimização de lucro

de uma propriedade agrícola. Disponível em:

<http://www.ppg.uem.br/Docs/ctf/Agronomia/2002/44_035_02_Adair%20Catarina_Utilizacao

%20de%20um%20algoritmo.pdf>. Acesso em:25 Set. 2005.

CENTENO, J. A. S.; SCHMIT, M. A. R. Uso de algoritmos genéticos para classificação

de imagens de sensoriamento remoto. Disponível em: <http://geodesia.ufsc.br/Geodesia-

online/arquivo/GeoColoq_2001/cbcg2008.pdf>. Acesso em: 5 fev.2005.

FIALHO, Francisco Antônio Perreira et al. Algoritmo Genético – fundamentação.

Disponível em:< http://www.geocities.com/Athens/Sparta/1350/ia/a_genetic.html>. Acesso

em 25 mar. 2005.

GUERVÓS, Juan J. M. Informática Evolutiva: algoritmos genéticos. Disponível em:

<http://geneura.ugr.es/~jmerelo/ie/ags.htm>. Acesso em: 5 mar. 2005.


48

LUCAS, Diogo C. Algoritmos Genéticos: um estudo de seus conceitos fundamentais e

aplicação no problema de grade horária. Disponível em:

<http://www.ufpel.tche.br/prg/sisbi/bibct/acervo/info/2000/Mono-Diogo.pdf> Acesso: 6 mar.

2005.

LUCAS, Diogo C. Algoritmos Genéticos: uma introdução. Disponível em: <

http://www.inf.ufrgs.br/~alvares/INF01048IA/MaterialProva2/ApostilaAlgoritmosGeneticos.pdf

Acesso: 6 mar. 2005.

MANOEL, Hermelindo Pinheiro. Cruzamento e Mutação Disponível em: <.

http://www.cidase.com/webizu/professor/ga/cromu.html>. Acesso em: 29 set. 2005.

MIRANDA, Marcio Nunes de. Algoritmos Genéticos: fundamentos e aplicações. Rio de

Janeiro. Disponível em: < http://www.gta.ufrj.br/~marcio/genetic.html>.Acesso em: 11

jun.2005.

PACHECO, Marco A. C. Algoritmos Genéticos: princípios e aplicações. Disponível em:

<http://www.ica.ele.puc-rio.br>.Acesso em: 8 jul. 2005.

SOARES, José Luís. Biologia: volume único. São Paulo: Scipione, 1997. p.280-282.

UNIVERSIDADE FEDERAL DO PARÁ. Laboratório de Análise Numérica em

Eletromagnetismo. Fortran 77, 2005.