You are on page 1of 42

Mtodos Heursticos

Teoria e Implementaes

Tutorial desenvolvido por: Fabrcio Bueno

IFSC/Ararangu, 2009

Sumrio
Mtodos Heursticos.............................................................................................................................1 1Algoritmos Genticos....................................................................................................................2 1.1Terminologia..........................................................................................................................3 1.2Passos do algoritmo...............................................................................................................4 1.2.1Seleo............................................................................................................................5 1.2.2Cruzamento....................................................................................................................6 1.2.3Mutao..........................................................................................................................7 1.3Variaes das Etapas dos Algoritmos Genticos...................................................................8 1.3.1Outras Estratgias de Crossover.....................................................................................8 1.3.2Outras Estratgias de Seleo.......................................................................................10 1.3.3Outras Estratgias de codificao.................................................................................11 1.3.4Outras Estratgias de Formao de Populaes...........................................................14 1.4Exemplo: Algoritmo gentico para resolver equaes de 1 grau.......................................15 2Simulated Annealing....................................................................................................................23 2.1Passos do Algoritmo............................................................................................................23 2.2Exemplo: Um SA para resolver equaes de 1 Grau..........................................................25 1.5Exerccios.............................................................................................................................30 Apndice A Cdigo Fonte do Algoritmo Gentico para Resoluo de Equaes de 1 Grau........31 Apndice B Cdigo Fonte do SA para Resoluo de Equaes de 1 Grau...................................37

ndice de Figuras
Figura 1: Fluxograma geral de um algoritmo gentico........................................................................5 Figura 2: Cruzamento entre dois cromossomos...................................................................................7 Figura 3: Mutao de genes em um cromossomo................................................................................8 Figura 4: Crossover de dois pontos......................................................................................................9 Figura 5: Codificao de solues usando nmeros reais..................................................................12 Figura 6: Diagrama de disperso do nmero de geraes..................................................................21 Figura 7: Diagrama de disperso dos tempos de execuo................................................................22 Figura 8: Diagrama de disperso de tempos de execuo do SA.......................................................28 Figura 9: Diagrama de disperso dos resultados do SA.....................................................................28

ndice de tabelas
Tabela 1: Resultados de 15 populaes para o problema da equao de 1 grau...............................20 Tabela 2: Resultados de 15 execues do SA para o problema da equao de 1 grau....................27

Mtodos Heursticos
Mtodos heursticos1 so algoritmos exploratrios que buscam resolver problemas. Geralmente no envolvem a implementao computacional de um conhecimento especializado (por exemplo, um mtodo heurstico, para resolver uma equao de segundo grau, no usaria, necessariamente, a frmula de Bscara, mas buscaria, por outros mtodos, uma soluo que atendesse equao). Por este motivo, muitas vezes, esses mtodos so classificados como busca cega. Uma soluo tima de um problema nem sempre o alvo dos mtodos heursticos, uma vez que, tendo como ponto de partida uma soluo vivel, baseiam-se em sucessivas aproximaes direcionadas a um ponto timo. Logo, estes mtodos costumam encontrar as melhores solues possveis para problemas, e no solues exatas, perfeitas, definitivas. Esta subjetividade, ou falta de preciso dos mtodos heursticos, no se trata de uma deficincia, mas uma particularidade anloga inteligncia humana. Muitas vezes, no cotidiano, resolvemos diversos problemas sem conhec-los com preciso. Alguns exemplos: ao estacionarmos um veculo, no nos preocupamos com o tamanho exato do mesmo e das vagas disponveis; ao adoarmos uma bebida, pouco conhecemos as propriedades do soluto e do solvente; ao tentarmos mover ou levantar um objeto, pouco nos preocupamos com leis da fsica que possam auxiliar ou comprometer a ao. Nestas e em diversas outras situaes, a melhor soluo imediata encontrada e adotada, em detrimento de solues comprovadamente timas e precisas. Em (Colin, 2007), h uma tima analogia entre os mtodos heursticos e o problema de localizar, empiricamente, o ponto mais alto da Terra. Para resolver este
1 Heurstica um conjunto de regras e mtodos que conduzem descoberta, inveno e resoluo de problemas.

problema, partiria-se de um ponto vivel, ou seja, de qualquer lugar na superfcie terrestre, em busca das montanhas mais altas. Neste processo, vrias montanhas seriam escaladas e suas alturas comparadas. O ponto mais alto iria progressivamente aumentando com as novas descobertas (os chamados timos locais). At que em determinado momento as buscas se dessem por encerradas por algum motivo (a no descoberta de pontos mais altos por um longo perodo, falta de segurana, restries de tempo ou financeiras) e o ponto mais alto fosse definido, mesmo sem uma comprovao cientfica, mesmo que outro mais alto possa ainda estar oculto. Assim so os mtodos heursticos. Uma busca contnua e emprica, com vrios timos locais, cujo resultado o melhor que se pode encontrar sob determinadas condies. Estudaremos neste captulo os mtodos: algoritmos genticos e simulated annealing.

1 Algoritmos Genticos

Este mtodo baseado na gentica (Colin, 2007), como o prprio nome j diz, e na seleo natural. uma simulao computacional iterativa que faz analogia a um processo evolutivo de vrias geraes de uma populao (Santos, 2002), onde cada indivduo uma representao abstrata de uma soluo do problema, a seleo natural um critrio de escolha das melhores solues e eliminao das ruins, o cruzamento e a mutao so meios para a obteno de novas solues. Os algoritmos genticos tm caractersticas bastante peculiares em relao a outros mtodos de busca:

So baseados em um conjunto de solues possveis; 2

No envolvem modelagem do problema (a modelagem restrita s solues);

O algoritmo apresenta como resultado uma populao de solues (classificadas qualitativamente pela seleo natural) e no apenas uma;

Trata-se de um mtodo probabilstico e no determinstico. Em outras palavras, uma mesma populao dificilmente apresentar os mesmos resultados para um mesmo problema.

1.1 Terminologia

Os algoritmos genticos tomam emprestado vrios termos da gentica, com a qual mantm conceitos anlogos. Os termos principais so:

Populao: conjunto de cromossomos ou solues; Cromossomo: conjunto de genes. Cada cromossomo representa uma soluo do problema. Muitas vezes tomado como sinnimo de indivduo;

Gene: menor unidade de informao em um cromossomo. Cada gene representa uma varivel da soluo do problema;

Locus: posio de um gene em um cromossomo. Alguns genes podem ter seu locus alterado em processos de cruzamento ou mutao;

Cruzamento (ou crossover): processo de reproduo sexuada em que h combinao de genes dos cromossomos originando um ou mais descendentes. O cruzamento o principal responsvel pela variabilidade gentica; 3

Mutao: anomalias que causam a alterao aleatria de genes, seja na sua localizao, seja no seu contedo;

Seleo natural: processo que elimina os indivduos menos adaptados (ou aptos) em relao cada gerao da populao;

Gerao: iterao do algoritmo gentico; Aptido (ou fitness): indicador qualitativo de um indivduo. O grau de aptido de um indivduo obtido a partir de uma funo objetivo;

Funo objetivo: funo matemtica que avalia as solues (indivduos) em relao ao problema.

1.2 Passos do algoritmo


Embora haja uma grande variedade e implementaes, a estrutura geral de um algoritmo gentico basicamente a mesma. Dado que a representao de solues dos problemas devem ser modeladas em forma de cromossomos, temos os seguintes passos:

Criar populao inicial: que pode ser gerada aleatoriamente com m cromossomos; Nova Gerao: criar uma nova gerao (de tamanho fixo (m) ou varivel) 1 Selecionar n cromossomos para reproduo; 2 Realizar cruzamentos de forma aleatria; 3 Permitir que mutaes aleatrias ocorram em alguns dos cromossomos gerados; 4 Selecionar os cromossomos melhores adaptados para a prxima gerao e eliminar os menos adaptados (anlogo seleo natural); 5 Substituir os indivduos eliminados por novos indivduos; Critrio de Parada: Caso a soluo atenda a um critrio de parada, ou caso seja detectada convergncia da populao, PARE. Caso contrrio v para o passo NOVA GERAO. 4

Para melhor compreenso, estes passos podem ser visualizados na Figura 1.

Populao Inicial

Nova Gerao

no atendido

Critrio de Parada

FIM
atendido

Figura 1: Fluxograma geral de um algoritmo gentico

As maiores variaes que se pode encontrar em algoritmos genticos envolvem, normalmente, a seleo de indivduos, cruzamento e mutao, e critrios de parada. Estas variaes so baseadas em particularidades dos problemas a serem resolvidos. Nas prximas subsees veremos em mais detalhes os mtodos de seleo, cruzamento e mutao.

1.2.1 Seleo

Os mtodos de seleo podem ser usados tanto na escolha de quais indivduos sero progenitores, quanto na escolha dos melhores adaptados para passar prxima gerao (Santos, 2002). A seleo baseada em um mtodo de avaliao de aptido de indivduos. Quanto mais apto um indivduo, maior sua probabilidade de realizar cruzamentos (uma vez que indivduos bem adaptados tendem a criar descendentes tambm aptos) e

melhor sua resposta em relao ao problema (se um algoritmo gentico chegar a uma soluo tima, o cromossomo que representa esta soluo ter aptido mxima). A aptido de um indivduo pode ser obtida pela equao: fi

Aptidoi =

fi
i

Onde i o ndice que identifica um indivduo na populao, m o tamanho da populao e f i uma funo objetivo relacionada ao problema. O resultado desta equao consiste em uma probabilidade, logo um indivduo com aptido alta tem maior probabilidade de ser escolhido.

1.2.2 Cruzamento

Os mtodos de cruzamento so responsveis pela reproduo de cromossomos e a mistura de genes, o que garante a diversidade e a constante evoluo populacional. Basicamente, este mecanismo consiste em selecionar os pontos de cruzamento nos progenitores, separar os cromossomos, e trocar as partes destes cromossomos (Goldbarg e Luna, 2000). Este mecanismo tambm chamado de crossover (Santos, 2002). A Figura 2 ilustra o um cruzamento de dois cromossomos, cujos genes, a ttulo de exemplo, consistem em nmeros binrios. Note que foi selecionado apenas um ponto de cruzamento, entre o quinto e sexto gene, ou locus, e os descendentes receberam as cargas genticas trocadas com base neste ponto.

Progenitores 100110001 110001010

Descendentes 110000001 100111010

Figura 2: Cruzamento entre dois cromossomos

Este mecanismo pode sofrer uma srie de variaes. Uma delas a definio de vrios pontos de cruzamento, podendo gerar um nmero crescente de descendentes por cruzamento. Muitas vezes, ao processo de cruzamento associado o mtodo de mutao.

1.2.3 Mutao

