2005 International Nuclear Atlantic Conference - INAC 2005 Santos, SP, Brazil, August 28 to September 2, 2005 ASSOCIAÇÃO BRASILEIRA DE ENERGIA NUCLEAR - ABEN ISBN: 85-99141-01-5 HÍBRIDO DE PROGRAMAÇÃO GENÉTICA COM VARIANTE DE PBIL Gustavo Henrique Flores Caldas1 e Roberto Schirru2 1 Comissão Nacional de Energia Nuclear (CNEN - RJ) 22290-901 Rio de Janeiro, RJ [email protected] 2 Programa de Engenharia Nuclear – COPPE Universidade Federal do Rio de Janeiro Caixa Postal 68509 21945-970 Rio de Janeiro, RJ [email protected] ABSTRACT Programação Genética e PBIL (Population-Based Incremental Learning) são algoritmos evolucionários que tem encontrado aplicações em vários campos de aplicação. A Programação Genética busca uma solução permitindo que os indivíduos de uma população alterem, principalmente, suas estruturas. O PBIL, por outro lado, trabalha com indivíduos de estrutura fixa e é particularmente bem sucedido em encontrar soluções numéricas. Existem problemas em que é essencial o ajuste simultâneo da estrutura e de constantes numéricas em uma solução. A Regressão Simbólica é um exemplo em que tanto a forma quanto as constantes de uma expressão matemática devem ser encontradas. Apesar de a Programação Genética tradicional ser capaz de solucionar esse problema por si só, é interessante explorar uma cooperação com o PBIL, permitindo que cada algoritmo faça somente aquilo em que é o melhor: a Programação Genética se encarrega de encontrar uma estrutura e o PBIL de encontrar as constantes que serão incluídas na estrutura. Neste trabalho utiliza-se o benchmark “the sextic polynomial regression problem” para comparar algumas técnicas tradicionais de Programação Genética com a proposta do Híbrido de Programação Genética com PBIL. Os resultados são apresentados e discutidos. 1. INTRODUÇÃO Regressão Simbólica[1] é um problema tradicional da Programação Genética, relativamente simples, onde se busca encontrar a expressão matemática de uma curva que deve conter uma série de pontos dados. Tipicamente, em um problema de regressão, constantes numéricas são ajustadas a um formato particular de curva, mas em regressão simbólica, a forma da curva e as constantes devem ser encontradas simultaneamente. Neste trabalho, a Programação Genética será combinada com uma variante do algoritmo “Population-Based Incremental Learning [2]” (PBIL) com a finalidade de encontrar uma expressão que se aproxime da curva x 6 − 2 x 4 + x 2 . GA-P[3] é um sistema que emprega este princípio (com GA no lugar do PBIL), mas apresentou pouca vantagem comparado com a Programação Genética tradicional. O PBIL, além de ser mais simples, é mais rápido e, na maioria das vezes, apresenta resultados melhores do que um GA. Espera-se, portanto, que um Híbrido de Programação Genética com uma variante do PBIL (adequada para uma integração mais simples com o código da Programação Genética) apresente resultados sensivelmente superiores. 2. DESCRIÇÃO DAS TÉCNICAS UTILIZADAS 2.1. Programação Genética A Programação Genética[1] é um tipo de computação evolucionária onde um conjunto de programas de computador é comparado a uma população de indivíduos vivos. Quando dois indivíduos bem sucedidos se misturam, eventualmente, produzem indivíduos ainda mais bem sucedidos, que por sua vez, sobrevivem mais tempo e se reproduzem mais freqüentemente. Da mesma forma, espera-se que um conjunto de programas de computador, que se comportem como indivíduos, produza programas cada vez mais aptos a resolver um determinado problema. O tipo de representação mais popular em Programação Genética é a “árvore”. Uma expressão simples, representada em árvore, é mostrada na fig. 1. + * x 3 x Figura 1. Exemplo de uma representação em forma de árvore. Os principais operadores genéticos utilizados são crossover e mutação, em analogia com as principais fontes de mudança nas moléculas de ADN. O crossover promove a troca de subárvores entre dois indivíduos enquanto que a mutação substitui uma sub-árvore por outra criada. Com a seleção dos indivíduos mais aptos para sofrerem a ação dos operadores genéticos, impõe-se uma pressão evolucionária em favor do surgimento de soluções cada vez melhores. INAC 2005, Santos, SP, Brazil. 2.2. Variante de PBIL O PBIL[2] (Population-Based Incremental Learning) é um algoritmo em que, como nos algoritmos genéticos, uma região de interesse do espaço de busca é codificada por meio de vetores binários. No PBIL, entretanto, a cada geração, uma população é criada a partir de um vetor de probabilidades, que evolui de geração para geração. A Variante do PBIL praticada neste trabalho difere apenas na forma como o vetor de probabilidades evolui. Enquanto que no PBIL original este vetor é incrementado na direção a favor do melhor indivíduo e, também, na direção contrária ao do pior, a presente atualização será realizada a partir de ∑ A ⋅v = ∑ A n Vk +1 l =1 l n l =1 l (1) l onde Vk +1 é o novo vetor de probabilidades, n é o tamanho da população e Al é a aptidão correspondente à vl , que é um ponto do espaço de busca, candidato à solução do problema. Pode-se mostrar que a equação (1) pode ser reescrita como Vk +1 ≅ Vk + Am − A ∑ m ( Am − A ) ⋅ vm ∑ p ( A − Ap ) ⋅ v p 1 − . ∑ A n m ( ) ( ) A A A A − − ∑ m m ∑p p (2) As somas em m (melhores) consideram as aptidões acima da média enquanto a soma em p (piores) considera as aptidões abaixo da média. A aproximação é tanto melhor quanto maior for a população n. Pode-se verificar que a atualização é feita na direção a favor da média dos melhores indivíduos e na direção contrária a da média dos piores indivíduos. Essas médias são ponderadas pelo desvio das aptidões em relação a aptidão média e o fator de correção de Vk não é fixo, mas depende da distribuição das aptidões. Geração após geração a aplicação desse método favorece a criação de indivíduos cada vez mais aptos, aumentando a chance de se alcançar uma solução. 2.3. Programação Genética com PBIL A Programação Genética será combinada com o PBIL em um processo conhecido como coevolução, onde uma população de árvores evolui paralelamente com um vetor de probabilidades de PBIL. Para tanto, os indivíduos serão representados como na estrutura mostrada na fig. 2. INAC 2005, Santos, SP, Brazil. c + * x 11 c x Figura 2. Exemplo de uma representação onde o PBIL é combinado à Programação Genética. Como pode ser observado, a fig. 2 representa exatamente a expressão da fig. 1. A linha tracejada indica que associada a cada árvore existe uma vetor, de tamanho fixo, binário que será responsável pela codificação das constantes. Antes de cada árvore ser avaliada, um vetor binário é gerado a partir do vetor de probabilidades; e as constantes codificadas nesse vetor binário são inseridas na árvore. A aptidão é, então, calculada como se houvesse apenas a árvore. O valor da aptidão obtido dessa forma é utilizado, independentemente, para se calcular as novas gerações de árvores e vetores de probabilidades. 3. METODOLOGIA O benchmark “the sextic polynomial regression problem”[1] trata de encontrar uma aproximação para a curva x 6 − 2 x 4 + x 2 no intervalo [-1, 1]. Para isso se utilizará a representação mostrada na fig. 2. Poderão constar na árvore as operações {+, -, *, /}, onde / é divisão protegida, que retorna o valor 1 quando o dividendo é 0. Poderão constar, também, os terminais {x, a, b, c}, em que a, b e c são as constantes que serão codificadas no vetor binário. No lugar da codificação binária tradicional, as constantes serão representadas utilizando o código de Gray, o que facilita ajustes contínuos. Cada constante constará de 7 bits, podendo representar os números desde 0,0 até 12,7. O vetor de probabilidades terá portanto 3 × 7 = 21 coordenadas. Os indivíduos serão testados em 50 pontos do intervalo [0, 1], escolhidos aleatoriamente antes de cada avaliação. A aptidão padrão de cada indivíduo será ATp ( I ) = ∑ ( yk − PGkI ) 2 + 10 −5 ⋅ TI k (3) onde yk é o k-ésimo valor correto, PGkI é o valor retornado pelo algoritmo e TI é o tamanho do indivíduo. O fator proporcional ao tamanho exerce uma pressão para que indivíduos menores sejam favorecidos. INAC 2005, Santos, SP, Brazil. A aptidão realmente é utilizada no algoritmo, contida em [0, 1] é A( I ) = 1 1 + ATp ( I ) (4) O algoritmo será comparado com a técnica tradicional (ERC), utilizando-se apenas a Programação Genética. Com ERC (Ephemeral Random Constants) substituem-se as constantes a, b e c por um gerador aleatório de constantes, no intervalo [-1, 1]. Todos os testes foram realizados com uma população de 4000 indivíduos e durante 1000 gerações. Todos os resultados apresentados serão valores médios de 10 tentativas independentes. 4. RESULTADOS A evolução da aptidão é apresentada na fig. 3. 1.0 PBIL ERC 0.9 0.8 Aptidão 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0.0 0 200 400 600 800 1000 Geração Figura 3. Aptidão dos melhores indivíduos encontrados utilizando-se a combinação de PG com PBIL e PG com ERC. Lembrando que esses valores são médias de 10 tentativas independentes, percebe-se que, para a combinação PG/PBIL, todas as tentativas são bem sucedidas por volta da 300ª geração. INAC 2005, Santos, SP, Brazil. A evolução do tamanho é apresentada na fig. 4. 300 PBIL ERC 250 Tamanho 200 150 100 50 0 0 200 400 600 800 1000 Geração Figura 4. Tamanho dos melhores indivíduos encontrados utilizando-se a combinação de PG com PBIL e PG com ERC. Evidentemente, o termo proporcional ao tamanho dos indivíduos contido na aptidão não é eficaz com o uso de ERC. Vale mencionar que com o uso de ERC, teve-se que impor um tamanho máximo de 300 nós, caso contrário as populações cresceriam indefinidamente. 5. CONCLUSÕES Pode-se notar que o algoritmo proposto, quando comparado com o tradicional, encontra soluções melhores e mais compactas, o que favorece a interpretação. Vale ressaltar, também que as soluções encontradas com o emprego da nova técnica são todas exatas, e não meras aproximações como de costume. REFERENCIAS 1. Koza, J. R., Genetic Programming II – Automatic Discovery of Reusable Programs, Cambridge, 1994. 2. M. D. Machado. Um Novo Algoritmo Evolucionário com Aprendizado LVQ para a Otimização de Problemas Combinatórios como a Recarga de Reatores Nucleares. Tese de doutorado, COPPE/UFRJ, Rio de Janeiro, 1999. 3. L. M. Howard and D. J. D’Angelo. The GA-P: A genetic algorithm and genetic programming hybrid. Evolutionary Programming, pages 11–15, 1995. INAC 2005, Santos, SP, Brazil.