• Nenhum resultado encontrado

Implementação de um Algoritmo Genético

N/A
N/A
Protected

Academic year: 2021

Share "Implementação de um Algoritmo Genético"

Copied!
9
0
0

Texto

(1)

Abstract—Uma discussão sobre os Algoritmos Genéticos, sua estrutura e seus componentes, é apresentada neste trabalho. Um AG será implementado e submetido a uma função teste conhecida. Uma técnica para gerar a população inicial será proposta e comparada com a distribuição aleatória.

Index Terms—Algoritmos Genéticos, algoritmos evolutivos, computação evolutiva, métodos de otimização, métodos de populações, métodos estocásticos.

I. INTRODUÇÃO

s Algoritmos Genéticos, AG’s, são técnicas de busca baseadas nas Teorias da Evolução. Nos AG’s as variáveis do problema são representadas como genes em um cromossomo, também denominado indivíduo. Cada coordenada de um ponto no espaço solução pode ser entendida como um gene. O indivíduo é o próprio ponto, formado pelo conjunto de coordenadas (genes). Os AG’s utilizam elementos como a sobrevivência dos mais aptos e a troca de informação genética de uma forma estruturada, porém aleatória. O AG apresenta um grupo de soluções candidatas, denominada População, na região de soluções. Através de mecanismos como a seleção natural e o uso de operadores genéticos, tais como a mutação e o cruzamento, os cromossomos com melhor aptidão são encontrados. A seleção natural garante que os cromossomos mais aptos gerem descendentes nas populações futuras. Usando um operador de cruzamento, o AG combina genes de dois cromossomos pais previamente selecionados para formar dois novos cromossomos, os quais têm uma grande possibilidade de serem mais aptos que os seus genitores.

II. COMPUTAÇÃO EVOLUTIVA

A inteligência natural é o produto de milhões de anos de evolução biológica. Simular processos evolutivos biológicos complexos pode nos levar a descobrir como a evolução conduz sistemas vivos em direção à inteligência superior.

Uma das áreas da computação evolutiva que mais tem se destacado é o campo dos Algoritmos Genéticos (AG’s), que são baseados no princípio evolutivo da seleção natural. A Modelagem da Imunidade e a Vida Artificial são disciplinas similares que se baseiam na idéia de que leis

Trabalho referente à disciplina de “Otimização” do curso de graduação em Engenharia Elétrica da Universidade Federal de Minas Gerais, ministrada pelos professores Jaime Arturo Ramirez e Ricardo Hiroshi Caldeira Takahashi. Junho de 2001.

Foi desenvolvido por:

Frederico Gadelha Guimarães, graduando em Engenharia Elétrica. Correio eletrônico: fredgadelha@yahoo.com.br

Marcelo Cherem Ramalho, graduando em Engenharia Elétrica. Correio eletrônico: mccherem@yahoo.com.br

físicas e químicas podem ser capazes de explicar a vida inteligente.

Técnicas de busca baseadas em alguma informação heurística são empregadas em muitas aplicações da Inteligência Artificial. Quando o espaço de busca é grande demais para uma busca exaustiva, também denominada busca “cega” ou de “força bruta”, e é difícil identificar algum conhecimento que possibilite reduzir o espaço de busca, não se tem outra escolha a não ser usar outras técnicas de busca mais eficientes para alcançar soluções ótimas.

III. CONCEITOS BIOLÓGICOS

A. As idéias evolucionistas de Darwin (Darwinismo)

Em meados do século XIX, Charles Darwin (1809-1882) revolucionou todo o pensamento acerca da evolução da vida e de nossas origens, provocando a maior discussão que já houve a respeito de uma teoria científica. Em seus dois livros - Sobre a Origem das Espécies por Meio da

Seleção Natural (1859), e A Descendência do Homem e Seleção em Relação ao Sexo (1871) - Darwin defendia que

o homem, tal qual os outros seres vivos, é resultado da evolução.

Em seus estudos, Darwin concluiu que nem todos os organismos que nascem sobrevivem ou, o que é mais importante, reproduzem-se. Os indivíduos com mais oportunidades de sobrevivência seriam aqueles com características mais apropriadas para enfrentar as condições ambientais. Esses indivíduos teriam maior probabilidade de reproduzir-se e deixar descendentes. Nessas condições as variações favoráveis tenderiam a ser preservadas e as desfavoráveis, destruídas.

É um lento e constante processo de seleção ao longo das gerações, através do qual as espécies podem se diversificar, tornando-se mais adaptadas ao ambiente em que vivem. Nascia assim o conceito de Seleção Natural, a grande contribuição de Darwin à teoria da evolução.

O mecanismo de evolução proposto por Darwin pode ser resumido em seis etapas:

1. Os indivíduos de uma mesma espécie mostram muitas variações na forma e na fisiologia;

2. Boa parte dessas variações é transmitida aos descendentes;

3. Se todos os indivíduos de uma espécie se reproduzissem, as populações cresceriam exponencialmente;

4. Como os recursos naturais são limitados, os indivíduos de uma população lutam por sua sobrevivência e de sua prole;

5. Portanto, somente alguns, os mais aptos, sobrevivem e deixam descendentes. A sobrevivência e a reprodução dependem das características desses indivíduos que,

Implementação de um Algoritmo Genético