A mutao consiste em selecionar um ou mais locus cujos genes devem ser alterados. Geralmente ocorre na criao do cromossomo, ou seja, durante ou logo aps o cruzamento. A mutao, de forma anloga biologia evolutiva, um importante fenmeno para a diversidade e evoluo, podendo ser benfica, tornando o indivduo mais apto, ou malficas, condenando o indivduo a no sobreviver seleo natural. Portanto, ela pode desencadear o surgimento de solues melhores, bem como solues inferiores ou inviveis. A Figura 3 ilustra duas diferentes mutaes em um mesmo cromossomo. Note que em negrito esto nos locus escolhidos para a troca de genes (o terceiro gene passou para o lugar do oitavo gene, e este passou a ocupar o terceiro locus). J o locus sublinhado teve seu gene alterado de 0 para 1.

Cromossomo antes da mutao 101001001

Cromossomo aps a mutao 100011011

Figura 3: Mutao de genes em um cromossomo.

Apesar de sua importncia para a diversidade e evoluo, a mutao excessiva em uma populao pode acarretar vrias solues anmalas, impedindo a evoluo da populao.

1.3 Variaes das Etapas dos Algoritmos Genticos

Baseado nos conceitos apresentados, passaremos a analisar variantes das etapas dos algoritmos genticos. Inicialmente trataremos das variaes dos operadores cruzamento. A seguir sero tratadas outras possibilidades de seleo e codificao. Por fim, sero analisadas algumas alternativas para a formao de populaes.

1.3.1 Outras Estratgias de Crossover

Dentre as vrias alternativas existentes, nesta seo analisaremos o crossover de dois pontos e o crossover uniforme.

Crossover de dois pontos

No crossover de dois pontos, apenas o material gentico entre os locus escolhidos so trocados. Na Figura 4, os locus escolhidos foram o terceiro e o sexto. Pode-se notar

que os genes esquerda e direita do intervalo escolhido permanecem inalterados, ao contrrio dos genes dentro do intervalo.

Progenitores 100110001 110001010

Descendentes 100001001 110110010

Figura 4: Crossover de dois pontos

Esta variao do crossover tende a tornar o algoritmo gentico mais eficiente, uma vez que contribui para a variabilidade gentica (Linden, 2006). Este mtodo abrange tambm o crossover de um ponto, visto anteriormente, caso o primeiro ou ltimo gene sejam escolhidos.

Crossover uniforme

O crossover uniforme consiste em um sorteio binrio para cada gene, definindo como os genes de cada progenitor sero distribudos entre os descendentes. Por exemplo, caso seja sorteado 1 para um determinado gene, o primeiro descendente recebe o gene do primeiro progenitor e o segundo descendente recebe o gene do segundo progenitor. Caso seja sorteado 0, o processo se inverte. Este sorteio realizado para cada um dos genes dos cromossomos. Esta estratgia de crossover tende a prover maior diversidade, porm tem um 9

custo de processamento mais alto, uma vez que h um sorteio para cada gene de cada indivduo.

1.3.2 Outras Estratgias de Seleo

As estratgias de seleo podem acelerar ou retardar tanto a busca pela soluo tima, quanto a convergncia, uma vez que definem os cromossomos que iro gerar e participar da prxima gerao. Dada a importncia da seleo analisaremos algumas variaes.

Seleo por Torneio

Neste mtodo, h um torneio entre indivduos selecionados aleatoriamente, sem qualquer favorecimento aos melhores adaptados (Linden, 2006). Uma vez selecionados os indivduos, os mais aptos vencero o torneio. Devem ser definidos previamente o nmero de indivduos a participarem de cada torneio e quantos torneios sero realizados. A vantagem deste mtodo a impossibilidade de alguns cromossomos dominarem a populao, o que levaria a uma rpida convergncia.

Seleo por Vizinhana

Neste mtodo, tambm chamado de seleo local, so definidas vizinhanas aleatrias, ou seja, intervalos aleatrios de indivduos. Os indivduos destas vizinhanas 10

podero realizar crossover entre si. Caso haja interseo entre vizinhanas (indivduos em mais de uma vizinhana), os indivduos destas podero interagir entre si. As intersees so bastante desejveis, uma vez que impede que o crossover seja segmentado em pedaos pequenos da populao, o que acarretaria em baixa variabilidade.

1.3.3 Outras Estratgias de codificao

O mtodo de codificao de solues apresentado foi a representao binria. Porm, esta representao apresenta algumas limitaes(Linden, 2006):

Variveis contnuas e de alta preciso podem resultar em cromossomos excessivamente grandes;

O nmero de solues codificadas sempre uma potncia de dois: 2 k , onde k o nmero de genes de um cromossomo. Caso a varivel representada descreva um nmero finito de estados que no seja uma potncia de dois, vrias solues possveis sero invlidas2;

Portanto podemos fazer uso de outras estratgias de codificao.

2 Por exemplo: uma varivel pode ter apenas cinco estados; neste caso sero necessrios dois genes, pois 23 = 8. Logo, trs solues sero invlidas, o que exige um certo tratamento, tornando o algoritmo mais complexo e menos eficiente.

11

Representao numrica

Em muitos problemas pode ser mais conveniente o uso cromossomos com nmeros reais ao invs de binrios. A representao numrica no traz limitaes quanto a preciso e permite que os cromossomos tenham tamanho mnimo. Utilizando representao numrica, o cromossomo do problema da equao de 2 grau teria apenas dois genes, um para cada soluo. A Figura 5 apresenta algumas solues codificadas em nmeros reais.

