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.