18.04.2013 Views

Algoritmos Genéticos na procura de raízes de funções - ISR

Algoritmos Genéticos na procura de raízes de funções - ISR

Algoritmos Genéticos na procura de raízes de funções - ISR

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Algoritmos</strong> <strong>Genéticos</strong> <strong>na</strong> <strong>procura</strong> <strong>de</strong> <strong>raízes</strong> <strong>de</strong> <strong>funções</strong><br />

Alberto Vale, Nuno Antunes, Agostinho Rosa<br />

Laboratório <strong>de</strong> Sistemas Evolutivos e Engenharia Biomédica<br />

<strong>ISR</strong> - Instituto Superior Técnico<br />

Av. Rovisco Pais, 1 - Torre Norte 6.21<br />

1049-001 Lisboa - Portugal<br />

Sumário:<br />

Habitualmente, para <strong>de</strong>termi<strong>na</strong>r <strong>raízes</strong> <strong>de</strong> <strong>funções</strong>,<br />

é necessário recorrer a algoritmos específicos, que<br />

exigem muitas restrições sobre estas, para além <strong>de</strong><br />

ser necessário o conhecimento a-priori do<br />

comportamento da função. Neste algoritmo é a<br />

comparação do plano complexo, ao mundo animal,<br />

on<strong>de</strong> se verifica o cruzamento*, mutação,<br />

reprodução e selecção, <strong>de</strong> forma a criar uma vida<br />

artificial perante os números, que permite<br />

<strong>de</strong>termi<strong>na</strong>r as <strong>raízes</strong> das <strong>funções</strong>. É este o<br />

objectivo <strong>de</strong> aplicar os algoritmos genéticos <strong>na</strong>s<br />

<strong>funções</strong>, sejam elas lineares, não lineares,<br />

periódicas, ou não periódicas, polinómios, etc.<br />

1. INTRODUÇÃO<br />

Na realização <strong>de</strong> um projecto, surgem muitas<br />

situações, as quais necessitam <strong>de</strong> solução, <strong>de</strong> forma a<br />

minimizar os custos e maximizar os resultados das<br />

mesmas. Nem sempre é possível resolver<br />

matematicamente estas situações e, em caso<br />

afirmativo, ao tentar solucioná-las através <strong>de</strong><br />

algoritmos específicos, surgem outros problemas, tais<br />

como, a mo<strong>de</strong>lização, não linearida<strong>de</strong>s, entre outros,<br />

que se po<strong>de</strong>m tor<strong>na</strong>r incompatíveis <strong>na</strong> programação, o<br />

que leva muitas vezes ao insucesso e falta <strong>de</strong> eficácia.<br />

Este projecto <strong>procura</strong> <strong>de</strong>monstrar como é possível<br />

<strong>de</strong>termi<strong>na</strong>r as <strong>raízes</strong> <strong>de</strong> <strong>funções</strong>, sem conhecimentos<br />

<strong>de</strong> análise numérica, ou algoritmos que lhes<br />

imponham restrições. Não é trivial afirmar que uma<br />

função genérica que tenha <strong>raízes</strong> complexas, estas<br />

sejam conjugadas, no entanto, tal facto é admitido.<br />

Tudo começa numa geração <strong>de</strong> uma população<br />

(conjunto aleatório <strong>de</strong> pontos no plano complexo),<br />

sujeita a uma vida artificial, on<strong>de</strong> vai crescer,<br />

apren<strong>de</strong>r e acabar por convergir para o i<strong>de</strong>al, <strong>na</strong>da<br />

mais do que a raiz, i.e., solução pretendida. [1],[2],[3]<br />

2. APLICAÇÃO<br />

A população sujeita a esta vida artificial, segue os<br />

<strong>Algoritmos</strong> <strong>Genéticos</strong> (AG’s), que operam com a<br />

codificação dos indivíduos que constituem a<br />

população. A pesquisa feita pelos AG’s é global,<br />

através <strong>de</strong> uma função objectivo (fitness), operando <strong>na</strong><br />

população utilizando técnicas mo<strong>de</strong>ladas pela genética<br />

biológica, on<strong>de</strong> sobrevivem os melhores indivíduos da<br />

população. As gerações <strong>de</strong>senvolvem-se por processos<br />

probabilísticos. [1],[3]<br />

Na figura 2.1, está sintetizado a aplicação dos AG’s <strong>na</strong><br />

<strong>procura</strong> <strong>de</strong> <strong>raízes</strong>.<br />

Não<br />

Inicialização<br />

Reprodução<br />

Cruzamento<br />

Mutação<br />

Descobriu<br />

nova<br />

raiz?<br />

Sim<br />