1 20 8,5 0 2,5 4

5 3 2 -15 3 1

Figura 5: Codificao de solues usando nmeros reais

As vantagens desta estratgia de codificao so: a possibilidade de representar casas decimais, nmeros negativos e o tamanho reduzido dos cromossomos. Entretanto os operadores genticos devem ser adaptados:

O crossover ser mais simples, permitindo apenas a permuta dos pares de genes de cada cromossomo;

12

A mutao envolver a inverso dos genes ou a alterao do valor contido neles;

A representao numrica flexvel e abrangente, podendo se utilizada em vrios tipos de problemas que envolvam variveis quantitativas. Porm, quando se trabalha com variveis categricas, um outro tipo de representao necessria.

Representao categrica

Na representao categrica, so codificados conjuntos valores predefinidos. So exemplos de variveis categricas:

Direes: esquerda, direita, frente e trs; ou norte, sul, leste e oeste; Bases de DNA: A, C, G e T; Substncias qumicas: Na, Cl, O, N, H e outros.

Esta representao pode codificar solues de problemas como:

Caminho para sair de um labirinto; Busca de um genoma; Identificao ou composio de uma substncia qumica;

O operador gentico que necessitaria de uma maior adaptao seria a mutao, uma vez que, ao alterar o contedo de um gene, h um conjunto limitado de

13

possibilidades para mutao.

1.3.4 Outras Estratgias de Formao de Populaes

Visando tirar o melhor proveito das qualidades de cada gerao, pode-se adotar diferentes alternativas para se compor uma populao. O tamanho um importante critrio na formao e evoluo de uma populao, pois uma populao muito pequena dificilmente alcanar uma grande variedade gentica. J uma populao muito grande (embora tenha maior diversidade) tornar a execuo bastante pesada, afetando a eficincia do algoritmo gentico. Infelizmente no existe um tamanho padro indicado para todos os tipos de problema. Modelagens com pequenos cromossomos podem ter grandes populaes sem perda de eficincia. J modelagens com grandes cromossomos devem ter populaes de tamanho limitado devido ao custo de processamento. Portanto, deve-se obter empiricamente o tamanho ideal para cada problema, podendo-se adotar um valor inicial para testes, valor este baseado no tamanho do cromossomo. Por exemplo: 20 * Tamanho do Cromossomo. Outra alternativa adotar populaes de tamanho varivel. Isto pode ser feito associando uma idade a cada indivduo. A medida que a idade vai aumentando, a cada gerao, aumenta a probabilidade de morte dos indivduos. Portanto, o tamanho da populao varia com a taxa de natalidade (baseada nos critrios de seleo e crossover) e com a taxa de mortalidade. Alm das definies de tamanho, pode-se adotar a tcnica de elitismo. Nesta tcnica, normalmente integrada ao processo de seleo, determinado nmero de melhores indivduos deve passar a prxima gerao, garantindo que boas solues 14

permaneam na populao e possam gerar solues melhores nas prximas geraes.

1.4 Exemplo: Algoritmo gentico para resolver equaes de 1 grau.


Uma equao de 1 grau completa dada no seguinte formato:

bxc=0

Uma equao do 1 grau pode ser facilmente resolvida por operaes matemticas simples. Mas vamos desenvolver um exemplo didtico de algoritmo gentico para introduzir o leitor implementao deste mtodo.

Equao utilizada

Para este exemplo foi usada a equao abaixo, cuja cuja soluo 5. 2x10=0

Modelagem da soluo

As solues sero representadas por nmeros binrios de seis bits. Logo, cada cromossomo ser constitudo por seis genes, cujos valores podem ser 1 ou 0. Estes nmeros binrios so convertidos para nmeros inteiros e posteriormente para nmeros

15

reais. Apesar da soluo desta equao ser inteira, interessante trabalhar com nmeros reais, pois vrios problemas trabalham com variveis contnuas.

Criao da populao inicial

A populao inicial foi criada com o uso funes geradoras de nmeros aleatrios. Sendo cada gene de cada indivduo definido aleatoriamente, bastante provvel que haja uma significativa variabilidade populacional na primeira gerao. O tamanho da populao foi fixado em cinquenta indivduos. Seleo

A seleo foi baseada na funo objetivo:

f i=

1 2
2x10

Esta funo ser aplicada a cada cromossomo. Quanto mais prximo a soluo representada estiver de uma da soluo tima, mais prximo de 1 ser o resultado desta funo. Portanto, quando um cromossomo representar uma das solues timas, o resultado da funo ser exatamente 1. A aptido de cada cromossomo ser obtida a partir da frmula geral:

16

Aptidoi =

fi

fi
i

Evidentemente, quanto mais prximo das solues timas, maior ser a aptido. H duas situaes em que um indivduo pode ser escolhido:

A primeira determinstica: O indivduo cuja aptido for maior que a probabilidade de seleo (parmetro pr-definido que se tornar cada vez mais restritivo a cada gerao, forando a evoluo da populao) ser selecionado;

A segunda probabilstica: Para o indivduo de aptido menor que a probabilidade de seleo, ser gerado um nmero aleatrio. Se este nmero for maior que a aptido do indivduo, ele ser selecionado. Este critrio tende a selecionar indivduos menos adaptados (uma vez que menor a probabilidade de um nmero aleatrio ser maior que a aptido de indivduos bem adaptados), visando garantir a diversidade gentica e evitar a convergncia da populao.

