You are on page 1of 7

UNIVERSIDADE FEDERAL DE UBERLNDIA Faculdade de Engenharia Eltrica

Prof: Keiji Yamanaka Aluno: Roberto Batista Neto

2 Trabalho Algoritmos Genticos

Uberlndia, 04 de Setembro de 2013

2 Trabalho Algoritmos Genticos 2013

1 Introduo
Os algoritmos genticos (AG) so um ramo dos algoritmos evolucionrios e como tal podem ser definidos como uma tcnica de busca baseada num metfora do processo biolgico de evoluo natural. Nesse contexto o objetivo desse trabalho fazer um estudo do funcionamento e implementao computacional de um algoritmo gentico. O estudo ser realizado utilizando como guia a seo 3 do artigo A Survey of Genetic Algorithms do autor M. Tomassini, onde exemplificado de forma didtica o processo de se encontrar o mnimo de uma funo utilizando (AG).

2 GA bsico
Pode-se definir que algoritmos genticos so algoritmos de busca baseados nos mecanismos de seleo natural e gentica. Eles combinam a sobrevivncia entre os melhores como uma forma estruturada de troca de informao gentica entre dois indivduos para formar uma estrutura heurstica de busca. A sua construo pode ser resumida algoritmicamente em uma viso de alto nvel atravs dos seguintes passos: 1. 2. 3. 4. Inicialize a populao de cromossomos. Avalie cada cromossomo na populao. Selecione os pais para gerar novos cromossomos. Aplique os operadores de recombinao e mutao a estes pais de forma a gerar os indivduos da nova gerao. 5. Apague os velhos membros da populao. 6. Avalie todos os cromossomos e insira-os na populao. 7. Se o tempo acabou, ou o melhor cromossomo satisfaz os requerimentos e desempenho, retorne-os, caso contrrio, volte para o passo 2. Tendo os seguintes aspectos fundamentais a serem considerados: Uma representao cromossomial que seja adequada ao problema; Uma funo de avaliao que penalize solues implausveis para o nosso problema e que avalie satisfatoriamente o grau de adequao de cada indivduo como soluo do problema em questo.

2 Trabalho Algoritmos Genticos 2013


3 Implementao GA
A implementao do algoritmo gentico foi realizada em script do Matlab com uma interface grfica para utilizao do usurio. A interface bastante simples e intuitiva como pode ser visualizado na Figura 1, em que ser includa mais funes e recursos ao mesmo tempo que aprimorado o layout ao longo do curso. Como entrada de dados temos os seguintes parmetros de entrada: - Tamanho da populao; - Nmero de geraes; - Probabilidade de cruzamento; - Probabilidade de mutao; - Limite inferior ao qual se deseja analisar a funo analisada; - Limite superior ao qual se deseja analisar a funo analisada; - Numero de bits que representa a preciso desejada; Retornando como sada para o usurio o valor mdio de x e da funo obtidos na iterao do programa que corresponde a ltima gerao.

Figura 1

O boto Start inicia o programa e a cada gerao possvel ver os dados no grfico e convergindo at o resultado final como pode ser visualizado na Erro! Fonte de referncia no encontrada.. Para um nmero pequeno de geraes tem-se uma maior quantidade de

2 Trabalho Algoritmos Genticos 2013


indivduos distante da resposta esperada, a medida que aumenta a quantidade de geraes os indivduos tendem a ficam prximos ao mnimo da funo.

(a)

(b)

(c)

Figura 2: Distribuio da populao para (a) uma gerao (b) dez geraes (c) cem geraes.

possvel tambm escolher qual intervalo alm do sugerido de [0-512] que se deseja obter o mnimo da funo. Para isso basta mudar os valores de limite inferior e do limite superior, para anlise do intervalo de [250 350] por exemplo, o programa retorna como valor mdio de x 299,47 e -299,26 para funo como mostrado na Figura 3 possvel ver os pontos aglutinados em torno desses valores.