Há mais<br />

<strong>raízes</strong> por<br />

<strong>de</strong>scobrir?<br />

Não<br />

Fim<br />

Sim<br />

Inicialização<br />

Figura 2.1 - diagrama<br />

<strong>de</strong> blocos do algoritmo<br />

Começa pela geraração aleatória <strong>de</strong> uma população,<br />

on<strong>de</strong> <strong>de</strong>pois <strong>de</strong> seleccio<strong>na</strong>dos os melhores indivíduos,<br />

ficam sujeites ao cruzamento e à alteração <strong>de</strong><br />

<strong>de</strong>termi<strong>na</strong>das características (mutação). O processo<br />

repete-se até ser alcançado o objectivo pretendido.<br />

Cada indivíduo é i<strong>de</strong>ntificado por um cromossoma,<br />

que representa uma posição no plano complexo (ex: o<br />

número complexo conjugado 2±4j, ou o número -<br />

6.12).<br />

Po<strong>de</strong>m ser consultados <strong>na</strong> bibliografia os seguintes<br />

termos, que vão ser inseridos no contexto dos AG’s:<br />

[1],[2],[3]<br />

• cromossoma;<br />

• codificação;<br />

• selecção;<br />

• cruzamento (é mais correcto o uso da<br />

palavra retrocruzamento pois esta é a<br />

tradução <strong>de</strong> crossing-over)<br />

• mutação;<br />

• mérito (fitness);<br />

• aprendizagem.<br />

2.1- Cromossoma<br />

Uma população é constituída por vários indivíduos,<br />

que nos AG’s necessitam <strong>de</strong> ser i<strong>de</strong>ntificados. Esta<br />

i<strong>de</strong>ntificação é <strong>de</strong>sig<strong>na</strong>da por cromossoma, constituída<br />

por uma parte real (não esquecendo o si<strong>na</strong>l) e uma<br />

parte imaginária (o si<strong>na</strong>l po<strong>de</strong> ser <strong>de</strong>sprezado, pois<br />

como foi citado, todas as <strong>funções</strong> possuem <strong>raízes</strong> reais<br />

e/ou complexas conjugadas).


cromossoma - 45<br />

cromossoma - 9<br />

cromossoma - 23<br />

cromossoma - 1<br />

cromossoma - 3<br />

cromossoma - 12<br />

População<br />

cromossoma<br />

cromossoma<br />

-<br />

-<br />

4<br />

4<br />

cromossoma - 6<br />

cromossoma - 34<br />

2.2- Codificação<br />

Tal como as tiras <strong>de</strong> ADN (ácido<br />

<strong>de</strong>soxirribonucleico) i<strong>de</strong>ntificam<br />

as ca<strong>de</strong>ias <strong>de</strong> amino ácidos nos<br />

seres vivos, garantindo a<br />

transição <strong>de</strong> características <strong>de</strong><br />

geração para geração, pela sua<br />

auto duplicação ou réplica.<br />

Também nos cromossomas <strong>de</strong>ste<br />

projecto, terá <strong>de</strong> haver uma<br />

codificação que permita as<br />

mesmas potencialida<strong>de</strong>s. [4],[5]<br />

Na escolha da codificação,<br />

<strong>de</strong>vem ser seguidos os seguintes<br />

princípios [1] :<br />

Parte Real Parte Imaginária<br />

• princípio dos blocos básicos significativos,<br />

seleccio<strong>na</strong>r uma codificação que resulta em<br />

esquemas relevantes com distâncias curtas e <strong>de</strong><br />

or<strong>de</strong>ns baixas e relativamente incorrelacio<strong>na</strong>dos em<br />

relação às outras posições fixas dos esquemas;<br />

• princípio do alfabeto mínimo, o alfabeto que<br />

permita uma representação <strong>na</strong>tural do problema.<br />

O primeiro princípio compromete a codificação<br />

<strong>de</strong>cimal (a vulgar i<strong>de</strong>ntificação dos números<br />

complexos), no entanto satisfaz o facto <strong>de</strong> ter uma<br />

única representação. Quanto ao segundo princípio,<br />

induz à utilização da codificação binária, constituída<br />

ape<strong>na</strong>s por dois algarismos: ‘0’ e ‘1’, satisfazendo<br />

também o primeiro princípio.<br />

Por uma questão computacio<strong>na</strong>l, a codificação binária<br />

é ligeiramente modificada, <strong>de</strong>vido à necessida<strong>de</strong> <strong>de</strong><br />

<strong>de</strong>termi<strong>na</strong>r <strong>raízes</strong> elevadas e/ou com precisão. Optar<br />

por uma população com algumas <strong>de</strong>ze<strong>na</strong>s <strong>de</strong><br />

