Beruflich Dokumente
Kultur Dokumente
Teoria e Implementaes
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:
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.
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
Populao Inicial
Nova Gerao
no atendido
Critrio de Parada
FIM
atendido
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.
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.
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.
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.
Dentre as vrias alternativas existentes, nesta seo analisaremos o crossover de dois pontos e o crossover uniforme.
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.
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.
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.
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.
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.
O mtodo de codificao de solues apresentado foi a representao binria. Porm, esta representao apresenta algumas limitaes(Linden, 2006):
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;
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
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 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
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.
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
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
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.
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
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.
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.
Tempos de Execuo
12 10 8 6 4 2 0 0
10 7 6
10
11
12
13
14
15
16
Populao
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
Nmero de Geraes
25 20 15 10 5 0 0
10
11
12
13
14
15
16
Populao
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.
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).
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
2x10=0
A soluo desta equao x=5, e sua modelagem para SA no envolve nenhuma adaptao, ao contrrio da implementao em Algoritmos Genticos.
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.
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.
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
5,04
Resultado
10
11
12
13
14
15
16
Execuo
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
sup=100; inf=0;
%tamanho da populao
m=50 n=4;
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
while (i<=m-1)
%insere primeiro gene
30
while (1)
%%%%%%%%%%criao de nova gerao
%%%%%%%%%%%%%%%%%%%%%%%%%%%
seleo
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;
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
if (funcao(i)>=max(funcao)-abs(media)/2) selecionados=[selecionados i]; num_selecionados++; endif i++; if(i>m) break; endif endwhile
ps=ps+(1/m^1);
fim de seleo
critrio de parada
if(melhor<max(funcao) )
%nova soluo passa a ser a melhor e sua posio armazenada
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
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
i=i+2;
33
endwhile
%incluso cromossomos selecionados para prxima gerao
novos_cromossomos=[novos_cromossomos ; cromossomos(selecionados,:)];
%%%%%%%%%%%%%%%%%%%%%%%%%%% %obtm nmero de mutaes mutao
);
novos_cromossomos(individuo,locus)=not(novos_cromossomos(individuo,locus)
%escolha de locus para mutao
);
novos_cromossomos(individuo,locus)=not(novos_cromossomos(individuo,locus)
);
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
tempo_final=clock(); tempo_final=tempo_final(6);
%exibe tempos
35
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
vizinho=int32(rand*(num_solucoes-1)+1);
%clculo de custos
36
tempo_final=clock(); tempo_final=tempo_final(6);
%exibe tempos
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