Sie sind auf Seite 1von 12

34

Computao Evolutiva: desvendando


os algoritmos genticos
Evolutionary Computing: unleashing genetic algorithms
Slvio Petroli Neto
1
, FAJ, USF
Resumo
Este trabalho apresenta os Algoritmos Genticos, uma classe diferenciada de algoritmos baseada em seleo
natural, destinados busca de solues para problemas de otimizao. Inicialmente as origens deste tipo de
algoritmo so comentadas e tambm as tcnicas necessrias para sua implementao, incluindo a codificao de
cromossomos, a funo de avaliao, a seleo, a reproduo, a recombinao e a mutao. Ao final desenvolvido
um exemplo e analisados os resultados obtidos, o que permite confirmar a adequao e convenincia desta tcnica
como ferramenta para resoluo de problemas computacionais.
Palavras-chave. inteligncia artificial; computao evolutiva; algoritmos genticos.
Abstract
This paper presents genetic algorithms, a different class of algorithms based on natural selection, aimed at seeking
solutions to optimization problems. Initially, the origins of this type of algorithm are discussed and also the
techniques required for its implementation, including the encoding of chromosomes, the evaluation function,
selection, reproduction, recombination and mutation. At the end an example is developed and analyzed the results
obtained, which allows to confirm the adequacy and appropriateness of this technique as a tool for solving
problems.
Keywords. artificial intelligence; evolutionary computing; genetic algorithms.
No o mais forte da espcie que sobrevive, nem o mais inteligente, o que melhor
se adapta mudana.
Charles Darwin
1.Introduo
A Computao Evolutiva o termo empregado para designar o conjunto de tcnicas de resoluo de
problemas baseados em princpios de evoluo biolgica, como a seleo natural e a herana gentica,
as quais podem ser empregadas para a soluo de uma grande gama de problemas, com aplicaes
prticas na indstria e comrcio. Dentre estas tcnicas, destacam-se os algoritmos ditos genticos, que
empregam princpios semelhantes ao da seleo natural para busca de solues otimizadas (EIBEN
& SMITH, 2003).
Antes de se falar sobre Algoritmos Genticos (AGs) deve-se abordar, mesmo que sucintamente, a rea
onde os mesmos esto inseridos, ou seja, precisa-se falar um pouco sobre a Inteligncia Artificial (IA).
A IA pode ser dividida grosseiramente em quatro fases (BARCELLOS, 2000; RUSSEL & NORVIG,
2004):
1. Perodo Subsimblico. Nesse perodo, talvez devido limitao computacional, a representao
do conhecimento era feita numericamente e no simbolicamente. nesse perodo que surgem as
Redes Neurais Artificiais e os primeiros Algoritmos Evolucionrios (AE);
2. Perodo Simblico. Nessa fase, surgem os algoritmos que utilizam representao simblica do
conhecimento, como a Lgica de Predicados e as Redes Semnticas;
1
Mestrando. Docente da Faculdade de Jaguarina-FAJ (Jaguarina-SP) e da Universidade So Francisco-USF (Itatiba-SP).
Computao Evolutiva: desvendando os algoritmos genticos (Petroli)
35
3. Perodo de Conhecimento-Intensivo. Essa fase caracterizada pela grande quantidade de
conhecimento incorporada aos sistemas de aprendizagem;
4. Perodo Atual. Hoje os pesquisadores estudam as diversas reas, combinando e integrando as
vantagens tanto quanto possvel, tentando encontrar melhores solues.
O Algoritmo Gentico surgiu rudimentarmente no perodo subsimblico da IA, como mtodo de
pesquisa no qual se procurava conseguir uma boa soluo para problemas nos quais o espao de
pesquisa era muito grande para uma enumerao completa (busca exata), principalmente levando-se
em considerao os recursos da poca.
Hoje os Algoritmos Genticos esto presentes em diversas reas de pesquisa, seja buscando uma
soluo, seja ajudando a reduzir o campo de busca (GOLDBERG, 1989A, 1989B). Infelizmente, a
maioria dos artigos existentes sobre o assunto no o aborda de forma simples, com exemplos claros de
como essa ferramenta pode ser utilizada na soluo dos mais diversos tipos de problemas. Ao longo
desse trabalho, faremos uma pequena explanao sobre as origens dos AGs e as tcnicas necessrias
para a implementao dos mesmos. Ao final, teremos um exemplo claro de utilizao, mostrando
que sua implementao simples e deve ser utilizada, no como a ferramenta e sim como mais uma
ferramenta disponvel para resoluo de problemas em computao.
2.Darwin, a origem de tudo
O naturalista Charles Robert Darwin (1809-1882), como membro ortodoxo da igreja Anglicana, no
aceitava a teoria da evoluo, j inserida anteriormente por Jean Baptist Lamark (1744-1829) que
afirmava que as formas de vida inferiores se formam continuamente a partir de matria inanimada e
que o caminho para uma maior complexidade guiado pela natureza. No entanto, quando o ornitlogo
John Gould lhe informou que suas espcies de tordos-dos-remdios das ilhas Galpagos eram to
diferentes que pareciam uma nova espcie, o pensamento de Darwin comeou a mudar. Ele comea
ento a aceitar a transmutao de espcies e a juntar evidncias nesse sentido.
Em setembro de 1838, Darwin teve a idia do mecanismo de seleo natural:
aconteceu de eu ler, como entretenimento, o ensaio de Malthus sobre a populao
e, estando bem preparado para avaliar a luta pela existncia que prossegue em
toda parte pela longa e continuada observao dos hbitos de animais e plantas,
imediatamente percebi que, sob essas condies, variaes favorveis tenderiam a
ser preservadas e as desfavorveis destrudas (apud FUTUYAMA, 1992).
Em 1859, Darwin lana seu livro intitulado A origem das espcies, que estendeu o conceito de um
universo em constante mudana aos seres vivos e introduziu o conceito de mutabilidade ao acaso.
Dessa forma, tudo, no s os seres inanimados, mas tambm os seres vivos estavam sujeitos s leis
da fsica, criando assim uma viso muito mais simples e mecanicista, livre dos paradigmas de existir
um propsito, seja ele divino ou no.
Darwin foi o primeiro a introduzir o conceito de ancestralidade comum. O conceito de luta pela
sobrevivncia j existia e at explicava o desaparecimento das espcies, mas nunca havia sido
considerada como fator de aparecimento de novas, atravs da seleo natural. Dessa forma, as
variaes individuais entre organismos no eram mais, necessariamente, imperfeies, mas poderiam
servir de material para moldar novas espcies, talvez melhor adaptadas e preparadas para a
sobrevivncia.
3.O Algoritmo gentico
Os Algoritmos Genticos formam uma classe de pesquisa baseada em seleo natural. Podemos dividir
as tcnicas de pesquisa em (BARCELLOS, 2000):
Tcnicas Baseadas em Clculos utilizam um conjunto de condies necessrias e suficientes que
devem ser satisfeitas pelas solues de um problema de otimizao. Esses mtodos utilizam-se de
clculos matemticos, como derivadas de primeira e/ou de segunda ordem para dar a direo de
busca do ponto timo a ser encontrado.
Computao Evolutiva: desvendando os algoritmos genticos (Petroli)
36
Tcnicas Enumerativas Procuram o ponto timo pesquisando sequencialmente cada um dos
pontos do espao de busca, que deve ser finito e discreto para que o algoritmo encontre uma soluo.
Tcnicas dirigidas por pesquisa aleatria Utilizam tcnicas enumerativas, mas usam algumas
informaes adicionais para dar a direo da pesquisa.
Dessa forma, podemos entender os Algoritmos Genticos como sendo uma tcnica dirigida por
pesquisa aleatria que usa, como informao adicional, o processo de seleo natural visando,
principalmente, resolver problemas de otimizao.
John Holland, no incio da dcada de 70 acreditou que, utilizando os postulados de seleo natural
descritos por Charles Darwin, poderia criar algoritmos computacionais capazes de manipular cadeias
de informaes (genes) de forma a construir organismos complexos, melhores adaptados, para resolver
o problema de sua existncia. Dessa forma, apenas os organismos melhores adaptados sobreviveriam
em detrimento de outros, menos adaptados. Tais organismos seriam os melhores para representar a
soluo de um problema complexo, desde que, o ambiente no qual estivessem inseridos fosse capaz
de fazer a seleo de forma correta.
O algoritmo de Holland resolvia problemas complexos de uma forma bem simples (HAUPT &
HAUPT, 2004). Assim como na natureza, o algoritmo no tinha a informao de qual problema estava
resolvendo, mas conseguia, atravs de uma funo de avaliao, fazer com que somente os organismos
com maiores condies de chegar ao resultado conseguissem sobreviver e se reproduzir, passando
para os descendentes a sua carga gentica e aumentando assim a chance de continuar, enquanto os
menos adaptados eram eliminados.
Em 1975, no seu livro Adaptation in Natural and Artificial System, John Holland publicou o primeiro
trabalho, cunhando a expresso Algoritmos Genticos. De um outro lado, alguns pesquisadores
alemes lanaram uma verso um pouco diferente, conhecida por Estratgias Evolucionrias.
3.1.Iniciando o algoritmo
O funcionamento correto de um AG depender, basicamente, de duas condies iniciais:
Codificao do Cromossomo Os cromossomos podem ser codificados utilizando-se uma cadeia
de bits ou diretamente por nmeros inteiros. importante nesse ponto ressaltar que eles devem
conseguir representar uma soluo do problema. Outra considerao importante, no que diz respeito
codificao do cromossomo, que se deve ter em mente que o mesmo dever possuir genes
(material gentico que poder ser trocado entre os cromossomos na reproduo). Apesar de parecer
estranho, um gene nada mais ser que uma diviso do cromossomo, ou seja, o cromossomo criado
dever ter a propriedade de conseguir ser dividido em partes. nesse sentido que entra a cadeia de
bits, na qual cada bit um gene e o conjunto o cromossomo.
Funo de Avaliao Imagine que j foram criados os cromossomos e que agora pode ser feito
que os mesmos se reproduzam, criando novos cromossomos formados a partir da troca gentica de
seus pais. Como saber quais so os cromossomos que devem continuar a se reproduzirem e quais
devem ser eliminados? Da a importncia da funo de avaliao. Ela faz a ligao do algoritmo
com o problema real. A funo de avaliao dever ser capaz de analisar qual cromossomo possui
melhores caractersticas para continuar. Fazendo uma analogia com a natureza, seria o ambiente
onde os seres vivos encontram-se inseridos e para o qual necessitam se adaptar.
3.2.Uma viso simples do funcionamento
O algoritmo proposto por Holland uma viso simplista do funcionamento do mesmo, mas que pode
ser empregada com bastante sucesso. Um AG pode ser escrito da seguinte forma (DAVIS, 1991):
1. Inicie uma populao de tamanho N aleatoriamente, ou seja, criar N cromossomos com contedo
aleatrio que ser a populao inicial;
2. Aplique a funo de avaliao em cada um desses cromossomos, obtendo uma classificao dos
mais adaptados ao problema;
Computao Evolutiva: desvendando os algoritmos genticos (Petroli)
37
3. Faa o cruzamento dos cromossomos, levando-se em considerao que os mais adaptados devem
ter maiores chances de reproduo. Esse procedimento poder gerar novos cromossomos.
4. Aplique mutao a uma pequena porcentagem dos cromossomos criados. A mutao pode
proporcionar o aparecimento de boas surpresas.
5. Elimine os cromossomos da populao antiga, de forma que os novos cromossomos gerados
possam ser inseridos sem alterar o tamanho da populao inicial;
6. Aplique a funo de avaliao e insira os melhores selecionados na populao anterior, gerando
uma nova populao;
7. Se a populao de cromossomos atual representar o resultado esperado ou se a quantidade de
geraes mxima definida foi atingida, pare. Caso contrrio, volte etapa 3.
O tamanho N, da populao inicial, uma varivel do algoritmo e seu valor depende da complexidade
do problema. Valores tpicos encontram-se entre 20 e 200 indivduos.
Ao final do algoritmo acima se espera que a populao de cromossomos gerada seja a melhor
adaptada funo de avaliao, sendo dessa forma, a que melhor represente o resultado do
problema. Analisando o algoritmo, consegue-se perceber a importncia de uma boa codificao para o
cromossomo e de uma funo de avaliao que, efetivamente, seja capaz de classificar os cromossomos
em melhores e piores. Essa tarefa inicial de gerao do cromossomo e da funo de avaliao no
uma tarefa fcil, uma vez que, para que a mesma produza bons frutos, precisa-se conhecer muito bem
a estrutura do problema a ser resolvido.
3.3.Codificao, a gerao dos cromossomos
Como j mencionado, a codificao do cromossomo dever ser de tal forma que o mesmo represente
uma soluo do problema e dever possuir a caracterstica de poder ser dividida em partes menores,
que chamaremos de genes. Pode-se codificar o cromossomo como sendo um conjunto de nmeros
reais, ou um conjunto de nmeros inteiros, ou at mesmo, e mais comumente, um conjunto de bits. A
importncia de se utilizar um conjunto de bits que isso permite a manipulao fcil e eficiente dos
operadores genticos sobre esse cromossomo.
No caso de nmeros inteiros, a codificao para binrio poder ser feita de forma bem simples.
Suponha que o cromossomo dever representar nmeros inteiros entre -31 e +31. Pode-se descrever
tais nmeros como um conjunto de 6 bits, sendo 1 para sinal e 5 para representar amplitude 2
5
=32.
Esses cromossomos serias como ilustrados na Figura 1 e Figura 2.
Figura 1. Exemplo de
cromossomo (inteiro negativo).
Figura 2. Exemplo de
cromossomo (inteiro positivo).
No caso de parmetros com valores reais, pode-se trabalhar com uma expresso em formato inteiro.
Supondo que a faixa de valores est entre 3.56 a 10.78, pode-se multiplicar os valores dos parmetros
por 100 e representar o cromossomo com o nmero inteiro resultante. Quando se desejar o valor real
ser s realizar a operao inversa, dividindo o nmero inteiro presente no cromossomo por 100.
Outros cromossomos podem ser codificados, dependendo da estrutura e da complexidade do problema
que se deseja resolver. O importante que, seja qual for a codificao utilizada, ele consiga representar
os parmetros do problema real com eficincia e clareza.
3.4.Funo de avaliao
A funo de avaliao basicamente um modo de avaliar o quo distante um dado cromossomo est
da soluo tima. ela quem faz a ligao entre o problema real e o Algoritmo Gentico, uma vez
Computao Evolutiva: desvendando os algoritmos genticos (Petroli)
38
que os cruzamentos so feitos com os algoritmos melhores adaptados. Sem a funo de avaliao seria
impossvel determinar se um problema est evoluindo para a soluo tima ou no.
Pode ser, por exemplo, uma equao matemtica. O resultado da funo de avaliao pode ser
normalizado de tal modo que, quando seu valor for 1, indica um cromossomo melhor adaptado
e, quando seu valor for 0, indica um cromossomo pouco adaptado, porm, a normalizao no
necessria.
Vamos supor que se deseja encontrar, dentre vrios nmeros inteiros, qual o que melhor representa
x na funo 3x+6=30. Para esse problema poderamos ter como funo de avaliao o quanto 3x
+6-30 est distante de zero. Quanto mais distante de zero for o valor da funo de avaliao, mais
distante de sua raiz e, portanto, menos adaptado o cromossomo que representa x. Por outro lado,
quanto mais prximo o valor da funo acima estiver de zero, mais prximo de sua raiz, ento mais
adaptado ser o cromossomo e maior a chance do valor fornecido por esse cromossomo para x ser o
valor que resolve o problema proposto.
bvio que o exemplo dado simplista. Em problemas reais de grande complexidade, a determinao
de uma funo de avaliao adequada, que possa avaliar com exatido a condio da populao de
cromossomos formada no to simples, exigindo mais uma vez o domnio do problema proposto para
soluo. Em virtude disso vale ressaltar que, a exemplo do que acontece na elaborao de quaisquer
espcies de algoritmos, no sendo diferente no caso dos genticos, a compreenso do problema a ser
resolvido de extrema importncia e deve ser levada exausto antes da tentativa de se resolver o
problema.
3.5.Seleo
A seleo no Algoritmo Gentico a forma como, fazendo uso da funo de avaliao, sero
classificados e selecionados os cromossomos. O mtodo de seleo pode variar muito, desde que
consiga rotular cada cromossomo como sendo melhor ou pior adaptado. Um mtodo possvel seria
apenas ordenar os cromossomos de forma que os primeiros da lista sejam os que apresentem os
melhores resultados perante a funo de avaliao e os ltimos sejam, por outro lado, os que
apresentem os piores resultados. Assim, deve ser dada maior possibilidade de cruzamento aos
primeiros colocados da lista e os ltimos da lista devem ser eliminados da prxima gerao.
O mtodo proposto por Holland conhecido como mtodo de seleo por roleta (HOLLAND, 1992;
DAVIS, 1991). Supondo f como sendo o valor da funo de avaliao para um dado cromossomo e
s como sendo a soma do valor da funo de avaliao de todos os cromossomos, cada cromossomo
receber um setor na roleta de tamanho igual ao ngulo dado por 2#f/s, ou seja, um setor com
tamanho proporcional ao grau de adaptabilidade do cromossomo.
O prximo passo selecionar um cromossomo com probabilidade igual ao do setor por ele obtido,
ou seja, a probabilidade de selecionar um cromossomo para reproduo proporcional funo de
avaliao. A seleo realizada da seguinte forma:
1. Gera-se um nmero aleatrio entre 0 e 2#;
2. Soma-se, em qualquer ordem, o valor do setor alocado, (em qualquer ordem,) continuando a somar
enquanto o resultado no ultrapassar o valor do nmero gerado;
3. O cromossomo cujo setor fizer a soma ultrapassar o valor do nmero gerado ser o escolhido para
a reproduo.
O algoritmo acima descreve um funcionamento semelhante ao de uma roleta, no qual os valores vo se
sucedendo at parar em um determinado ponto. bvio que os setores maiores tm maiores chances
de serem escolhidos. No h necessidade de se converter os valores obtidos com a funo de avaliao
em graus ou radianos. Isso pode ser feito apenas para compreender a tcnica utilizada. O que feito
na prtica, apenas somar a funo de avaliao de todos os cromossomos da populao e gerar um
nmero aleatrio entre zero e essa soma.
A cada dois cromossomos escolhidos dessa maneira como pais, dois novos cromossomos so gerados
a partir deles. O processo de seleo termina quando o nmero de cromossomos formados atingir o
Computao Evolutiva: desvendando os algoritmos genticos (Petroli)
39
nmero de cromossomos da populao anterior. H duas maneiras de se criar a nova gerao, uma
delas trocando toda a populao anterior pela nova populao formada; a outra trocar apenas uma
frao da populao anterior pela nova gerao. No segundo caso, preciso definir quantos elementos
da populao sero trocados a cada nova gerao.
3.6.Reproduo
A reproduo o processo atravs do qual se combina dois cromossomos (pais) para formar filhos
a partir deles. Tais filhos herdam as caractersticas dos pais atravs da herana de material gentico
(genes). Esse processo conhecido como recombinao.
Alm da recombinao, est envolvida no processo de reproduo, a mutao. Na mutao, altera-se
aleatoriamente o material gentico de uma pequena parcela dos filhos gerados.
3.6.1.Recombinao
A recombinao o processo de troca de material gentico entre dois cromossomos. Pode-se definir
aqui a probabilidade de recombinao, que indica a probabilidade de dois indivduos escolhidos no
processo de seleo virem a se reproduzir. Essa probabilidade ser chamada de PC, que geralmente
est entre 0.5 e 1.0. O processo de recombinao se d da seguinte maneira (BARCELLOS, 2000;
DAVIS, 1991):
1. Gera-se aleatoriamente um nmero entre 0 e 1;
2. Se este nmero for menor ou igual a PC, haver recombinao; caso contrrio no haver
recombinao;
3. Escolhe-se aleatoriamente um ponto no qual haver a quebra do material gentico;
4. Quebram-se os dois cromossomos envolvidos neste ponto, juntando-se a primeira parte do
cromossomo A com a segunda parte do cromossomo B e a primeira parte do cromossomo B com
a segunda parte do cromossomo A, gerando assim dois filhos.
A Figura 3 ilustra o processo de recombinao em um ponto de quebra.
Figura 3. Processo de recombinao.
Pode-se tambm quebrar o cromossomo em dois ou mais pontos. Nesses casos, o nmero de filhos
gerados com dois cromossomos pode ser maior que dois.
No existe uma regra fixa de como a recombinao deve ser feita. Deve-se usar de bom senso na hora
da reproduo para que o processo evolua para descendentes mais adaptados e melhores que seus pais.
Geralmente, o processo utilizado a quebra em um ou dois pontos. Uma outra tcnica vem sendo
utilizada para a recombinao e conhecida como PMX (Partially Matched Crossover). Dados dois
cromossomos pais, o PMX copia uma substring de genes de um dos pais diretamente na mesma
posio do filho. As posies restantes se completam com valores que ainda no tenham sido
utilizados, na mesma ordem em que se encontram em um dos pais. Supondo que Pai
1
=12463758
e Pai
2
=54172683 e que a substring seleciona aleatoriamente do Pai
1
seja 463 e ela tem relao
com a substring 172 no Pai
2
. Ento a sequncia de operao obter um filho com 54463683 e
eliminando as repeties teremos 5*463*8*. Arrumando agora ficaria assim 51463*8*, j que o
4 havia ocupado o lugar do 1 no Pai
2
. Continuando o processo obtem-se o Filho=51463782.
Computao Evolutiva: desvendando os algoritmos genticos (Petroli)
40
3.6.2.Mutao
O operador de mutao utilizado para que sejam gerados novos cromossomos distintos dos pais
(BARCELLOS, 2000; KOZA, 1992). Tal fato de grande importncia, pois a populao inicial
gerada aleatoriamente e as novas geraes so frutos da recombinao da populao inicial. Suponha
que nenhum cromossomo da populao inicial possua carga gentica do ponto timo. Se isso ocorrer,
passaro muitas geraes at que surja um cromossomo que possua as caractersticas desejadas, ou
ainda, pode ser que isso nunca venha a ocorrer.
O operador de mutao troca, aleatoriamente, a carga gentica de uma pequena porcentagem dos
cromossomos gerados. Essa porcentagem dada atravs de um parmetro fornecido a priori, que varia
usualmente entre 0.1% e 2%. Na prtica, o que ocorre escolher, aleatoriamente, um gene de alguns
cromossomos e trocar o seu valor por outro tambm aleatrio. Se os cromossomos forem representados
por cadeias de bits, isso significa trocar o valor 0 por 1 e vice-versa.
4.Um exemplo prtico
Ser utilizado como exemplo, a minimizao de uma funo, construindo passo a passo o algoritmo
gentico que encontrar os valores de x que produzem o menor valor possvel para a funo dada. Tal
processo conhecido como otimizao.
A funo escolhida como exemplo foi (x
1
-2)
4
+(x
1
-2x
2
)
2
; e o problema pode ser descrito como
na Equao 1.
Equao 1. Mnimo da funo de avaliao
Aplicando o Mtodo de Newton Clssico, que um conhecido mtodo de otimizao numrica,
obtivemos o resultado da Equao 2, ilustrado na Figura 4.
Equao 2. Resultado da Equao 1
Figura 4. Resultado obtido pelo mtodo de Newton Clssico.
Computao Evolutiva: desvendando os algoritmos genticos (Petroli)
41
O resultado obtido pelo mtodo exato ser utilizado apenas para comparao com os resultados obtidos
pelo algoritmo gentico a ser desenvolvido.
Os passos descritos nessa Seo sero seguidos para construo de um algoritmo que seja realmente
eficaz na resoluo do problema acima.
4.1.Codificao do cromossomo
Atravs do mtodo de Newton Clssico, sabemos que o valor de x
1
aproximadamente 2.0 (dois) e
o valor de x
2
aproximadamente 1.0 (um). Com isso, no sero representados nmeros negativos,
utilizando como campo de busca apenas valores positivos entre zero e 100.999. Tendo estes nmeros
uma parte inteira e uma parte fracionria, o respectivo cromossomo ter a forma ilustrada na Figura 5.
Figura 5. Representao do cromossomo.
A diviso em inteiro e fracionrio se d pelo fato de deseja-se a representao binria do cromossomo.
Agindo dessa forma, cada uma das partes do cromossomo dado pode ser representada por um nmero
inteiro, que pode ser facilmente convertido para a base dois.
O tamanho de x
1
e x
2
dependem do campo de busca, ou seja, em qual faixa de valores o algoritmo
gentico deve buscar o valor timo. Como dito, feita uma busca entre zero e 100.999, o que indica
uma parte inteira entre 0 (zero) e 100 (cem) e uma parte fracionria entre 0 (zero) e 1000 (mil).
Para compor os nmeros formados ser utilizada a funo da Equao 3.
Equao 3. Funo de avaliao
4.2.Funo de avaliao
A funo de avaliao ser dada pela prpria funo que se deseja minimizar. Cada novo valor de x
1
e x
2
obtido atravs do cromossomo dever ser aplicado funo (x
1
-2)
4
+(x
1
-2x
2
)
2
e o valor
obtido, comparado ao valor obtido por outro par x
1
e x
2
. O par que resultar em um menor valor para a
funo ser considerado melhor adaptado e continuar na populao. Para utilizar o mtodo da roleta
na seleo, atribui-se a cada cromossomo selecionado um peso. Suponha uma populao inicial igual
a cinco, o cromossomo melhor adaptado recebe peso cinco, o posterior recebe peso quatro, o seguinte
trs e assim sucessivamente at terminar a populao. O ltimo cromossomo, pior adaptado, receber
peso um.
4.3.Incio da populao
Como temos o cromossomo dividido em duas partes, o nmero de cromossomos diferentes ser
muito grande, igual a 10010001001000=10
9
=10bilhes. Isso indica que, para termos uma
representao coerente dos valores, precisamos de uma populao inicial bem grande, da ordem de
dois mil a cinco mil cromossomos. Uma vez escolhido o nmero de cromossomos da populao inicial,
ela pode ser gerada aleatoriamente. Isso ser feito gerando nmeros aleatrios entre zero e cem para
as partes inteiras e entre zero e mil para as partes fracionrias.
4.4.Seleo
A seleo dos cromossomos que devero se reproduzir ser feita atravs do mtodo da roleta. Como
cada cromossomo, aps a classificao, ter um peso, somaremos todos os pesos. Assim, se o nmero
Computao Evolutiva: desvendando os algoritmos genticos (Petroli)
42
de cromossomos for igual a cinco e os pesos atribudos a cada um deles cinco, quatro, trs, dois
e um respectivamente, a soma dos pesos igual a quinze. Agora gera-se aleatoriamente um nmero
entre zero e quinze e, se o nmero gerado for menor que cinco, ele representa o cromossomo um,
se estiver entre cinco e nove, representa o cromossomo dois, e assim sucessivamente. Pode-se notar
que a probabilidade de ser escolhido um cromossomo melhor adaptado muito maior do que a de se
escolher um pior adaptado. Por exemplo, enquanto a probabilidade de se escolher o cromossomo um
igual a 5/15, a de se escolher o cromossomo cinco igual a 1/15.
4.5.Reproduo
A reproduo est dividida em duas partes: a recombinao e a mutao.
4.5.1.Recombinao
A recombinao ser feita quebrando-se cada parte do cromossomo em duas partes e recombinando
como j descrito. No podemos tratar o cromossomo, nesse caso, com uma nica cadeia de bits, e sim
cada parte como sendo um cromossomo diferente, ou seja, deveremos recombinar a parte inteira de x
1
do primeiro cromossomo selecionado com a parte inteira de x
1
do segundo cromossomo selecionado;
a parte fracionria de x
1
do primeiro cromossomo selecionado com a parte fracionria de x
1
do
segundo cromossomo e assim sucessivamente. No poderemos misturar parte inteira com fracionria
nem sequer x
1
com x
2
.
A posio de corte ser escolhida aleatoriamente, ou seja, a cada recombinao o local onde as partes
do cromossomo sero quebradas, ser obtido aleatoriamente entre zero e o nmero de bits da parte.
Depois de cada parte recombinada separadamente, junta-se novamente as partes formadas para obter
um s cromossomo. Cada casal de cromossomos gerar dois novos cromossomos filhos.
4.5.2.Mutao
A mutao ser feita escolhendo-se aleatoriamente dois por cento da populao. Nesses dois por cento
escolhidos ser escolhido um bit de cada parte para ser trocado, ou seja, ser invertido um bit da
parte inteira de x
1
, um bit da parte inteira de x
2
, um bit da parte fracionria de x
1
e um bit da parte
fracionria de x
2
.
4.5.3.Eliminao e gerao da nova populao
Aps a reproduo, a populao de cromossomos dobrar de tamanho, uma vez que foi dada a
oportunidade de reproduo para metade dos cromossomos. Para se manter o mesmo nmero de
cromossomos a cada gerao, os novos cromossomos gerados foram adicionados populao anterior
e todos foram avaliados. Os cromossomos so ordenados de forma que os mais adaptados fiquem no
incio da populao. Aps a ordenao a metade inferior dos cromossomos eliminada, voltando a
populao ao seu tamanho inicial.
4.6.O algoritmo
O algoritmo foi desenvolvido, segundo o modelo descrito nesse captulo e utilizando-se o software
MatLab, devido facilidade em tratar funes matemticas. Pode ser descrito da seguinte forma:
1. Inicia-se a populao inicial;
2. Avaliam-se os cromossomos gerados, atribuindo a eles um peso;
3. Selecionam-se os melhores e faz-se a recombinao entre eles;
4. Faz-se a mutao em 2% dos novos cromossomos gerados;
Computao Evolutiva: desvendando os algoritmos genticos (Petroli)
43
5. Avaliam-se novamente os cromossomos e eliminam-se os piores adaptados;
6. Se obteve o resultado ou se findou o nmero de geraes esperadas, parar o algoritmo; caso
contrrio, voltar ao passo dois.
4.7.Resultados obtidos
Para uma populao de dois mil cromossomos, em apenas cinco geraes, obteve-se o resultado da
Equao 4, ilustrado na Figura 6.
Equao 4. Resultado do exemplo para 2000 cromossomos
Figura 6. Resultado obtido pelo algoritmo gentico.
Para uma populao de cinco mil cromossomos, em apenas cinco geraes, obteve-se o seguinte
resultado da Equao 5, ilustrado na Figura 7.
Equao 5. Resultado do exemplo para 5000 cronossomos
Computao Evolutiva: desvendando os algoritmos genticos (Petroli)
44
Figura 7. Resultado obtido pelo algoritmo gentico, variando-se o nmero da
populao inicial.
5.Concluses
Como se pode observar, os Algoritmos Genticos conseguiram resolver o problema de uma forma
bastante rpida e com uma preciso semelhante a um mtodo exato. A diferena que o Mtodo
de Newton, utilizado aqui como exemplo, muitas vezes mais complexo e exige muito mais poder
computacional, sem falar na quantidade de conhecimento necessria para se program-lo.
A Computao Evolutiva uma ferramenta prtica e fcil de utilizar e a idia desse artigo apenas
deixar claro que ela existe e que no apenas pode, mas deve ser utilizada como mais uma ferramenta
para resoluo de problemas computacionais, sobretudo quando temos um vasto campo de busca.
Nos dias de hoje, os AGs vem sendo amplamente utilizados nas mais diversas reas como:
otimizao, minerao de dados, planejamento estratgico, entre outras.
Como perspectivas futuras temos a adaptao dos algoritmos para utilizao nas mais diversas reas,
o aprimoramento das tcnicas j utilizadas e o desenvolvimento de novas tcnicas e regras de seleo,
combinao e mutao.
6.Referncias bibliogrficas
BARCELLOS, J. C. H. Algoritmos genticos adaptativos: um estudo comparativo. Dissertao de
mestrado. Universidade Estadual de So Paulo, Escola Politcnica. So Paulo: 2000.
DAVIS, L. Handbook of Genetic Algorithms. New York: Van Nostrand Reinhould, 1991.
EIBEN, A.E. & SMITH, J.E. Introduction to Evolutionary Computing. Berlin: Springer, 2003.
FUTUYAMA, D. J. Biologia Evolutiva. traduo: Fbio de Melo Sene. Ribeiro Preto: Sociedade
Brasileira de Gentica, 1992.
GOLDBERG, D.E. Messy Genetic Algorithms: Analysis and First Results. In: Complex Adaptive
Systems. Boston: MIT Press, 1989A.
Computao Evolutiva: desvendando os algoritmos genticos (Petroli)
45
_______. Genetic Algorithms in Search, Optimization and Machine Learning. Reading: Addison-
Wesley, 1989B.
HAUPT, R. L. & HAUPT, S. E. Practical Genetic Algorithms. 2nd Edition, New York: Wiley-
Interscience, 2004.
HOLLAND, J.H. Adaptation in Natural and Artificial Systems. Boston: MIT Press, 1992.
KOZA, J. R. Genetic Programming: On the Programming of Computers by Means of Natural
Selection. In: Complex Adaptive Systems. Boston: MIT Press, 1992.
RUSSEL S. & NORVIG P. Inteligncia Artificial. Rio de Janeiro: Campus, 2004.

Das könnte Ihnen auch gefallen