cromossomas, iria tor<strong>na</strong>r o algoritmo mais lento.<br />

O método implementado é o seguinte: codificar, quer a<br />

parte real, quer a imaginária, como se fossem inteiras,<br />

mas conhecendo a posição da vírgula, que terá <strong>de</strong> ser<br />

comum a todos os cromossomas <strong>de</strong> uma geração. Ao<br />

passar para outra geração, a posição da vírgula po<strong>de</strong><br />

ser alterada, consoante seja exigida maior precisão, ou<br />

um maior espaço <strong>de</strong> <strong>procura</strong> (aprendizagem como é<br />

apresentado em 2.7).<br />

Codificação <strong>de</strong> cada cromossoma:<br />

Cromossoma<br />

Figura 2.2 - representação<br />

<strong>de</strong> uma população e a<br />

constituição do cromossoma<br />

parte real parte imaginária<br />

bit(si<strong>na</strong>l) bitn …bit1 bit0 | bitn …bit1 bit0<br />

Figura 2.3 -<br />

tiras <strong>de</strong> ADN<br />

[4]<br />

(2.1.1)<br />

Exemplo:<br />

- 7 ± 2.3 j => - 70 ± 23 j => 11000110 0010111<br />

bit <strong>de</strong> si<strong>na</strong>l:<br />

‘1’ equivale a -;<br />

‘0’ equivale a +;<br />

2.3- Selecção<br />

Tal como numa população real, os melhores<br />

indivíduos têm tendência a subsistir, criando novas<br />

gerações, também o mesmo ocorre nos AG’s. Existem<br />

vários tipos <strong>de</strong> selecção, tendo em conta o mérito e por<br />

vezes a introdução <strong>de</strong> certa aleatorieda<strong>de</strong>.<br />

2.3.1- Roda da Sorte<br />

Mantendo constante o número <strong>de</strong> elementos da<br />

população, steady state, é optada por uma selecção<br />

proporcio<strong>na</strong>l ao mérito, que no entanto é<br />

probabilística. De facto um elemento que tenha maior<br />

mérito que outro, tem também maior probabilida<strong>de</strong> <strong>de</strong><br />

ser seleccio<strong>na</strong>do, no entanto, <strong>na</strong>da impe<strong>de</strong> que seja<br />

seleccio<strong>na</strong>do o pior, per<strong>de</strong>ndo-se assim talvez o<br />

melhor elemento da população, que po<strong>de</strong>ria levar a<br />

uma convergência mais rápida. [1],[2]<br />

2.3.2- Elitismo<br />

Para tentar minimizar este possível problema, é<br />

adicio<strong>na</strong>do à selecção roda da sorte (roulette Wheel<br />

Sampling) uma forma <strong>de</strong> manter o melhor elemento<br />

encontrado até então: elitismo.<br />

Para que o número <strong>de</strong> indivíduos por população se<br />

mantenha constante, é substituído o pior elemento pelo<br />

melhor encontrado até então. A figura 2.4 apresenta<br />

um exemplo on<strong>de</strong> são seleccio<strong>na</strong>dos talvez elementos<br />

<strong>de</strong> mérito relativamente alto, mas o melhor <strong>de</strong> todos,<br />

estaria perdido, não fosse o elitismo.<br />

geração anterior Selecção geração seguinte<br />

Roda<br />

da<br />

Sorte<br />

elitismo<br />

o melhor<br />

o pior<br />

Figura 2.4 - exemplo <strong>de</strong> uma situação, on<strong>de</strong> pela<br />

selecção da “roda da sorte” é perdido o melhor<br />

elemento, que no entanto é salvo pelo elitismo<br />

O elitismo po<strong>de</strong> ser utilizado não ape<strong>na</strong>s num, mas nos<br />

dois, três, ou até mais dos melhores elementos, por<br />

outro lado, o elitismo não po<strong>de</strong> ser muito elevado, o<br />

que po<strong>de</strong> resultar em máximos locais. [1],[2]<br />

2.4- Cruzamento<br />

Como foi referido, os cromossomas i<strong>de</strong>ntificam as<br />

características <strong>de</strong> cada indivíduo. O cruzamento<br />

permite a criação <strong>de</strong> outros cromossomas com as<br />

características dos antecessores. Tal como <strong>na</strong> vida<br />

huma<strong>na</strong>, se o pai apresentar estatura elevada e a mãe,<br />

olhos azuis, é <strong>na</strong>tural (não necessariamente) que o<br />

filho venha a possuir as mesmas características. O<br />