Frederico G. Guimarães e Marcelo C. Ramalho

(2)

por serem hereditárias, serão transmitidas aos seus filhos;

6. Através dessa seleção natural, as espécies serão representadas por indivíduos cada vez mais adaptados. O principal problema da teoria darwiniana foi a falta de uma teoria satisfatória que explicasse a origem e a transmissão das variações.

Darwin não conseguiu responder adequadamente estas críticas e, somente com a posterior descoberta das Leis de Mendel e das Mutações, foi que esses problemas puderam ser resolvidos. Apesar disso, não há dúvida de que a teoria moderna da evolução deve mais a Darwin do que a qualquer outro cientista, e seu conceito de seleção natural continua válido até hoje.

B. Seleção Natural

A idéia básica de seleção natural foi apresentada por Charles Darwin e representa uma das maiores conquistas no campo científico, particularmente, na ciência biológica. É o mecanismo de seleção que impõe uma certa ordem ao processo de evolução.

A primeira parte do processo, se caracteriza pela obtenção de variedade genética e é realizada ao acaso. Já a Segunda parte, composta pela seleção, é em certo grau determinada pelos fatores ecológicos do ambiente.

Através da seleção natural, a freqüência de um gene vantajoso aumenta gradativamente na população. A vantagem conferida pelo gene pode se refletir em um maior tempo de sobrevivência do indivíduo, aumentando assim a quantidade de filhos que ele produz. Pode implicar também uma fertilidade maior do indivíduo que, mesmo sobrevivendo menos tempo, poderá deixar um número maior de filhos que seu competidor. Finalmente, o gene poderá aumentar a sua freqüência se ele fornecer ao indivíduo maior capacidade de proteção. Assim, mesmo se ele tiver menos filhos, suas chances de atingir a época de reprodução serão maiores.

IV. REVISÃO HISTÓRICA

A. Precursores dos AG’s

A primeira tentativa de representação, por meio de um modelo matemático, da teoria de Darwin, surgiu com o livro The Genetic Theory of Natural Selection, escrito pelo biólogo evolucionista R. A. Fisher. A evolução era, tal como a aprendizagem, uma forma de adaptação, diferindo apenas na escala de tempo. Em vez de ser o processo de uma vida, era o processo de gerações. Como era feita em paralelo por um conjunto de organismos, tornava-se mais poderosa que a aprendizagem.

A seguir, John Holland dedicou-se ao estudo de processos naturais adaptáveis, tendo inventado os AG’s em meados da década de 60. Ele desenvolveu os AG’s em conjunto com seus alunos e colegas da Universidade de Michigan nos anos 60 e 70, com o objetivo de estudar formalmente o fenômeno da adaptação como ocorre na natureza, e desenvolver modelos em que os mecanismos da adaptação natural pudessem ser importados para os sistemas computacionais.

Como resultado do seu trabalho, em 1975, Holland edita [2] e, em 1989, David Goldberg edita [1], hoje considerados os livros mais importantes sobre AG’s.

V. O ALGORITMO GENÉTICO

Os Algoritmos Genéticos ocupam lugar de destaque entre os paradigmas da Computação Evolutiva devido a uma série de razões dentre as quais:

1. Apresentam-se como o paradigma mais completo da Computação Evolutiva visto que englobam de forma simples e natural todos os conceitos nela contidos; 2. Apresentam resultados bastante aceitáveis, com

relação à precisão e recursos empregados (fáceis de implantar em computadores domésticos de porte médio), para uma ampla gama de problemas de difícil resolução por outros métodos;

3. São muito flexíveis, aceitam sem grandes dificuldades uma infinidade de alterações na sua implementação e permitem fácil hibridização (vantagem importante no caso de aprendizagem) inclusive com técnicas não relacionadas à Computação Evolutiva;

4. Em relação aos outros paradigmas da Computação Evolutiva, são os que exigem menor conhecimento específico do problema em questão para o seu funcionamento , o que os torna altamente versáteis e, além disso, agregam conhecimento específico com pouco esforço;

5. São o paradigma mais usado dentro da Computação Evolutiva e, junto com as Redes Neurais, os mais usados de toda a Computação Natural.

Na prática, nós podemos implementar facilmente um AG com o simples uso de strings de bits, no caso da codificação binária, ou caracteres para representar os cromossomos e, com simples operações de manipulação de bits podemos implementar cruzamento, mutação e outros operadores genéticos. Na fig. 1, podemos ver a simplicidade de representação de um indivíduo composto por cinco cromossomos (as variáveis do problema), cada um composto por seis genes (codificação binária utilizando-se seis bits), por meio de uma string de valores binários.

110000 010101 101001 110100 001101 Fig. 1. Representação binária de um indivíduo de cinco cromossomos (cinco variáveis), cada cromossomo contendo seis genes.

O pseudocódigo de um AG básico é mostrado a seguir. Nele podemos ver que os AG’s começam com uma população de N estruturas aleatórias (indivíduos), onde cada estrutura codifica uma solução do problema. O desempenho de cada indivíduo é avaliado com base numa função de avaliação de aptidão. Os melhores tenderão a ser os progenitores da geração seguinte, melhorando, de geração para geração, através da troca de informação. Algoritmo Genético:

t 0;

IniciaPopulação P(t); Avalia P(t);

enquanto não parada faça t t+1;

