Você está na página 1de 11

ALGORITMO GENTICO PARA IDENTIFICAO DO MNIMO DA FUNO PEAKS DO MATLAB

Antnio talo Rodrigues Pedrosa. E-mail: antonio.italo@hotmail.com Ps-Graduao em Engenharia Mecnica pelo Instituto Militar de Engenharia

1. INTRODUO John Holland props em 1975 um modelo de algoritmo baseado nos conceitos de seleo natural da espcie e na teoria da evoluo, chamando de Algoritmo Gentico. Esse um mtodo de otimizao estocstica livre de derivao funcional. Essa proposta pode ser aplicada em sistemas de optimizao contnua ou discreta, sendo amplamente implantado em mquinas de processamento paralelo aumentando a velocidade de processamento desses equipamentos. Para isso, o modelo codifica cada ponto a ser analisado em uma representao binria que ser chamada de cromossomo. Cada um desses pontos deve ter associado um valor de funo objetivo, denominado de grau de aptido em problemas de maximizao, ou seja, procura-se o menor valor para a funo objetivo em problemas de minimizao, por outro lado, a aptido de cada um dos pontos deve ser maximizada. O conjunto de pontos ento produz um novo conjunto de acordo com a aptido de cada um, produzindo uma nova gerao. Aqueles que possurem maior aptido esto mais aptos a cruzar seus valores para produzir uma gerao de pontos que possam produzir pontos com aptido ainda maiores. Esse cruzamento se d atravs do crossover. O crossover a etapa em que se d a troca de informaes dos cromossomos, alterando a cadeia binria associada anteriormente. Na gerao, parte do material de um cromossomo trocada parte do material de mesmo tamanho de outro cromossomo. A nova gerao tem maior probabilidade de se adequar ao que analisado pelo problema, mas nem sempre isso acontece. Pode ser que os filhos gerados pelo crossover tenham aptido menor que a dos pais. Ento, utiliza -se o processo de seleo natural proposto por Darwin, em que os mais adaptados sobrevivem. Esse processo chamado e elitismo, fazendo com que os pontos que possuem maior aptido permaneam para as prximas geraes, fazendo com que sempre se caminhe para uma

soluo vivel. Consequentemente, esse valor pode estar associado a um estado de mnimo local, que no representa a soluo correta do problema, e a soluo encontrada para fugir desse dilema tambm baseada no modelo proposto por Darwin, onde se considera a possibilidade de mutao do gene em algum cromossomo. A mutao ocorre de forma aleatria e no necessariamente em todos os indivduos, mas quando ocorre, pode resultar em uma variao considervel de alocao dos pontos, o que pode aproximar o ponto de um mnimo global, ou afast-lo ainda mais. Quanto maior o nmero de geraes, maior a probabilidade de se encontrar um indivduo com caractersticas timas, ou pelo menos mais adaptadas situao, que o proposto pelo mtodo.

2. PROBLEMA PROPOSTO O comando peaks do MATLAB representa uma funo de duas entradas definidas como:

(1)

A soluo pode ser obtida unicamente digitando peaks no prompt de comando do MATLAB, em que ser apresentada uma superfcie, como mostrada pela Fig. 1, para 49 valores igualmente espaados de x e y variando de -3 a 3, ou seja, com um intervalo de 0.125 entre cada ponto. Para se encontrar o valor de z em qualquer ponto desejado, deve-se usar a expresso z = peaks(x,y) para a coordenada desejada Com isso, para se encontrar o valor do mnimo dessa funo, deve-se encontrar a coordenada (x,y) que retorne o menor valor de z. Obviamente, o espao de busca selecionado foi entre os pontos -3 e 3, com preciso na terceira casa decimal. A codificao de um ponto na linguagem binria requer que o valor de entrada seja inteiro e positivo. Logo, o intervalo dever ser transladado para que todos os seus valores se tornem positivos, ou seja, o novo intervalo dever ser de 0 a 6. E para que a preciso acontea na terceira casa decimal, tambm se faz necessrio que esse valor seja multiplicado por 10. Assim, a relao entre o indivduo a ser utilizado para o algoritmo e o dado de entrada na funo peaks, segue na forma:

(2)

Resultando no intervalo de 0 a 6000, o que requer um nmero de pelo menos 13 bits, ou seja, 2n deve ser maior que 6000.
Peaks

-5

2 0 -2 y -3 -2 -1 x 0 1 2

Figura 1 Funo peaks do MATLAB

O cromossomo associado para cada ponto deve conter todas as suas caractersticas, ou seja, as coordenadas x e y, logo, esse cromossomo ser representado por um nmero binrio de 26 bits. O cruzamento entre os cromossomos ir acontecer de acordo com uma probabilidade pr-definida, ocorrendo no crossover entre os cromossomos escolhidos. Ser escolhido um nmero aleatrio para que haja a troca da informao entre os cromossomos a partir desse gene, como exemplificado na Fig. 2. A partir do ponto de crossover, o material de um cromossomo passado ao outro, resultando em dois cromossomos filhos com material gentico combinado.

Figura 2 Crossover entre cromossomos de 8 bits (Jang, 1997)

definida tambm uma probabilidade de mutao que, se for atendida para o crossover analisado, ir trocar um bit de um dos cromossomos filhos de 1 para 0, ou vice-versa. Quando a populao de cromossomos filhos for igual populao de cromossomos pais, ento se tem uma nova gerao de indivduos. A aptido desses indivduos analisada para saber qual deles ser o sobrevivente para a prxima gerao devido ao elitismo atribudo. Para a anlise da aptido, retoma-se o valor decimal do cromossomo at a converso para o valor do dado(x,y) que ser utilizado no comando peaks. Por se tratar de um problema de mximo, a aptido atribuda calculada na forma: ( )

(3)

Em que S torna-se sempre positivo devido ao expoente quadrtico. O valor da aptido ir aumentar at atingir um valor mximo, ou seja, para um nmero maior de iteraes, a diferena entre a nova variao e a anterior, ser minimizada at um erro admissvel estimado para o problema.

3. ALGORITMO Todas as linhas de programao abaixo foram feitas utilizando o software MATLAB na verso 7.1. Inicialmente, foram atribudos valores necessrios para inicializao do algoritmo e para os parmetros determinados pelo usurio. Assim, a preciso dos dados utilizados de 10 e a mxima variao admissvel da ordem de 10-3. Foi escolhida uma populao de 33 elementos, quantidade suficientemente grande para que os dados

aleatrios estejam bem distribudos, e um nmero binrio de 13 bits, como explicado anteriormente. A taxa de mutao foi fixada em 10% da populao (um nmero considerado alto, mas que ajuda a fugir de mnimos locais) e com 80% de chance de que ocorra crossover entre os cromossomos. Foi definido que a variao seria inicialmente apenas como forma de dar procedimento ao mtodo, e um contador de geraes foi adicionado para que o algoritmo se repetisse at que um valor mximo de 1000 geraes fosse atingido.

Com isso, necessrio conhecer o valor do mnimo que se deseja encontrar, o que pode ser feito utilizando o comando min(min(Z)) para a matriz originada com o comando peaks. Uma populao de indivduos ser gerada com as coordenadas aleatrias de nmeros naturais variando entre 0 e 6000 como explicado anteriormente e os dados obtidos utilizando a Eq. 1.

O processo iterativo ento iniciado at que se atinjam as condies necessrias estipuladas acima. O cromossomo obtido usado o comando dec2bin em que os parmetros de entrada so as coordenadas do individuo e a quantidade de bits admitida ( importante inserir a quantidade de bits utilizada para que todos os cromossomos tenham o mesmo tamanho, por exemplo: o valor 2 pode ser representado como 10 em 2 bits ou 0000000000010 em 13 bits). A aptido tambm calculada, relativamente aos dados de entradas inicialmente estimados aleatoriamente.

De todas as aptides encontradas, o indivduo que ir sobreviver ao processo de seleo ser o de maior aptido, e far parte da nova gerao de indivduos gerados.