cruzamento em humanos é diplói<strong>de</strong> (o mecanismo<br />

consiste em guardar uma réplica <strong>de</strong> segurança dos<br />

genes potencialmente úteis evitando a sua <strong>de</strong>struição


por selecção <strong>na</strong>tural), no entanto esta comparação é<br />

fraca e sujeita a erros. [1],[2],[3],[4]<br />

Nesta situação, para que haja codificação quer <strong>na</strong><br />

parte real quer <strong>na</strong> parte imaginária, mas<br />

in<strong>de</strong>pen<strong>de</strong>ntes, é seleccio<strong>na</strong>do o cruzamento em duplo<br />

ponto. Estes dois pontos são escolhidos<br />

aleatoriamente, <strong>de</strong>ntro das dimensões a<strong>de</strong>quadas. O<br />

exemplo apresentado <strong>na</strong> figura 2.5 elucida um pouco o<br />

cruzamento entre dois cromossomas, que gera outros<br />

dois. A escolha dos cromossomas para o cruzamento<br />

é também aleatória.<br />

Parte Real Parte Imaginária<br />

<br />

Convém salientar que a partir do momento em que é<br />

efectuado o cruzamento, são perdidos os elementos<br />

imediatamente anteriores. No entanto tem a vantagem<br />

<strong>de</strong> <strong>na</strong>s primeiras fases do algoritmo gerar bastante<br />

varieda<strong>de</strong>, estando a selecção encarregue <strong>de</strong> captar os<br />

indivíduos mais próximos do óptimo. Nas fases fi<strong>na</strong>is,<br />

on<strong>de</strong> é <strong>procura</strong>da a solução mas, com precisão, o<br />

cruzamento está a gerar indivíduos em torno do<br />