P’ SelecionaPares P(t); Recombina P’;

(3)

Avalia P’;

P(t+1) Sobreviventes P(t),P’(t); fimenquanto

fim

Pelo que foi apresentado até o momento, pode-se notar que a principal inovação dos AG’s em relação aos demais métodos de busca é a implementação de um mecanismo de seleção de soluções no qual, em curto prazo, os melhores têm maior probabilidade de sobreviver e, em longo prazo, os melhores têm maior probabilidade de ter descendência. Desta forma, o mecanismo de seleção se divide em dois segmentos: o primeiro escolhe os elementos que vão participar da transformação (operador de seleção) e o outro escolhe os elementos que vão sobreviver (operador de substituição).

Cabe ainda destacar que os AG’s são métodos de busca: § Cega: não têm conhecimento específico do

problema a ser resolvido, tendo como guia apenas a função objetivo;

§ Codificada: não trabalham diretamente com o domínio do problema e sim com representações dos seus elementos;

§ Múltipla: executa busca simultânea em um conjunto de candidatos;

§ Estocástica: combinam regras probabilísticas e determinísticas com alguma proporção variável. Esse conceito se refere tanto às fases de seleção como às de transformação.

A vantagem principal dos AG’s ao trabalharem com o conceito de população, ao contrário de muitos outros métodos que trabalham com um só ponto, é que eles encontram segurança na quantidade. Tendo uma população de pontos bem adaptados, é reduzida a possibilidade de alcançar um falso ótimo. Os AG’s conseguem grande parte de sua amplitude simplesmente ignorando informação que não constitua parte do objetivo, enquanto outros métodos se sustentam fortemente nesse tipo de informação e, em problemas nos quais a informação necessária não está disponível ou se apresenta de difícil acesso, estes outros métodos falham. Em suma, os AG’s podem ser aplicados praticamente em qualquer problema.

Apesar de aleatórios, eles não são caminhadas aleatórias não direcionadas, ou seja, buscas totalmente sem rumo, pois exploram informações históricas para encontrar novos pontos de busca onde são esperados melhores desempenhos. Isto é feito através de processos iterativos, onde cada iteração é chamada de geração.

As principais vantagens dos AG’s podem ser resumidas no que se segue:

§ São procedimentos de busca paralela que podem ser implementados em máquinas de processamento paralelo, acelerando em muito o processo;

§ São aplicáveis a problemas de otimização contínuos e discretos;

§ São estocásticos e, portanto, menos sujeitos a ficarem presos em mínimos locais, freqüentes em muitos problemas práticos de otimização; § Sua flexibilidade facilita a estruturação e

identificação de parâmetros em modelos

complexos tais como redes neurais e sistemas de inferência nebulosos.

A. Parâmetros Genéticos

É importante também, analisar de que maneira alguns parâmetros influem no comportamento dos Algoritmos Genéticos, para que se possa estabelecê-los conforme as necessidades do problema e dos recursos disponíveis. Serão listados a seguir alguns Parâmetros Genéticos utilizados.

1) Tamanho da População

O tamanho da população determina o número de cromossomos na população, afetando diretamente o desempenho global e a eficiência dos AG’s. Com uma população pequena o desempenho pode cair, pois, deste modo, a população fornece uma pequena cobertura do espaço de busca do problema. Uma grande população geralmente fornece uma cobertura representativa do domínio do problema, além de prevenir convergências prematuras para soluções locais ao invés de globais. No entanto, para se trabalhar com grandes populações, são necessários maiores recursos computacionais, ou que o algoritmo trabalhe por um período de tempo muito maior.

2) Taxa de Cruzamento

Quanto maior for esta taxa, mais rapidamente novas estruturas serão introduzidas na população. Mas se esta for muito alta a maior parte da população será substituída e pode ocorrer perda de estruturas de alta aptidão. Com um valor baixo, o algoritmo pode tornar-se muito lento.

3) Tipo de Cruzamento

O tipo de cruzamento a ser utilizado determina a forma como se procederá a troca de segmentos de informação entre os “casais” de cromossomos selecionados para cruzamento. Mais adiante serão explanados alguns tipos de cruzamento utilizados mas deve-se levar em conta que existem muitas outras escolhas disponíveis para usuários de AG’s. O ideal seria testar diversos tipos de cruzamento em conjunto com as outras configurações do AG em uso para verificar qual apresenta um melhor resultado.

4) Taxa de Mutação

Determina a probabilidade em que uma mutação ocorrerá. Mutação é utilizada para dar nova informação para a população e também para prevenir que a população se sature com cromossomos semelhantes (Convergência Prematura). Uma baixa taxa de mutação previne que uma dada posição fique estagnada em um valor, além de possibilitar que se chegue em qualquer ponto do espaço de busca. Com uma taxa muito alta a busca se torna essencialmente aleatória além de aumentar muito a possibilidade de que uma boa solução seja destruída. A melhor Taxa de Mutação é dependente da aplicação mas, para a maioria dos casos é entre 0,001 e 0,1.

B. Estrutura e Componentes básicos

Como não há uma definição rigorosa para “Algoritmo Genético” a qual seja aceita por todos os componentes da comunidade da computação evolutiva, podemos dizer que a maioria dos métodos denominados AG’s têm pelo menos os seguintes elementos em comum:

§ Uma população de cromossomos; § Seleção de acordo com a aptidão;

(4)

populações;

§ Mutação aleatória para produzir novos indivíduos.

Os cromossomos componentes da população de um AG, assumem tipicamente a forma de strings binárias. Cada posição dentro dessa string tem dois alelos possíveis: 0 e 1. Cada cromossomo pode ser visto como um ponto no espaço de busca das soluções candidatas. O AG processa populações de cromossomos, efetuando substituições sucessivas de uma população por outra. Os AG’s requerem uma função de aptidão que atribua um valor (valor de aptidão ou fitness) para cada cromossomo da população atual. O valor de aptidão de cada cromossomo depende de quão bem este cromossomo resolve o problema dado.

Um esquema gráfico da estrutura de um AG básico seria como o apresentado na fig. 2.

Seleção Substituição Descendência Transformação População Auxiliar População

Fig. 2. Esquema gráfico da estrutura de um AG básico.

Como pode ser visto, uma população Pop(t) que consta de M membros é submetida a um processo de seleção onde será gerada uma população auxiliar PopAux(t) de C criadores. Dessa população auxiliar será extraído um subgrupo de indivíduos denominados progenitores que são os que efetivamente vão se reproduzir. Fazendo uso dos operadores genéticos, os progenitores passarão por uma série de transformações na fase de reprodução, por meio das quais serão gerados os S indivíduos componentes da Descendência. Para formar a nova população, Pop(t+1), devem ser selecionados M sobreviventes dos C+S da população auxiliar e da descendência, o que é feito na fase de Substituição. A fase de Seleção é realizada em duas etapas com finalidade de emular as duas vertentes do princípio de seleção natural: seleção de criadores ou Seleção e seleção de sobreviventes para a próxima geração ou Substituição.

C. Métodos e critérios para a implementação de um AG

Para implementar-se um AG, é necessário definir de forma correta alguns métodos e critérios.

1) Critério de Codificação

Tendo em vista que os AG’s trabalham com manipulação de strings de determinados alfabetos (representação), deve-se especificar a codificação com a qual se faz corresponder cada ponto do domínio do problema com um Gene ou conjunto de Genes do Cromossomo.

2) Critério de tratamento dos indivíduos não factíveis

Nem sempre é possível estabelecer uma correspondência ponto-a-ponto entre o domínio do problema e o conjunto de strings binárias (ou de outro alfabeto utilizado) usadas para resolvê-lo. Como conseqüência, nem todas as strings (indivíduos) codificam indivíduos válidos do espaço de

busca e devem ser habilitados procedimentos úteis para distingui-las.

3) Critério de Parada

Devem ser determinadas as condições nas quais se considera que o AG encontrou uma solução aceitável ou tenha fracassado no processo de busca e não faça sentido continuar.

4) Funções de avaliação e aptidão

Deve ser determinada a função de avaliação mais apropriada para o problema, assim como a função de aptidão que utilizará o AG para resolvê-lo.

5) Operadores Genéticos

Denominação dada aos operadores utilizados para efetuar a reprodução. Todo AG faz uso de pelo menos três Operadores Genéticos (levando em conta o AG básico): seleção, cruzamento e mutação. Estes não são os únicos possíveis e além de tudo admitem variações.

6) Critérios de Seleção

A seleção deve dirigir o processo de busca em favor dos indivíduos mais aptos. Isto pode ser feito de várias maneiras como, por exemplo, por amostragem direta, por amostragem aleatória simples ou por amostragem estocástica.

7) Critérios de Substituição

Os critérios com que se selecionam os criadores não necessariamente têm que ser os mesmos usados para selecionar os sobreviventes, logo a necessidade de especificá-los separadamente.

8) Parâmetros de Funcionamento

Um AG precisa que sejam fornecidos certos parâmetros de funcionamento tais como o tamanho da população, as probabilidades de aplicação dos Operadores Genéticos, a precisão da codificação, etc.

VI. OPERADORES GENÉTICOS

São os operadores genéticos que transformam a população através de sucessivas gerações, estendendo a busca até chegar a um resultado satisfatório. Um algoritmo genético padrão evolui, em suas sucessivas gerações, mediante o uso de três operadores básicos:

§ Seleção: realiza o processo de adaptabilidade e sobrevivência.

§ Cruzamento: representa o acasalamento entre os indivíduos.

§ Mutação: introduz modificações aleatórias. Outros operadores têm sido propostos na literatura e entre eles o mais utilizado é o Elitismo.

A. Seleção

A idéia principal do operador de seleção em um algoritmo genético é oferecer aos melhores indivíduos da população corrente preferência para o processo de reprodução, permitindo que estes indivíduos possam passar as suas características às próximas gerações. Isto funciona como na natureza, onde os indivíduos altamente adaptados ao seu ambiente possuem naturalmente mais oportunidades para reproduzir do que aqueles indivíduos considerados mais fracos.

B. Cruzamento

(5)

do AG em relação às outras técnicas é o uso do cruzamento.

O operador Cruzamento é utilizado após o de seleção. Esta fase é marcada pela troca de segmentos entre “casais” de cromossomos selecionados para dar origem a novos indivíduos que formarão a população da próxima geração.

A idéia central do cruzamento é a propagação das características dos indivíduos mais aptos da população por meio de troca de informações entre os mesmos o que dará origem a novos indivíduos.