Figura 3: Convergncia do algoritmo para o intervalo [250 - 350].

2 Trabalho Algoritmos Genticos 2013


3.1 Descrio computacional implementao GA
Como j descrito no item 2 os passos de implementao de um GA a seguir comentado como se deu a implementao computacional de cada passo. 3.1.1 Representao cromossomial A representao cromossomial fundamental para o algoritmo gentico . Basicamente, ela consiste em uma maneira de traduzir a informao do problema em uma varivel de ser tratada pelo computador. Para implementao do software desse trabalho foi utilizado a representao binria, isto , um cromossomo uma sequncia de bits sendo que o usurio pode optar pelo tamanho da sequncia como j explicado anteriormente. Como o problema proposto achar o mnimo da funo f=-abs(x*sin(sqrt(abs(x)))), para fazer a avaliao, isto , aplicar os indivduos na funo indicada necessitou-se fazer uma converso de bit para decimal. Assim foi implementado a seguinte converso:
popdec= bi2de(popNova)*(b-a)/(2^stringTam)+a;

Sendo a e b limites inferiores e superiores respectivamente e stringTam o nmero de bits utilizado na representao do cromossomo. 3.1.2 Escolha da populao inicial A populao inicial foi gerada de forma aleatria em uma matriz com nmero de linhas do tamanho da populao (popTam) e colunas do tamanho do nmeros de bits digitado pelo usurio (stringTam) como pode se ver com a linha do cdigo:
pop=round(rand(popTam,stringTam));

3.1.3 Seleo O mtodo de seleo dos pais deve simular o mecanismo de seleo natural que atua sobre as espcies, em que os pais mais capazes geram mais filhos, ao mesmo tempo em que pais menos aptos tambm podem gerar descendentes. Consequentemente deve-se privilegiar os indivduos com funo de avaliao alta no caso especifico desse trabalho seria os indivduos quem geram valores mais prximo do mnimo da funo. Foi utilizado o mtodo da roleta viciada para realizar essa funo de seleo com a seguinte rotina:
% Roleta for i=1:popTam r = rand; for j=1:popTam if r <= c(j) popNova(i, :) = pop(j,:); break end end end

2 Trabalho Algoritmos Genticos 2013


3.1.4 Operador de crossover O operador de crossover implementado foi o mais simples, denominado crossover de um ponto. Um ponte de corte aleatrio define onde ser realizado o trecho de permutao entre os pais para gerar os filhos, segue a rotina implementada:
% Crossover for i=1:2:popTam-1 pai1= popNova(i,:); mae1= popNova(i+1,:); if(rand<pc/100) point = random('unid', stringTam-1); filho1(:,1:point)=pai1(:,1:point); popNova(i,point+1:end)=mae1(:,point+1:end); filho2(:,1:point)=mae1(:,1:point); popNova(i+1,point+1:end)=pai1(:,point+1:end);

end end

3.1.5 Operador de mutao O operador mutao modifica um bit em uma posio aleatria. A probabilidade de ocorrncia da mutao indicada que seja pequena, da ordem de 1 a 10%. Segue a rotina:
% Mutao for i=1:popTam r = rand; if (r <= pm/100); cpoint = random('unid', stringTam); popNova(i, cpoint) = abs(popNova(i, cpoint)-1); end end

Caso no seja satisfeita o critrio de parada que no caso da implementao ficou condicionada ao nmero de geraes, realizados os passos anteriormente a partir da avaliao da funo.

2 Trabalho Algoritmos Genticos 2013

4 BIBLIOGRAFIA
[1] GOLDBERG, David E. Genetic Algorithms in Search, Optimization and Machine Learning. Massachusets, Addison-Wesley, 1989. [2] Linden, Ricardo. Algoritmos Genticos. 2 ed. Rio de Janeiro: Brasport, 2008.

You might also like