Cruzamento

Para cada cruzamento so escolhidos, aleatoriamente, dois indivduos j previamente selecionados. Em seguida, so definidos, tambm aleatoriamente, dois locus para ento as cargas genticas serem trocadas gerando dois novos indivduos, conforme exibido na Figura 4.

17

Mutao

Neste exemplo, foi definida a taxa, ou porcentagem, de mutao na populao, ou seja, um nmero fixo de mutaes ir ocorrer a cada gerao. Com base nesta taxa dada a probabilidade de um indivduo sofrer ou no mutao. Por exemplo, uma taxa de 10% indica que cada indivduo possui probabilidade 0,1 de sofrer uma mutao. J o locus de mutao definido aleatoriamente e os bits nestes locais so invertidos, conforme exibido na Figura 3. Em boa parte das publicaes, a mutao totalmente aleatria, tando quanto taxa de ocorrncia a cada gerao, quanto probabilidade individual. Porm, a parametrizao deste operador gentico permite um maior controle sobre a diversidade e evoluo da populao, o que pode ser desejvel quando se est adaptando um algoritmo gentico para diferentes problemas, ou quando se busca estabelecer parmetros otimizados de busca.

Substituio

Os indivduos no selecionados para o cruzamento so substitudos pelos novos cromossomos. Desta forma, a populao mantm tamanho constante e permite que indivduos com alta aptido sobrevivam a vrias geraes3.

Critrio de parada

3 A aptido relativa, ou seja, ela varia de acordo com a evoluo de uma populao. Logo, um indivduo bem adaptado em uma determinada gerao, pode vir a ter uma baixa aptido em geraes futuras.

18

O critrio de parada baseado em solues quase timas. Quando uma soluo se mantm como a melhor durante dez geraes o algoritmo encerrado. Este critrio no garante soluo tima, tampouco garante que um timo local seja encontrado. Como ocorre em qualquer implementao de algoritmos genticos, h risco de a populao convergir para um timo local, o que pode ser evitado com a variabilidade populacional.

19

Performance do Algoritmo

Foram criadas quinze populaes, ou seja, o algoritmo gentico foi executado 15 vezes para coleta e anlise dos dados exibidos na Tabela 1.

Tabela 1: Resultados de 15 populaes para o problema da equao de 1 grau

Populao 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Mximo Mnimo Mdia Coeficiente de Variao

Nmero de Geraes 25 21 17 19 31 19 29 29 31 16 21 21 30 16 13 31 13 22,53 0,27

Tempo de Execuo (s) 11,94 9,82 7,98 8,78 14,33 8,65 13,01 13,27 14,61 7,22 10,1 9,69 13,78 7,4 6,17 14,61 7,22 10,45 0,27

Todos as populaes encontraram uma soluo tima ou quase tima, havendo aproximao nestes casos apenas na terceira casa decimal. Houve variao apenas no

20

nmero de geraes e tempo de execuo de cada populao. Em outras palavras, todas as populaes foram eficazes, porm nem todas foram eficientes. Em relao ao nmero de geraes, houve valores extremos de 13 e 31, com mdia de aproximadamente 22 geraes. J os tempos de execuo variaram entre os extremos 7,22 e 14,61 segundos. A mdia de tempo foi de 10,45 segundos. Os diagramas de disperso destes dados so exibidos na Figura 6 e Figura 7. Tanto a anlise destes diagramas, quanto a anlise dos coeficientes de variao(Vieira, 1999) da Tabela 1, mostram a mesma disperso do tempo de execuo e nmero de geraes4. Entretanto bastante bvio que o nmero de geraes e o tempo de execuo so variveis com forte correlao5.

Disperso de Tempos de Execuo


16 14 12 10 8 9 9 7 14 13 15 13 10 14

Tempos de Execuo

12 10 8 6 4 2 0 0

10 7 6

10

11

12

13

14

15

16

Populao

Figura 6: Diagrama de disperso do nmero de geraes

4 Ao contrrio do nmero de geraes, os tempos de execuo podem variar de acordo com a capacidade de processamento dos recursos computacionais utilizados. Quanto maior o poder de processamento, menor ser a variao dos tempos de execuo. Este algoritmo gentico foi executado em um Pentium 4 de 3GHz e 512MB de RAM. 5 A correlao destas variveis, para o recurso computacional utilizado, foi 1, o que indica uma forte correlao.

21

Disperso de Nmero de Geraes


35 30 31 25 21 17 19 19 16 21 21 16 13 29 29 31 30

Nmero de Geraes

25 20 15 10 5 0 0

10

11

12

13

14

15

16

Populao

Figura 7: Diagrama de disperso dos tempos de execuo

O cdigo fonte (em Octave) deste algoritmo gentico est disponvel no Apndice A.

22

2 Simulated Annealing

A metalurgia utiliza um processo de tratamento trmico visando alterar a estrutura cristalina de metais conferindo-lhes caractersticas mecnicas e estruturais desejadas. Este processo, chamado de recozimento, consiste em aquecer continuamente metais at determinada temperatura, e, posteriormente, resfri-los em um forno com resfriamento controlado. Diferentes velocidades de resfriamento levam a diferentes propriedades nos metais. Um resfriamento muito rpido acarreta em imperfeies nos cristais metlicos. J um resfriamento muito lento leva formao de cristais muito grandes. Baseado neste processo, foi criado o mtodo heurstico chamado simulated annealing (SA), ou recozimento simulado, em portugus. Neste mtodo, parte-se de uma soluo vivel de um problema e passa-se a aceitar solues vizinhas. A princpio, nas altas temperaturas (analogamente falando), h grande probabilidade de qualquer soluo vizinha ser aceita. Mas, a medida que ocorre o resfriamento, h maior probabilidade de solues melhores serem aceitas. Como vantagens do SA pode-se citar tanto a sua capacidade de resolver problemas de diversos nveis de complexidade em vrias reas especficas, quanto a sua relativa previsibilidade e simplicidade, uma vez que trabalha com poucos parmetros e envolve operaes matemticas e computacionais simples.