Existem dois tipos mais comuns de reprodução sexual em AG’s, que dependem do tipo de representação das variáveis.

1) Cruzamento Binário

Na representação binária pode-se escolher um ponto de “quebra” da string de bits e trocar os segmentos entre os dois indivíduos, gerando dois indivíduos diferentes.

2) Cruzamento Real

No cruzamento real é traçado um segmento de reta unindo os dois pontos (indivíduos). São gerados aleatoriamente dois novos indivíduos sobre este segmento de reta.

Pode-se criar um mecanismo de extrapolação, em que este segmento de reta tem suas extremidades não em cima de cada parceiro, mas um pouco além destes. Podemos também aplicar maior probabilidade dos descendentes “nascerem” mais próximos do melhor parceiro. Combinando estes dois mecanismos, teremos o Cruzamento Real Polarizado.

C. Mutação

A mutação é geralmente vista como um operador de “background”, responsável pela introdução e manutenção da diversidade genética na população [2]. Ela trabalha alterando arbitrariamente um ou mais componentes de uma estrutura escolhida entre a descendência, logo após o cruzamento, fornecendo dessa forma meios para a introdução de novos elementos na população. Assim, a mutação assegura que a probabilidade de se chegar a qualquer ponto do espaço de busca nunca será zero. O operador de mutação é aplicado aos indivíduos com uma probabilidade dada pela taxa de mutação. Como foi visto no item Parâmetros Genéticos, geralmente se utiliza uma taxa de mutação pequena, justamente por ser um operador genético secundário. O operador de mutação também depende do tipo de representação utilizada.

1) Mutação Binária

Na representação binária podemos realizar a mutação simplesmente escolhendo aleatoriamente um bit para sofrer mutação, ou seja, ser mudado. A mudança de um bit no indivíduo pode fazê-lo representar outro ponto completamente diferente do espaço.

2) Mutação Real

Na representação real, podemos realizar a mutação mudando o indivíduo para outro ponto do espaço de acordo com uma probabilidade gaussiana de média no próprio indivíduo e com um certo desvio padrão dado.

D. Elitismo

O método mais utilizado para melhorar a convergência dos AG’s é o Elitismo. Ele foi primeiramente introduzido por Kenneth De Jong em 1975 e é uma adição aos vários

métodos de seleção que força os AG’s a reterem um certo número de “melhores” indivíduos em cada geração. Tais indivíduos podem ser perdidos se eles não forem selecionados para reprodução ou se eles forem destruídos por cruzamento ou mutação. Muitos pesquisadores têm encontrado no elitismo vantagens significativas para a performance dos AG’s [3].

O Elitismo consiste basicamente em realizar a etapa de seleção em duas partes:

1. Seleciona-se uma elite de E membros entre os melhores da população inicial, os quais serão incorporados diretamente à população final, sem passar pela população auxiliar;

2. A população auxiliar é selecionada entre os N - E membros restantes da população inicial.

Em geral, a elite tem um tamanho reduzido, 1 ou 2 para N=50, e a sua amostragem pode ser direta, escolhendo-se simplesmente os melhores, ou por sorteio, escolhendo-se os melhores entre os melhores da população. O esquema gráfico do Elitismo pode ser visualizado na fig. 3.

Seleção Substituição Descendência Transformação População Auxiliar População Elite

Fig. 3. Esquema gráfico da estrutura de um AG com Elitismo.

VII. O PROBLEMA DA DIVERSIDADE DOS AG’S Um ponto fundamental para o bom funcionamento de um AG é a existência de diversidade entre os indivíduos. Ou seja, deve existir um certo grau de diversidade entre as aptidões dos indivíduos que compõe o conjunto de possíveis soluções pois, do contrário, com um conjunto de indivíduos muito semelhantes, o operador de cruzamento perde em muito a capacidade de troca de informações úteis entre os indivíduos da população o que faz a busca em certos casos progredir muito lentamente ou praticamente estacionar.

A necessidade de ter a diversidade controlada dentro de uma determinada população tem, como um dos seus maiores obstáculos, a necessidade de populações finitas e não muito grandes. Caso contrário, uma técnica de AG poderia tornar-se não aplicável na prática, visto que, controlar uma população absurdamente grande, a qual tenha cálculos muito complexos para determinar a aptidão, poderia ocasionar um esforço computacional muito grande. Devemos lembrar que o esforço computacional será relativo ao tipo de aplicação pois, por exemplo, se tratando do controle de um robô móvel que dependa de respostas em tempo real para desvio de obstáculos, um atraso de 1 segundo na tomada de uma decisão pode ser catastrófico.

Em suma, para que a seleção seja efetiva, a população deve conter, a todo instante, uma certa variedade de aptidões, o que, como foi visto com relação ao tamanho da população, implica também em não ter uma disparidade muito grande de aptidões, pois costuma afetar

(6)

negativamente a diversidade da população.

VIII. REPRESENTAÇÃO E CODIFICAÇÃO DOS AG’S As partes que relacionam um AG a um problema dado são a codificação e a função de avaliação.

