Computação Evolucionista Algoritmos Genéticos - Introdução Definição Conjunto de técnicas de otimização inspiradas na teoria da evolução natural. Esta abordagem remonta o início da computação, entre os anos 50 e 60, quando vários cientistas da computação estudaram sistemas evolucionários com a idéia de que a evolução poderia ser usada como um ferramenta de otimização para problemas na engenharia. Introdução Principal idéia da teoria da evolução Uma população de indivíduos evolui durante as gerações, sendo que aqueles mais aptos possuem uma probabilidade maior de terem uma prole mais numerosa, resultando em indivíduos cada vez melhores (mais adaptados). Principais Conceitos Inventados por John Holland nos anos 60 e desenvolvidos por ele e seus alunos na Universidade de Michigan em meados de 1970. Nesta técnica a analogia com os sistemas biológicos é mais forte, pois, além de ser baseado nos mecanismos de seleção natural, também se baseia na genética. Indivíduo -> Hipótese de Solução Fenótipo x Genótipo Em alguns casos a representação binária não é adequada. Principais Técnicas Nota: Programação Evolucionista Estratégia Evolucionista O espaço de busca é um espaço de soluções Sistemas Classificadores Notas: Em Resolução de Problemas a cadeia genética é uma cadeia binária de tamanho fixo. Aptidão (“Fitness”) de um Indivíduo -> aplicação da Função Heurística Algoritmos Genéticos População -> Os AG vasculham várias regiões do espaço de busca de cada vez Programação Genética Geração Inteligência Artificial Prof. Álvaro Guarda Técnicas Evolucionistas - 1 Técnicas Evolucionistas Seleção (proporcional à aptidão) Problema das N-Rainhas: Probabilidade de que uma hipótese H seja selecionada: A posição de cada rainha é dada pelo número da coluna que ela ocupa. Representação de uma Hipótese de Solução: Lista onde o primeiro elemento corresponde à Rainha da Linha 1 e assim sucessivamente. [ 2; 4; 1; 3] 01 11 00 10 Nota: A partir da cadeia genética é possível reconstruir o indivíduo. Prof. Álvaro Guarda Técnicas Evolucionistas - 2 p(Hi ) = f (Hi ) ∑ f (H ) H∈Pop Exemplo: 5 indivíduos Exemplo para N = 4: Inteligência Artificial Prof. Álvaro Guarda Algoritmos Genéticos - Operadores Genéticos Algoritmo Genético - Exemplo de Modelagem Cadeia Genética: Inteligência Artificial Roleta: Indivíduo Hi Nota f(Hi) P(Hi) A 20 0,40 B 12 0,24 C 5 0,10 A D 10 0,20 B E 3 0,06 C D Nota: E Regras de transição probabilísticas e não regras determinísticas - 3 Inteligência Artificial Prof. Álvaro Guarda Técnicas Evolucionistas - 4 1 Algoritmos Genéticos - Operadores Genéticos Algoritmos Genéticos - Operadores Genéticos Cruzamento de um ponto Clonagem Corta os pais em uma posição aleatória e recombina as partes Replica a Hipótese de Solução na próxima geração Mutação Gera uma nova Hipótese de Solução a partir de uma pequena modificação Pai 1 1 00 1 0 1 1 1 1 000 1 00 Pai 2 1 1 1 0000 1 000 1 1 1 0 Operador randômico de manipulação Filho 1 1 0 0 1 0 0 0 1 0 0 0 1 1 1 0 Introduz e mantém a variedade genética da população Filho 2 1 1 1 0 0 1 1 1 1 0 0 0 1 0 0 Garante a possibilidade de se alcançar qualquer ponto do espaço de busca Cruzamento de dois pontos Contorna mínimos locais Corta os pais em duas posições aleatórias e recombina as partes Cruzamento Gera novas Hipóteses de Solução a partir de 2 pais Pai 1 1 00 1 0 1 1 1 1 000 1 00 Pai 2 1 1 1 0000 1 000 1 1 1 0 Filho 1 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 Filho 2 1 1 1 0 0 1 1 1 1 0 0 1 1 1 0 Inteligência Artificial Prof. Álvaro Guarda Técnicas Evolucionistas - 5 Algoritmos Genéticos - Operadores Genéticos Inteligência Artificial Prof. Álvaro Guarda Técnicas Evolucionistas - 6 Algoritmo Genético (TamPop, NumGer,...) 1. Crie a população inicial: Pop ← TamPop hipóteses geradas aleatoriamente Cruzamento uniforme Gera uma máscara de bits aleatórios e recombina os bits dos pais 2. Avalie Pop: para cada hipótese H Є Pop, calcule a sua aptidão f(H) de acordo com a máscara 3. Evolua a população Pop uma geração (faça até condição de término) 3.1. Crie a nova população NovaPop (faça até gerá-la completamente) Máscara 1 1 1 1 000 1 1 0 0000 1 Pai 1 1 00 1 0 1 1 1 1 000 1 00 Pai 2 1 1 1 0000 1 00 0 1 1 1 0 3.1.1. Escolha um operador genético 3.1.2. Selecione hipóteses (a quantidade depende do operador) 3.1.3. Aplique o operador genético sobre as hipóteses selecionadas: Hnova ← operador(H) 3.1.4. Adicione a(s) hipótese(s) resultante(s) na nova população: Filho 1 1 0 0 1 0 0 0 1 1 0 0 1 1 1 0 NovaPop ← NovaPop + Hnova Filho 2 1 1 1 0 0 1 1 1 0 0 0 0 1 0 0 3.2. Atualize a população: Pop ← NovaPop 3.3. Avalie Pop: calcule a aptidão f(H) de cada hipótese H 4. Retorne resultado: a hipótese com a maior aptidão de todas as gerações. Inteligência Artificial Prof. Álvaro Guarda Técnicas Evolucionistas - 7 Inteligência Artificial Prof. Álvaro Guarda Técnicas Evolucionistas - 8 2