2.1 Passos do Algoritmo

Antes de iniciar um algoritmo de SA, necessrio definir os parmetros: 23

t: temperatura inicial; r: fator de resfriamento, que determina a velocidade de resfriamento do

algoritmo. O fator de resfriamento deve estar no intervalo: 0<r<1;

k: nmero de solues vizinhas a serem testadas a cada nvel de

temperatura;

Alm destes parmetros, deve ser definido o critrio de parada, podendo se tratar de um nmero mximo de iteraes, uma temperatura mnima ou uma soluo tima ou quase tima. Os passos do SA so dados a seguir.

Criar conjunto de solues iniciais Inicializao dos parmetros: t, r e k Escolher uma soluo inicial: x Iterao: Repita de 1 at k 1 Escolher aleatoriamente uma soluo vizinha: x* 2 Comparar o custo da soluo atual e da nova soluo: = custo(x*)-custo(x) 3 Se 0 (funo objetivo diminui) ento x=x* seno se probabilidade > exp(-/t) ento x=x* Reduza a temperatura: t=t*r Critrio de Parada: Caso a soluo atenda a um critrio de parada, PARE. Caso contrrio realize uma nova iterao.

24

O algoritmo acima exposto aplicavel a um problema de minimizao, uma vez que ser menor ou igual a zero se o custo da nova soluo (x*) for menor ou igual ao custo da soluo atual (x). Mesmo que a nova soluo no minimize o custo, ela ainda assim pode ser aceita. Para tanto, deve-se gerar um nmero aleatrio (ou seja uma probabilidade), e, se este for maior que exp(-/

t) , a soluo ser aceita. Note que medida que a temperatura t diminui, o valor de exp(-/t) aumenta, consequentemente haver menor chance de se gerar um nmero aleatrio maior que este valor e, portanto, menor probabilidade de uma soluo ruim ser aceita. exatamente esta a essncia do SA. Caso o valor de r seja muito pequeno, haver um resfriamento rpido, fazendo com que o algoritmo se limite a uma busca local (Colin, 2007). Entretanto, um r muito grande (prximo de 1) faz com que o algoritmo possa gastar muitas iteraes com solues ruins. Para um problema de maximizao, este algoritmo pode ser facilmente adaptado. Basta considerar aceitveis as solues com 0, ou com probabilidade < exp(/t).

2.2 Exemplo: Um SA para resolver equaes de 1 Grau


Uma equao de 1 grau completa dada no seguinte formato:

bxc=0

Uma equao do 1 grau pode ser facilmente resolvida por operaes matemticas simples. Porm, vamos desenvolver um exemplo didtico de SA para resolver uma equao de 1 grau , afim de introduzir o leitor implementao deste algoritmo.

25

Equao utilizada

Para este exemplo tambm foi usada a equao:

2x10=0

A soluo desta equao x=5, e sua modelagem para SA no envolve nenhuma adaptao, ao contrrio da implementao em Algoritmos Genticos.

Criao das solues iniciais

As solues iniciais foram criadas com o uso funes geradoras de nmeros aleatrios em torno de uma soluo inicial. O nmero de solues foi fixado em dez.

Critrio de parada

Como critrio de parada foi definida a temperatura de 10 -6. Temperaturas mais baixas demonstraram pouco contribuir com um melhor resultado.

Performance do Algoritmo

26

O algoritmo foi executado 15 vezes para coleta e anlise dos dados exibidos na Tabela 2.

Tabela 2: Resultados de 15 execues do SA para o problema da equao de 1 grau

Execuo 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Mximo Mnimo Mdia Coeficiente de Variao

Resultado 4,99 5,01 5,02 5,00 5,06 4,97 5,02 4,97 5,02 4,98 5,01 4,97 5,02 5,17 5,04 5,17 4,97 5,02 0,01

Tempo de Execuo (s) 0,11 0,12 0,11 0,12 0,12 0,13 0,12 0,12 0,13 0,12 0,12 0,12 0,12 0,12 0,11 0,13 0,11 0,12 0,05

Esta implementao de SA se mostrou tanto eficiente quanto eficaz (embora a implementao em Algoritmos Genticos tenha tido resultados mais precisos), uma vez que as execues exigiram pouco tempo de processamento e retornaram valores

27

bastante prximos do resultado timo. So estas caractersticas, nas suas devidas propores, que tornam o SA atraente para problemas mais complexos. Os diagramas de disperso destes dados so exibidos na Figura 8 e Figura 9. Ficam evidenciados nestes diagramas a baixa disperso das execues do SA. Esta outra caracterstica bastante desejvel do SA, a previsibilidade.

Disperso de Tempos de Execuo


0,14 0,13 0,13 0,13

Tempos de Execuo

0,13 0,12 0,12 0,11 0,11 0,10 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 0,11 0,11 0,11 0,12 0,12 0,12 0,12 0,12 0,12 0,12 0,12 0,12 0,12