Se um problema pode ser representado por um conjunto de parâmetros (genes), estes podem ser unidos para formarem uma cadeia de valores (cromossomo), este processo se chama codificação. Em genética, este conjunto representado por um cromossomo em particular é referenciado como genótipo, contendo a informação necessária para construir um organismo, conhecido como fenótipo. Estes mesmos termos se aplicam em AG. Por exemplo, para se desenhar um prédio, um conjunto de parâmetros especificando o desenho da planta é o genótipo, e a construção final é o fenótipo. A adaptação de cada indivíduo depende de seu fenótipo, no qual se pode inferir seu genótipo.

Por exemplo, para um problema de maximizar uma função de três variáveis, se poderia representar cada variável por um número binário de 10 bits, obtendo-se um cromossomo de 30 bits de longitude.

Existem vários aspectos relacionados com a codificação de um problema a serem levados em conta no momento de sua realização:

§ Deve ser utilizado um alfabeto o mais pequeno possível para representar os parâmetros. Normalmente utilizam-se dígitos binários; § As variáveis que representam os parâmetros do

problema devem ser discretizadas para poder representar as strings de bits;

§ A maior parte dos problemas tratados com AG's são não lineares e muitas vezes existem relações “ocultas” entre as variáveis que formam a solução;

§ O tratamento dos genótipos inválidos deve ser levado em conta para o desenho da codificação.

IX. A IMPLEMENTAÇÃO

Implementamos um AG no Matlab, utilizando codificação real para os indivíduos da população. A tabela a seguir relaciona os parâmetros genéticos adotados na implementação.

PARÂMETROS GENÉTICOS

Tamanho da População 100

Número Máximo de Gerações 200

Taxa de Cruzamento 60%

Tipo de Cruzamento Real Polarizado

Taxa de Extrapolação 20%

Taxa de Mutação 5%

A seguir, são especificados outros aspectos da implementação.

A. Critério de Parada

O algoritmo pára ou quando o número máximo de gerações foi alcançado, ou quando os dez últimos ótimos não variaram mais que um certo î. O valor adotado para î foi de 0,0001.

B. Geração da População Inicial

1) Inicialização Aleatória da População

Neste tipo de inicialização da população, os N indivíduos são distribuídos aleatoriamente dentro do espaço solução. Possui a desvantagem de possibilitar a ocorrência de regiões com concentração de pontos e outras sem indivíduos. Entretanto, a distribuição aleatória permite uma maior variabilidade dos resultados obtidos. Podemos obter informação adicional a cada vez que rodarmos o algoritmo para o problema.

2) Inicialização Determinística da População

A população é distribuída uniformemente dentro do espaço solução. Possui a vantagem de cobrir bem o espaço solução porém, execuções sucessivas não trazem informação adicional, pois o estado de inicialização é sempre o mesmo.

3) Inicialização Aleatória com “Nicho”

A fim de solucionar o problema da possível ocorrência de concentração de pontos devido a Inicialização Aleatória da População, pode-se utilizar a técnica de “nichos”. Nesta técnica, é estabelecida uma região de cobertura para cada indivíduo, chamada de nicho do indivíduo. No momento que estamos gerando a população inicial, se dois ou mais indivíduos aparecerem muito próximos, um deles é eliminado e outro é gerado aleatoriamente. O processo é repetido até que todos os indivíduos estejam sozinhos dentro de seu nicho.

Este processo garante que não haverá, na população inicial, indivíduos próximos uns dos outros, porém, não garante que todo o espaço solução esteja sendo coberto inicialmente.

4) Inicialização implementada

Na inicialização da população que implementamos, mesclamos as técnicas anteriores. Inicialmente, geramos uma população uniformemente distribuída dentro do espaço solução. Em seguida, aplicamos uma perturbação aleatória em cada indivíduo. A perturbação máxima permitida é determinada pelo nicho de cada indivíduo. Dessa maneira, unimos as vantagens das técnicas anteriores, isto é, garantimos uma cobertura ampla do espaço solução e a variabilidade característica da distribuição aleatória.

A fig. 4 ilustra esta técnica onde 16 indivíduos são distribuídos uniformemente dentro do espaço solução definido por:

]

5

,

0

[

]

5

.

7

,

0

[

2 1

x

x

(7)

0 1 2 3 4 5 6 7 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5

Distribuiç ã o uniforme da populaç ã o

Coordenada x1

Coordenada x2

Fig. 4. Distribuição uniforme de 16 indivíduos dentro do espaço solução. Na fig. 4 é mostrada uma cruz maior sobre um dos indivíduos. Esta cruz estabelece a faixa para cada coordenada, no caso x1 e x2, dentro da qual estarão as

coordenadas do indivíduo quando ele sofrer uma perturbação aleatória. A fig. 5 ilustra a população da fig. 4 após a perturbação. 0 1 2 3 4 5 6 7 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 Coordenada x1 Coordenada x2

Populaç ã o Inicial apó s perturbaç ã o

Fig. 5. População após a perturbação aleatória.

Podemos observar na fig. 5 que a nova população manteve a característica de nicho para cada indivíduo e o espaço solução foi amplamente coberto pela população inicial.

C. Reflexão

Eventualmente, após os processos de cruzamento e mutação da população alguns indivíduos podem sair do espaço solução, caindo em pontos não factíveis. Com o método da Reflexão, estes indivíduos são refletidos para dentro do espaço solução, voltando para pontos factíveis do problema.

D. Elitismo

Em nossa implementação utilizamos o Elitismo escolhendo apenas um indivíduo para integrar a Elite: o melhor. Este indivíduo será incluído na próxima geração diretamente.

E. Critérios de Seleção

Foram implementados e verificados dois tipos diferentes de seleção dos indivíduos que irão efetivamente cruzar.

1) Amostragem Aleatória Simples ou Equiprovável