óptimo ou até mesmo este (nesta fase, <strong>de</strong>vido à<br />

codificação utilizada, os cromossomas tem os “lados<br />

esquerdos”, quer da parte real, quer da imaginária em<br />

relação aos pontos <strong>de</strong> cruzamento muito parecidos,<br />

enquanto os “lados direitos” dos mesmos, diferem<br />

bastante. Como resultado do cruzamento surgem<br />

pontos em torno do óptimo (ex: óptimo=1.274±2.735j,<br />

são gerados valores tais como 1.281±2.726j,<br />

1.277±2.730j, 1.269±2.745j).<br />

lado esquerdo<br />

da parte real<br />

Cromossoma 1<br />

Cromossoma 2<br />

Parte Real Parte Imaginária<br />

<br />

Parte Real Parte Imaginária<br />

<br />

<br />

<br />

1º ponto <strong>de</strong><br />

cruzamento<br />

lado direito<br />

da parte real<br />

<br />

lado esquerdo da<br />

parte imaginária<br />

2º ponto <strong>de</strong><br />

cruzamento<br />

lado direito da<br />

parte imaginária<br />

Cromossoma 1’<br />

Parte Real Parte Imaginária<br />

Cromossoma 2’<br />

Parte Real Parte Imaginária<br />

Figura 2.5 - exemplo do cruzamento entre<br />

dois cromossomas, resultando em dois<br />

novos cromossomas<br />

Figura 2.6 -<br />

i<strong>de</strong>ntificação das<br />

partes do<br />

cromossoma<br />

influentes no<br />

cruzamento<br />

2.5- Mutação<br />

Quantas vezes os filhos aparecem com características<br />

que os pais, e outros antece<strong>de</strong>ntes não possuem? Isto<br />

<strong>de</strong>ve-se ao efeito da mutação. Também nos AG’s esta<br />

proprieda<strong>de</strong> é importante, quando o algoritmo encalha<br />

em máximos locais, bastando alterar um bit, para este<br />

po<strong>de</strong>r saltar para uma situação completamente<br />

diferente.<br />

A mutação consiste assim, <strong>na</strong> alteração <strong>de</strong> certas<br />

características do cromossoma, o que nesta<br />

codificação, correspon<strong>de</strong> à alteração <strong>de</strong> um ou mais<br />

bits.<br />

Cromossoma<br />

Parte Real Parte Imaginária<br />

bit(si<strong>na</strong>l) bitn … bit3 bit2 bit1 bit0 bitn … bit3 bit2 bit1 bit0<br />

cromossoma<br />

inicial<br />

A escolha dos bits<br />

que vão ser alterados<br />

é aleatória, no entanto,<br />

a probabilida<strong>de</strong><br />

<strong>de</strong> ser alterado o bitn<br />

é menor do que a<br />

probabilida<strong>de</strong> do<br />

bit(n-1). Isto, para<br />

não resultarem números<br />

complexos muito<br />

longe daqueles com<br />

que se trabalha.<br />

P Mutação (bitn) > P Mutação (bit(n-1)), n=1,2,3,… (2.4.1)<br />

Na codificação utilizada, a simples alteração do bit <strong>de</strong><br />

maior peso resulta num número completamente<br />

diferente<br />

(ex: 11±9j => 01011 01001<br />

passava para 27±9j => 00011 01001).<br />

A probabilida<strong>de</strong> <strong>de</strong> um cromossoma ser alterado é<br />

<strong>de</strong>finida exteriormente como probabilida<strong>de</strong> <strong>de</strong><br />

mutação, enquanto a <strong>de</strong> cada bit (gene do<br />

cromossoma), já é <strong>de</strong>finida inter<strong>na</strong>mente, i.e., caso o<br />

cromossoma não seja sujeito à mutação <strong>na</strong>da é<br />

alterado, caso contrário, os bits estarão sujeitos a<br />

alteração, obe<strong>de</strong>cendo à probabilida<strong>de</strong> <strong>de</strong> mutação <strong>de</strong><br />

cada bit. [1],[2],[3]<br />

Para além <strong>de</strong>ste tipo <strong>de</strong> mutação, o algoritmo é<br />

optimizado para gerar número(s) aleatório(s) em torno<br />

do cromossoma, que se <strong>de</strong>sti<strong>na</strong> a ser mudado. A figura<br />

2.8 elucida como se geram números <strong>na</strong> vizinhança do<br />

inicial.<br />

110010100 01001101 110010110 01001011<br />

- 148 ± 77 j<br />

bit <strong>de</strong> si<strong>na</strong>l<br />

110010111 01001100<br />

- 151 ± 76 j<br />

Probabilida<strong>de</strong> <strong>de</strong><br />

mutação<br />

110010110 01001101<br />

Figura 2.7 - I<strong>de</strong>ntificação<br />

do cromossoma e<br />

exemplificação da mutação<br />

bit0 bit1 bit2 bit3 . . . bits<br />

Figura 2.7 - evolução<br />

da probabilida<strong>de</strong> <strong>de</strong><br />

mutação ao longo dos<br />

bits<br />

- 150 ± 75 j<br />

(cromossoma inicial)<br />

- 150 ± 77 j<br />

110011000 01001110<br />

Figura 2.8 - exemplificação da<br />

optimização <strong>na</strong> mutação<br />

- 152 ± 78 j


2.6- Mérito<br />

Para a selecção, é necessário ter em conta a<br />

importância, o mérito, <strong>de</strong> cada cromossoma. Este não<br />

traduz a distância a que o cromossoma está da solução<br />

<strong>procura</strong>da, ape<strong>na</strong>s dá uma medida da diferença do<br />

mérito entre este e o <strong>de</strong>sejado (que em muitos casos é<br />

uma boa representação da distância à solução).<br />

Descodificado o cromossoma, i.e., convertendo para<br />

número <strong>de</strong>cimal, sem esquecer a posição da vírgula e<br />

substituindo esse valor <strong>na</strong> função f(x), da qual<br />

preten<strong>de</strong>mos obter a raiz, vai resultar o mérito <strong>de</strong>ste,<br />

que quanto mais próximo <strong>de</strong> zero melhor. Para<br />

reforçar a i<strong>de</strong>ia, é utilizada a função <strong>de</strong> mérito (2.5.1)<br />

que aumenta o mérito para pontos tais que f(x) se situe<br />

perto <strong>de</strong> zero e, diminui para pontos que verifiquem o<br />

contrário, como nos elucida a figura 2.9.<br />

Função <strong>de</strong> Mérito<br />

1<br />

0.8<br />

0.6<br />

0.4<br />

0.2<br />

F Merito<br />

1<br />

=<br />

2<br />

( 1 + f ( x)<br />

)<br />

0<br />

-5 -2.5 0 2.5 5<br />

(2.5.1)<br />

y=f(x)<br />

Uma função <strong>de</strong> mérito não po<strong>de</strong> ser <strong>de</strong>masiado<br />

selectiva, pois sujeita-se a que uma população convirja<br />

para um valor consi<strong>de</strong>rado bom, no entanto longe do<br />

óptimo.<br />

2.7- Aprendizagem<br />

O algoritmo é inicializado com indivíduos cujos<br />

cromossomas são gerados aleatoriamente, com<br />

comprimento fixo. Caso a raiz se localize no espaço <strong>de</strong><br />

<strong>procura</strong>, os indivíduos (pontos no plano complexo)<br />

começam a convergir para a solução pretendida.<br />

Imaginário<br />

Real<br />

Figura 2.9 -<br />

gráfico da<br />

função <strong>de</strong><br />

mérito (2.5.1)<br />

Figura 2.10 - <strong>de</strong>monstração da convergência dos<br />

pontos para a solução <strong>procura</strong>da<br />

2.7.1- Alargamento do espaço <strong>de</strong> <strong>procura</strong>/virgula<br />

flutuante<br />

Quando uma gran<strong>de</strong> maioria dos cromossomas se<br />

encontra numa vizinhança do melhor encontrado até<br />

então, o tamanho do cromossoma é aumentado para<br />

efectuar uma <strong>procura</strong> com maior precisão (ex: a<br />

<strong>procura</strong> era feita até às casas <strong>de</strong>cimais, passando para<br />

as centesimais) e assim por diante, até a solução ser<br />

encontrada.<br />

Outra situação que po<strong>de</strong> acontecer é, a raiz não se<br />

localiza no espaço <strong>de</strong> <strong>procura</strong> (ex: a raiz é -250 e o<br />

espaço <strong>de</strong> <strong>procura</strong> permite pontos que distam da<br />

origem no máximo <strong>de</strong> 100), então é acrescido o<br />

tamanho do cromossoma (nunca esquecendo a posição<br />

da vírgula), até que se verifique o facto referido atrás,<br />

a convergência dos pontos para solução.<br />

São apresentados dois exemplos: o primeiro<br />

<strong>de</strong>monstra a evolução do tamanho dos cromossomas<br />

para a <strong>procura</strong> <strong>de</strong> uma raiz (cuja precisão é da or<strong>de</strong>m<br />

x10 -4 ), ou seja, logo que se encontre o melhor<br />

indivíduo para o espaço <strong>de</strong> <strong>procura</strong> em causa, aumenta<br />

o tamanho dos cromossomas para mais uma casa<br />

<strong>de</strong>cimal; o segundo, cuja raiz é inteira, mas elevada, os<br />

cromossomas evoluem até alcançar um espaço <strong>de</strong><br />

<strong>procura</strong> que contenha a raiz.<br />

evolução do tamanho<br />

do cromossoma<br />

<strong>procura</strong> da<br />

raiz<br />

- 4.1537<br />

<strong>procura</strong> da<br />

raiz<br />

41827<br />

evolução do tamanho<br />

do cromossoma<br />

Figura 2.11 - <strong>de</strong>monstração da evolução do tamanho do<br />

cromossoma, para duas situações diferentes<br />

Se os pontos não convergirem para os extremos,<br />

conclui-se que o espaço <strong>de</strong> <strong>procura</strong> contém a raiz a<br />

<strong>de</strong>termi<strong>na</strong>r. Mesmo que a raiz se localize no extremo,<br />

o algoritmo tem tendência a passar para o novo espaço<br />

<strong>de</strong> <strong>procura</strong> mas, sendo este maior e contendo a raiz, já<br />

não há convergência para os extremos <strong>de</strong>ste espaço <strong>de</strong><br />

<strong>procura</strong>.<br />

2.7.2- Função <strong>de</strong> mérito para <strong>funções</strong> com mais do<br />

que uma raiz<br />

Outro factor importante, surge quando se preten<strong>de</strong><br />

<strong>procura</strong>r a raiz <strong>de</strong> uma função, e esta possui mais do<br />

que uma. Até encontrar uma raiz, que será consi<strong>de</strong>rada<br />

como a primeira, não há <strong>na</strong>da a acrescentar. A partir<br />

<strong>de</strong>ste momento, são pe<strong>na</strong>lizados os pontos que se<br />

aproximem das <strong>raízes</strong> já encontradas. A função <strong>de</strong><br />

mérito passa a ter uma componente que pe<strong>na</strong>lize, ou<br />

seja, diminua o mérito para os pontos <strong>de</strong>masiado<br />

próximos das <strong>raízes</strong> já encontradas. Uma forma<br />

possível será a expressão (2.7.2.1).<br />

1 N<br />

F =<br />

× ∏ ( x − raiz )<br />

Merito<br />

2<br />

i<br />

( 1 + f ( x)<br />

) i = 1<br />

(2.7.2.1)


Para elucidar esta situação, é apresentado a <strong>procura</strong><br />

das <strong>raízes</strong> do polinómio x 2 -30. Os pontos azuis<br />

<strong>de</strong>monstram a <strong>procura</strong> da raiz positiva, enquanto <strong>na</strong><br />

<strong>procura</strong> da outra, os pontos (<strong>de</strong>sta vez vermelhos, para<br />

não serem confundidos), afastam-se da raiz já<br />

encontrada.<br />

Imaginário<br />

Real<br />

Exemplo:<br />

raiz = -5.447<br />

2<br />

raiz = 5.447<br />

Figura 2.12 on<strong>de</strong> - <strong>de</strong>termi<strong>na</strong>ção f(x) = x - das 30 <strong>raízes</strong> do<br />

polinómio x 2 -30 como <strong>de</strong>monstração <strong>na</strong> <strong>procura</strong><br />

<strong>de</strong> múltiplas <strong>raízes</strong><br />

3. RESULTADOS<br />

Em bastantes experiências, esporádicamente surgia a<br />

seguinte situação: os pontos convergiam para o<br />

“melhor encontrado até então”, no entanto este<br />

localizava-se longe do “óptimo”, i.e., a raiz que<br />

procurávamos.<br />

“óptimo”<br />

Imaginário<br />

Real<br />

“melhor” encontrado<br />

até então<br />

Figura 3.1 - situação on<strong>de</strong> os pontos convergem<br />

para o “melhor encontrando até então”, no<br />

entanto longe da solução<br />

Nestas situações, a solução do problema consiste em<br />

aumentar a probabilida<strong>de</strong> <strong>de</strong> mutação, permitindo que<br />

surjam pontos mais próximos da solução e, logo que o<br />

fitness aumente (já próximo da solução), a<br />

probabilida<strong>de</strong> <strong>de</strong> mutação volte ao valor inicial.<br />

Feito um teste exaustivo ao algoritmo, <strong>procura</strong>ndo 250<br />

vezes a raiz da função f(x) x e x<br />

= + . A <strong>procura</strong> foi<br />

sempre efectuada com sucesso.<br />

Figura 3.2 - resultado <strong>de</strong> 250 <strong>procura</strong>s da raiz da<br />

função x+e x , como teste ao algoritmo<br />

Da análise aos gráficos da figura 3.2 e após 10<br />

gerações, a função f(x) apresenta valores sempre<br />

inferiores a 2, <strong>de</strong> on<strong>de</strong> resulta uma média <strong>de</strong> 22.5<br />

gerações para <strong>de</strong>termi<strong>na</strong>r a solução. Numa das<br />

experiências, foi preciso aumentar a mutação, como<br />

foi referido em 2.7, tendo sido <strong>de</strong>termi<strong>na</strong>da a raiz após<br />

53 gerações.<br />

A população é constituída por número constante <strong>de</strong><br />

indivíduos. Esta quantida<strong>de</strong> <strong>de</strong>ve ser tal que permita<br />

uma larga varieda<strong>de</strong> <strong>de</strong> cromossomas <strong>na</strong> inicialização,<br />

mas <strong>de</strong> forma a não prejudicar a convergência para a<br />

solução pretendida e, até mesmo, evitar a lentidão no<br />

algoritmo. Daí existir também uma relação entre o<br />

número <strong>de</strong> indivíduos e a probabilida<strong>de</strong> <strong>de</strong> mutação:<br />

se a população for muito reduzida a probabilida<strong>de</strong> <strong>de</strong><br />

mutação <strong>de</strong>ve ser maior do que numa população<br />

elevada, on<strong>de</strong> existe maior varieda<strong>de</strong>.<br />

Foi colocada a hipótese <strong>de</strong> as <strong>funções</strong> possuírem<br />

<strong>raízes</strong> reais ou complexas conjugadas. Se for<br />

pretendido <strong>de</strong>termi<strong>na</strong>r <strong>raízes</strong> <strong>de</strong> <strong>funções</strong>, cujo<br />

conjugado da raiz não seja também solução, basta<br />

adicio<strong>na</strong>r um bit respeitante ao si<strong>na</strong>l da parte<br />

imaginária, mantendo o resto da implementação com<br />

AG’s.<br />

São apresentados ainda dois exemplos, on<strong>de</strong> é<br />

<strong>de</strong>monstrado, a <strong>de</strong>termi<strong>na</strong>ção das <strong>raízes</strong> complexas<br />

conjugadas ou simplesmente reais: <strong>na</strong> figura 3.3 à<br />

esquerda, as <strong>raízes</strong> do polinómio x 3 +312 e à direita,<br />

x 4 +1200.<br />

Figura 3.3 - <strong>de</strong>monstração da <strong>procura</strong> <strong>de</strong> <strong>raízes</strong><br />

reais e complexas conjugadas


4. COMENTÁRIO FINAL<br />

Com polinómios, este algoritmo po<strong>de</strong> não se tor<strong>na</strong>r<br />

competitivo no que respeita à velocida<strong>de</strong> <strong>na</strong><br />

<strong>de</strong>termi<strong>na</strong>ção <strong>de</strong> <strong>raízes</strong>, quando comparado com<br />

programas já <strong>de</strong>sti<strong>na</strong>dos a este fim. No entanto não se<br />

restringe só a este tipo <strong>de</strong> <strong>funções</strong>.<br />

Seja a função f(x) não polinomial, <strong>de</strong>finida por ramos:<br />

⎧2<br />

− x , x ≤ 1<br />

⎪<br />

f( x)<br />

= ⎨sin<br />

[ 2( x − 2) ] , 1< x < 3<br />

(4.1)<br />

⎪<br />

⎩2<br />

− 2x , x ≥ 3<br />

existe <strong>de</strong>scontinuida<strong>de</strong> nos pontos: x = 1 e x = 3, on<strong>de</strong><br />

também não é diferenciável. Esta função anula-se no<br />

ponto x = 2, como se constata <strong>na</strong> figura (4.1).<br />

É comprovado o facto <strong>de</strong> o algoritmo não ser afectado<br />

pelas <strong>de</strong>scontinuida<strong>de</strong>s, tendo sida <strong>de</strong>termi<strong>na</strong>da a raiz<br />

<strong>de</strong> forma análoga às outras <strong>funções</strong>.<br />

Figura 4.1 - aspecto gráfico da função f(x)<br />

Na figura 4.2, é <strong>de</strong>monstrada a evolução da população,<br />

on<strong>de</strong> bastou 28 gerações, cada uma constituída por 30<br />

indivíduos (pontos).<br />

Figura 4.2 - evolução dos pontos no<br />

plano complexo para a <strong>de</strong>termi<strong>na</strong>ção da<br />

raiz da função f(x)<br />

Convergência<br />

para a<br />

raiz da<br />

função<br />

f(x)<br />

3 x<br />

Fi<strong>na</strong>lmente com a função f ( x) = x + e + 5 x , é<br />

comparado o algoritmo em termos <strong>de</strong> convergência<br />

com o seguinte método iterativo:<br />

x<br />

x<br />

0<br />

3<br />

atribuir<br />

+ e<br />

x<br />

+ 5x<br />

= 0<br />

3<br />

x<br />

xn<br />

+ e<br />

xn+<br />

1 = − , n = 1,<br />

2,<br />

3,...<br />

5<br />

Este método consiste em efectuar iterações sucessivas,<br />

aproveitando sempre o resultado anterior. Neste<br />

método foram necessárias 23 iterações, enquanto no<br />

algoritmo com AG’s bastavam em média, 17. O<br />

método supracitado tem vários inconvenientes: o valor<br />

inicial convém que se situe próximo da raiz, acabando<br />

muitas vezes por não convergir. Tal como este método<br />

Funções polinomiais<br />

Funções não polinomiais<br />

Funções periódicas<br />

Funções <strong>de</strong>scontínuas<br />

Funções aletórias<br />

iterativo, a gran<strong>de</strong> maioria, impõe restrições, facto<br />

<strong>de</strong>snecessário para os AG’s.<br />

Ao termi<strong>na</strong>r este artigo não podíamos <strong>de</strong>ixar <strong>de</strong> frisar<br />

que esta ca<strong>de</strong>ira <strong>de</strong> opção, <strong>Algoritmos</strong> <strong>Genéticos</strong> &<br />

Vida Artificial, abriu-nos novos horizontes <strong>na</strong><br />

resolução <strong>de</strong> problemas <strong>de</strong> engenharia. Com esta<br />

implementação, procurámos ser pedagógicos e<br />

<strong>de</strong>monstrar como po<strong>de</strong> ser aliciante a fusão entre a<br />

Matemática e a Genética.<br />

5. BIBLIOGRAFIA<br />

Funções trignométricas<br />

Funções diferenciáveis<br />

Funções logarítmicas<br />

<strong>Algoritmos</strong> <strong>Genéticos</strong><br />

[1] “Introdução aos <strong>Algoritmos</strong> <strong>Genéticos</strong> e Vida<br />

Artificial”, Rosa AC, Soares J. Pereira H, Allen Lima<br />

J e Gracias N, DEEC-IST,1995<br />

[2] “Genetic Algorithms in Search, Optimization and<br />

Machine Learning”, Goldberg D, Addison-<br />

Wesley,1989<br />

[3] “Artificial Life”, Langton C (ed), Santa Fé<br />

Institute, 1990<br />

[4] “Enciclopédia Luso - Brasileira <strong>de</strong> Cultura”,<br />

Verbo<br />

[5] “Microsoft Encarta 96 Encyclopedia”, Microsoft<br />

[6] “Matlab, User’s Gui<strong>de</strong>”<br />

[7] “Mathematica”, Enhanced Version 2.2, Wolfram<br />

Research, Inc

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!