Populao

Figura 8: Diagrama de disperso de tempos de execuo do SA

Disperso dos Resultados


5,2 5,15 5,1 5,05 5,01 5,02 5,06 4,99 5 4,97 5,02 4,97 5,02 4,98 5,01 4,97 5,02 5,17

5,04

Resultado

5 4,95 4,9 4,85 0

10

11

12

13

14

15

16

Execuo

Figura 9: Diagrama de disperso dos resultados do SA

O cdigo fonte (em Octave) deste exemplo est disponvel no Apndice B. 28

1.5 Exerccios
1. Utilizando o exemplo estudado na seo 1.4, experimente variar os parmetros tamanho da populao, tamanho do cromossomo, probabilidade inicial de seleo e probabilidade de mutao, verifique como a eficcia e eficincia do algoritmo so afetadas. 2. Implemente a estratgia de crossover uniforme no algoritmo da seo 1.4. Verifique os ganhos ou perdas de performance obtidos. 3. Implemente as estratgias de seleo por torneio e por vizinhana no algoritmo da seo 1.4. Verifique, para cada uma destas estratgias, os ganhos ou perdas de performance obtidos. 4. Modifique o algoritmo da seo 1.4 para que o tamanho da populao seja varivel. Verifique os ganhos ou perdas de performance obtidos. 5. Altere os parmetros do algoritmo SA da seo 2.2 e verifique as variaes dos resultados e tempos de execuo.

29

Apndice A Cdigo Fonte do Algoritmo Gentico para Resoluo de Equaes de 1 Grau


clc tempo_inicial=clock(); tempo_inicial=tempo_inicial(6);
%%%%%parametros%%%%%%

sup=100; inf=0;
%tamanho da populao

m=50 n=4;

%tamanho do cromossomo %probabilidade inicial de selecao

ps=0.1;
%probabilidade de mutao

pm=0.5;
%inicia vetor de solues

solucoes=[];
%%%%%%%%%%criao da primeira gerao %%%%%primeiro cromossomo formado por uma sequencia de 1

cromossomos=ones(1,n); melhor=-1; cont_melhor=0; x_melhor=[];


%inicia contador

i=1; b=2; c=-10;


%repetir at atingir tamanho da populao

while (i<=m-1)
%insere primeiro gene

if rand>0.5 novo_cromossomo=1; else novo_cromossomo=0; endif


%cria um indivduo (repete at que seja atingido o tamanho do cromossomo)

for j=1:n-1 if rand>0.5 novo_cromossomo=[novo_cromossomo 1]; else

30

novo_cromossomo=[novo_cromossomo 0]; endif endfor cromossomos=[cromossomos; novo_cromossomo]; i++; endwhile geracoes=1;


% incio do processo iterativo

while (1)
%%%%%%%%%%criao de nova gerao

%%%%%%%%%%%%%%%%%%%%%%%%%%%

seleo

%inicia vetor de resultados da funcao objetivo e aptidoes

funcao=zeros(m,1); aptidao=zeros(m,1); individuos_reais=[];


%realiza teste de aptidao para cada cromossomo

for i=1:m
%valor de x para cromossomo %cromossomos(i,:) %cromossomos(i,1:n)

x=bin2dec(num2str(cromossomos(i,1:n)));
%converte o nmero inteiro para real

x=inf+((sup-inf)/2^n-1)*x

-rand;

%armazena individuos convertidos para numeros reais

individuos_reais=[individuos_reais; x];
%obtem resultado da equacao

teste=b*x+c;
%funoo objetivo. Quanto mais prximo o resultado da equao estiver de zero, melhor ser o valor de x, mais prximo funcao estar de 1

funcao(i)=1/(2^abs(teste));
%funcao(i) = teste;

endfor
%[individuos_reais funcao] %soma todo vetor funcao

soma=sum(funcao);
%mdia das funcoes

media=soma/m; selecionados=[];

31

i=1; num_selecionados=0; while num_selecionados<=ps*m


%cada individuo escolhido de forma determinstica

if (funcao(i)>=max(funcao)-abs(media)/2) selecionados=[selecionados i]; num_selecionados++; endif i++; if(i>m) break; endif endwhile

%caso nenhum indivduo tenha sido selecionado, metade da populao escolhida

if(size(selecionados,1)==0) for(i=1:m/2) selecionados(i)=i; endfor endif


%a probabilidade deve ir decrescendo medida que a populao converge (no incio muitos podem ser selecionados, mas gradativamente %a seleo vai se tornando mais restritiva)

ps=ps+(1/m^1);

%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%% %verifica se h soluo melhor que a atual

fim de seleo

critrio de parada

if(melhor<max(funcao) )
%nova soluo passa a ser a melhor e sua posio armazenada

[melhor posicao]=max(funcao); cont_melhor=0;


%novo melhor x armazenado

x_melhor=individuos_reais(posicao,:) ; else %caso no haja soluo melhor que a atual, contador incrementado cont_melhor=cont_melhor+1;
%se uma mesmo soluo for a melhor durante 10 geraes, ento programa se encerra

if((cont_melhor==10) & (melhor!=-1)) x_melhor melhor break; endif endif


%%%%%%%%%%%%%%%%%%%%%%%% fim do critrio de parada

32

%%%%%%%%%%%%%%%%%%%%%%%%%%%

cruzamento