Neste critério todos os indivíduos têm chances iguais de serem sorteados. São sorteados P indivíduos dentro dos N integrantes da população para formarem a população de progenitores, que irão efetivamente cruzar. P é determinado pela taxa de cruzamento.

2) Amostragem Estocástica por Torneio

Neste critério são sorteados três indivíduos da população e é realizado um “torneio” entre eles para escolher-se qual irá efetivamente fazer parte da população de progenitores. Em nossa implementação determinamos como vencedor do torneio aquele indivíduo que possui maior aptidão, no caso, o que possui menor valor da função objetivo.

F. Critérios de Substituição

Foram implementados e verificados quatro tipos diferentes de substituição da população anterior pela nova.

1) Substituição Imediata

Os descendentes substituem seus progenitores.

2) Substituição por Fator Cheio

Os descendentes substituem aqueles membros da população mais parecidos com eles.

3) Substituição por Inserção

Os M descendentes substituem M membros da população anterior, geralmente os M piores. A seleção dos piores foi feita por torneio

4) Substituição por Inclusão

Os descendentes são somados aos progenitores em uma única população e, desta, são selecionados os N melhores. Da mesma forma, a seleção dos melhores foi feita por torneio.

X. COMPARAÇÃO

Vamos comparar a técnica de geração da população inicial que propusemos na seção anterior com a Inicialização Aleatória. Vamos submeter dois algoritmos genéticos, que diferem na maneira de gerar a população inicial, à seguinte função teste, ilustrada na fig. 6.

Fig. 6. A função peaks.

A função teste é a função peaks, que já vem definida no Matlab e possui a característica de ser multimodal.

Os algoritmos utilizados para teste utilizam ambos a Amostragem Estocástica por Torneio como critério de seleção e a Substituição por Inserção como critério de substituição.

(8)

XI. RESULTADOS

A fig. 7 ilustra a evolução da população inicial para a população final. Pode-se observar que a população converge para a região do ótimo global. A população inicial, cujos indivíduos são mostrados na fig. 7 marcados com um ‘x’, foi gerada pela técnica proposta. Pode-se observar, como foi comentado anteriormente, que a população cobre todo o espaço de busca e não há concentração de indivíduos em uma determinada região.

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

Evoluç ã o da Populaç ã o Inicial para a Final

Fig. 7. Evolução da população inicial, com 25 indivíduos, para a população final dentro do espaço de busca do ótimo para a função peaks. Marcados com um ‘x’ na figura estão os indivíduos da população inicial utilizando-se a técnica proposta de inicialização. Marcados com um círculo, estão os indivíduos da população final.

Os dois algoritmos foram rodados cem vezes com a função peaks utilizando inicialmente uma população de cem indivíduos. Ambos tiveram percentual de acerto de 100%. A seguir, o número de indivíduos na população foi reduzido até encontrarmos um percentual de acerto inferior a 100%. Com uma população de 25 indivíduos, o AG utilizando a técnica proposta de geração da população inicial obteve percentual de acerto de 99%. Com esse mesmo número de indivíduos, o AG com inicialização aleatória obteve percentual de acerto de 82%. Além desta diferença no percentual de acerto, o resultado do teste mostrou uma diferença em relação à velocidade de convergência para o ótimo global da função objetivo. Estes resultados são detalhados a seguir.

A. Inicialização Aleatória da População

A tabela a seguir relaciona os resultados obtidos pelo AG utilizando Inicialização Aleatória da População e com uma população de 25 indivíduos. Para o cálculo da média do número de gerações que este AG levou para alcançar o ótimo global foram consideradas, dentre as cem rodadas do algoritmo, somente as que ele acertou.

RESULTADO DO TESTE Número de amostras 100 Porcentagem de acerto 82 Média do no. de gerações 37,0366 Valor máximo 200 Valor mínimo 2

A fig. 8 mostra o histograma das amostras. As amostras são o número de rodadas do algoritmo. Em cada rodada, o número de gerações foi registrado.

0 20 40 60 80 100 120 140 160 180 200 0 10 20 30 40 50 60

Histograma - Inicializaç ã o Aleató ria

Nú m e r o d e G e r a ç õ e s

Amostras

Fig. 8. Histograma das amostras para o AG com Inicialização Aleatória da população.

Pode-se observar neste histograma que em 57% das vezes o AG alcançou o ótimo global em menos de 40 gerações. A barra mais à direita do histograma corresponde ao número de vezes, no caso 18%, em que o algoritmo rodou entre 180 e 200 gerações e não alcançou o ótimo global.

B. Inicialização Implementada

Os resultados obtidos pelo AG utilizando a Inicialização proposta são relacionados na tabela a seguir. A população também continha 25 indivíduos.

RESULTADO DO TESTE Número de amostras 100 Porcentagem de acerto 99 Média do no. de gerações 33,4040 Valor máximo 177 Valor mínimo 1