O crossover ir acontecer entre dois indivduos escolhidos por sorteio em que a probabilidade de serem escolhidos ser maior to quanto maior a sua aptido associada. Para isso, faz-se um sorteio baseado no valor da soma de todas as aptides e o cromossomo escolhido aquele que se encontra na posio. Por exemplo, seguindo o modelo apresentado na Fig. 3, mais provvel que um nmero escolhido entre 0 e 100 faa parte do grupo em azul do que os demais.

Figura 3 Esquema representativo do sorteio probabilstico

O processo de cruzamento de informaes ser realizado at que se atinja uma quantidade de indivduos igual populao da gerao anterior. Para isso, foi criado o algoritmo mostrado abaixo.

O mesmo procedimento ser realizado para o segundo cromossomo do par em que poder ocorrer o crossover.

Depois de selecionados os indivduos, necessrio saber se ocorrer ou no o crossover, baseado na taxa admitida anteriormente, escolhe-se um valor aleatrio que

dever atender ou no margem considerada. Em caso positivo, deve-se escolher ento o ponto em que ocorrer a troca de material com um novo nmero natural escolhido aleatoriamente. Definido esse ponto, tem-se dois filhos com material gentico igual ao cruzamento dos pais. Uma varivel foi criada para definir se ocorreu ou no o crossover, definindo com 1 para ocorrncia e 0 para o contrrio.

Para evitar que os filhos tenham o mesmo material gentico do pai, faz-se com que o crossover no acontea no caso de que os cromossomos escolhidos sejam os mesmos.

A mutao ocorrer apenas se o crossover acontecer e dentro da margem de mutao estipulada, ou seja, um novo nmero aleatrio obtido e se a mutao ocorrer, o bit que for igual a 1 ir se converter para 0 e vice-versa. Porm, a mutao s deve acontecer em um dos filhos, ento esse indivduo tambm sorteado.

O cdigo do filho originado possui 26 bits, sendo que 13 deles corresponde coordenada x e os outros 13 correspondem coordenada y. Com isso, deve-se dividir esse cdigo para que sejam convertidos em valores decimais e acrescentados matriz de indivduos nas suas correspondentes posies.

Quando a quantidade de indivduos for atingida, ento tem-se uma nova gerao, consequentemente, novos dados e aptides associadas. A variao atualizada e avaliada.

O ponto que possui maior aptido sempre selecionado pelo elitismo e armazenado na primeira linha da matriz de indivduos, ou seja, esse o ponto mais prximo do mnimo da funo peaks, que representa a resposta encontrada. Como se trata de um processo estocstico com entradas aleatrias, os resultados podem ser dar em muitas ou poucas iteraes cada vez que o processo for reinicializado, mas o progresso pode ser acompanhado para os dados encontrados como mostrado abaixo. Nesse caso, foi encontrado o ponto (x,y) = (0.228, -1.626) que origina um mnimo z = - 6.551.

-1

-1

-2

-2

(a)

-3 -3
3

-2

-1

(b)

-3 -3
3

-2

-1

-1

-1

-2

-2

(c)

-3 -3

-2

-1

(d) -3-3

-2

-1

Figura 4 Possveis mnimos da funo da gerao 1, 250, 500 e 750

Nota-se pela Fig. 4 que os indivduos tendem a se aproximar do mnimo a cada gerao. Em algumas geraes, possvel que alguns indivduos se afastem espontaneamente como na Fig. 4c, isso ocorre principalmente devido mutao que pode acontecer em alguns indivduos para fugir de mnimos locais, mas que acabam se adaptando ao mnimo global com o passar das geraes, como mostrado na Fig. 4d. O mesmo procedimento foi utilizado para dados com menor quantidade de casas decimais e quantidade de bits, mas a resposta pode tender a mnimos locais pela falta de preciso. Tambm importante que a populao tenha tamanho suficiente para abranger uma boa rea pelo mesmo motivo.

4. CONCLUSO O algoritmo se mostra bastante eficaz em relao ao resultado obtido, mas a quantidade de iteraes necessrias pode deixar o processo lento dependendo dos dados iniciais, atingindo a quantidade mxima de iteraes estipulada em algumas vezes.

Você também pode gostar