if(m==num_selecionados) novos_individuos=round(num_selecionados/2); else novos_individuos=round(m-num_selecionados); endif if(mod(novos_individuos,2)!=0) round(novos_individuos++); endif num_selecionados; novos_cromossomos=[]; i=1; while i<=novos_individuos
%seleciona individuos aleatoriamente

individuo1=round(rand*10); if(individuo1>num_selecionados | individuo1==0) individuo1=num_selecionados; endif individuo2=round(rand*10); if(individuo2>num_selecionados | individuo2==0) individuo2=1; endif
%seleciona pontos de crossover aleatoriamente

crossover1=round(rand*10); while(crossover1>=n/2 | crossover1==0) crossover1=round(rand*10); endwhile crossover2=crossover1+n/2;


% crossover2=round(rand*10); %while(crossover2>=2*n | crossover2==0 | crossover2<=crossover1) % crossover2=round(rand*10); %endwhile %operao de crossover de dois pontos

novos_cromossomos=[novos_cromossomos; cromossomos(selecionados(individuo1),1:crossover1) cromossomos(selecionados(individuo2),(crossover1+1):crossover2) cromossomos(selecionados(individuo1),(crossover2+1):n)]; novos_cromossomos=[novos_cromossomos; cromossomos(selecionados(individuo2),1:crossover1) cromossomos(selecionados(individuo1),(crossover1+1):crossover2) cromossomos(selecionados(individuo2),(crossover2+1):n)];

%soma a quantidade de indivduos criados ao ndice i

i=i+2;

33

endwhile
%incluso cromossomos selecionados para prxima gerao

novos_cromossomos=[novos_cromossomos ; cromossomos(selecionados,:)];
%%%%%%%%%%%%%%%%%%%%%%%%%%% %obtm nmero de mutaes mutao

num_mutacoes=m*pm; for i=1:num_mutacoes


%escolha de indivduo para mutao

individuo=round(rand*100); while(individuo>m | individuo==0) individuo=round(rand*100); endwhile


%escolha de locus para mutao

locus=round(rand*10); while(locus>n | locus==0) locus=round(rand*10); endwhile


%efetua inverso do bit na posio selecionada

);

novos_cromossomos(individuo,locus)=not(novos_cromossomos(individuo,locus)
%escolha de locus para mutao

locus=round(rand*10); while(locus>n | locus==0) locus=round(rand*10); endwhile


%efetua inverso do bit na posio selecionada

);

novos_cromossomos(individuo,locus)=not(novos_cromossomos(individuo,locus)

%escolha de locus para mutao

locus=round(rand*10); while(locus>n | locus==0) locus=round(rand*10); endwhile


%efetua inverso do bit na posio selecionada

);

novos_cromossomos(individuo,locus)=not(novos_cromossomos(individuo,locus)

endfor
%gerao anterior substituda pela atual

cromossomos=novos_cromossomos;

34

geracoes++; ps geracoes
%se probabilidade de seleo for negativa, ela resetada e a probabilidade de mutao dobrada

if(ps<0) ps=0.1; pm=pm*2; endif endwhile


%obtm tempo de execuo

tempo_final=clock(); tempo_final=tempo_final(6);
%exibe tempos

tempo_inicial tempo_final tempo_final-tempo_inicial

35

Apndice B Cdigo Fonte do SA para Resoluo de Equaes de 1 Grau

tempo_inicial=clock(); tempo_inicial=tempo_inicial(6);
%temperatura inicial

t=5;

%repeties

k=5;

%fator de resfriamento

r=0.8;

%nmero de iteraes

num_iter=50;
%soluo inicial

x=0;

%soluo atual

x_atual=x;
%nmero de solues

num_solucoes=10; i=1; while(t>10^-6)


%cria vizinhana de solues

x_maximo=x_atual+10; x_minimo=x_atual-10; solucoes=rand(num_solucoes,1)*(x_maximo-x_minimo)+x_minimo; solucoes=[x;solucoes]; for(m=1:k)


%escolhe vizinho aleatoriamente

vizinho=int32(rand*(num_solucoes-1)+1);
%clculo de custos

custo_atual=abs(2*x_atual-10); x=solucoes(vizinho); custo=abs(2*x-10); delta=custo-custo_atual;


%teste de aceitao da soluo escolhida

if(delta<=0) x_atual=x else probabilidade=exp(-delta/t); teste=rand;

36

if probabilidade>teste x_atual=x endif endif endfor


%reduo da temperatura

t=r*t; i=i+1; endwhile x_atual t i


%obtm tempo de execuo

tempo_final=clock(); tempo_final=tempo_final(6);
%exibe tempos

tempo_inicial; tempo_final; tempo_final-tempo_inicial

37

Bibliografia
COLIN, Emerson Carlos. Pesquisa Operacional: 170 aplicaes em estratgia, finanas, logstica, produo, marketing e vendas.Rio de Janeiro: LTC, 2007 SANTOS, Fabrco B. B.. Implementao Eficiente de Busca em Plataforma Paralela. In: XXII Congresso da Sociedade Brasileira de Computao, Florianpolis, 2002. Anais. Florianpolis, SBC, 2002. GOLDBARG, M. C. LUNA, H. P . Otimizao Combinatria e Programao Linear: modelos e algoritmos.Rio de Janeiro: Campus, 2000 LINDEN, Ricardo. Algoritmos Genticos.Rio de Janeiro: Brasport, 2006 VIEIRA, Snia. Estatstica para a Qualidade.Rio de Janeiro: Campus, 1999

38

You might also like