Na fig. 9 é ilustrado o histograma das amostras. A partir dele podemos observar que em 75% das vezes o AG atingiu a solução ótima em menos de 40 gerações.

0 20 40 60 80 100 120 140 160 180 200 0 10 20 30 40 50 60 Nú m e r o d e G e r a ç õ e s Amostras

Histograma - Inicializaç ã o Proposta

Fig. 9. Histograma das amostras para o AG com Inicialização da população proposta.

Foi observado que mesmo reduzindo a população para 16 indivíduos, o AG com inicialização proposta obteve percentual de acerto de 96%, um resultado ainda bem melhor que o obtido pelo AG com Inicialização aleatória.

(9)

XII. CONCLUSÕES

A partir dos resultados podemos observar que a técnica proposta neste trabalho para gerar a população inicial do algoritmo genético contribui para uma melhor eficiência do algoritmo. Conforme se pode observar nos dados anteriores, a técnica proposta obteve, na média, um número menor de gerações para atingir a solução do problema. Além disso, entre as cem rodadas do algoritmo, o maior número de gerações obtido foi menor do que na inicialização aleatória. A solução ótima foi encontrada, no geral, com um número menor de gerações na maioria das vezes, mostrando que a técnica proposta possui uma convergência mais rápida para o ótimo global. Isto pode ser visualizado nos histogramas da fig. 8 e da fig. 9.

Entretanto, apesar de ser importante para o desempenho do AG, o método de geração da população inicial não é o fator mais significativo. Os componentes estruturais do AG mais significativos em relação ao desempenho são os critérios de seleção, substituição, mutação e cruzamento. Estes componentes são os que mais fortemente influem no resultado do AG pois afetam diretamente a evolução da população em direção à solução do problema.

Porém, a inicialização proposta neste trabalho tem a vantagem de cobrir todo o espaço solução, mas mantendo a variabilidade característica da inicialização aleatória. O fato de já cobrir inicialmente todo o espaço solução, aumenta a probabilidade de termos pelo menos um indivíduo próximo ou dentro da bacia do ótimo global. A convergência se torna mais rápida pois, a população não necessita “migrar” rumo ao mínimo global caso a geração aleatória tenha, por azar, colocado os indivíduos distantes do ponto ótimo. O processo de evolução se reduz a apenas convergir a população para a região do ótimo através do cruzamento dos indivíduos. Como o operador de cruzamento tem o efeito de reduzir a região de abrangência da população, se já garantirmos inicialmente que a população está distribuída por todo o espaço solução, podemos iniciar com uma taxa de cruzamento mais alta e uma taxa de mutação mais baixa, pois estaremos interessados apenas em concentrar a população e não mais em explorar o espaço de busca.

A importância de diminuir o número de gerações, ou seja, de iterações, para se alcançar a solução e, portanto, aumentar a velocidade de convergência do AG é que necessitaremos de menos avaliações da função objetivo. Isso representa uma redução no custo computacional inerente a certos problemas de otimização e do tempo de execução do algoritmo.

Por fim, para se obter conclusões mais concretas testes mais exaustivos, com um maior número de amostras, e com funções objetivo diversas deveriam ser realizados. Porém, com base no teste feito neste trabalho, podemos ver que a técnica de inicialização da população sugerida contribui para a melhora do desempenho do AG e para uma redução do número de avaliações da função objetivo.

XIII. REFERÊNCIAS

[1] GOLDBERG, David E. “Genetic Algorithms in Search, Optimization and Machine Learning” Addison-Wesley Co. Massachusetts, 1989. [2] HOLLAND, John H. “Adaptation in Natural and Artificial Systems”

University of Michigan Press Ann Arbor, 1975.

[3] MITCHELL, Melanie. “An Introduction to Genetic Algorithms” MIT Press Massachusetts, 1996.

[4] JANG, Jyh-Shing R., SUN, Chuen-Tsai, MIZUTANI, Eiji. “Neuro-Fuzzy and Soft Computing” Prentice Hall, Inc., 1997.

Referências

Documentos relacionados

5 “A Teoria Pura do Direito é uma teoria do Direito positivo – do Direito positivo em geral, não de uma ordem jurídica especial” (KELSEN, Teoria pura do direito, p..

Na figura seguinte apresenta-se o aspecto de uma folha de cálculo com esta informação, mais texto adicional que apenas serve para nos ajudar a compreender o que está em cada sítio

O objetivo do curso foi oportunizar aos participantes, um contato direto com as plantas nativas do Cerrado para identificação de espécies com potencial

O valor da reputação dos pseudônimos é igual a 0,8 devido aos fal- sos positivos do mecanismo auxiliar, que acabam por fazer com que a reputação mesmo dos usuários que enviam

(2019) Pretendemos continuar a estudar esses dados com a coordenação de área de matemática da Secretaria Municipal de Educação e, estender a pesquisa aos estudantes do Ensino Médio

Desta forma, foram criadas as seguintes hipóteses de investigação: H1 – O compromisso organizacional e o engagement são diferentes para as categorias dos militares dos

patula inibe a multiplicação do DENV-3 nas células, (Figura 4), além disso, nas análises microscópicas não foi observado efeito citotóxico do extrato sobre as

libras ou pedagogia com especialização e proficiência em libras 40h 3 Imediato 0821FLET03 FLET Curso de Letras - Língua e Literatura Portuguesa. Estudos literários