UMA INTRODUÇÃO AOS ALGORITMOS GENETICOS Computação Evolutiva e Engenharia do Conhecimento (EGC6011) Como estou lecionando? Ligue 0xx48-331-7121 Uma visão geral dos GAs Um algoritmo genético é uma classe de algoritmo de busca. O algoritmo procura uma solução dentro de um espaço para um problema de otimização. A principal característica dos GAs é como esta busca pela solução ótima é feita: O algoritmo cria uma “população” de possíveis soluções para o problema e a deixa “evoluir” por várias gerações para encontrar melhores e melhores soluções. Computação Evolutiva e Engenharia do Conhecimento (EGC6011) Como estou lecionando? Ligue 0xx48-331-7121 Uma visão geral dos GAs 1. Cria uma população aleatória de candidatos a solução (pop). 2. Em quanto as condições de terminação não são satisfeitas: (cada iteração e geração): (a) Cria uma nova população vazia (new-pop). (b) Em quanto new-pop não estiver completa: i. Selecione dois indivíduos aleatoriamente de pop ( dando preferência na seleção aos indivíduos mais fit) . ii. Cross-over os dois indivíduos para obter dois novos indivíduos. (c) Dá a cada membro de new-pop a chance de mutate. (d) Substitui pop com new-pop. 3. Seleciona o individuo da população com a melhor fitness como a solução do problema. Computação Evolutiva e Engenharia do Conhecimento (EGC6011) Como estou lecionando? Ligue 0xx48-331-7121 Uma visão geral dos GAs Inicializar a população Iniciar nova geração Calcular adequação dos crom osom os Selecionar pais usando adecualçao G erar a ninhada M utar a ninhada R estaurar o tam anho da pop. Solução Computação Evolutiva e Engenharia do Conhecimento (EGC6011) Como estou lecionando? Ligue 0xx48-331-7121 População A população é a coleção de candidatos a soluções que se estão considerando durante o uso do algoritmo. Pelas gerações do algoritmo, novos membros “nascem” na população em quanto outros “morrem” (saem da população). Uma simple solução na população é referenciada como um individuo. A adaptação (fitness) de um individuo é uma medida quam “boa” a solução representada pelo individuo é. Quanto melhor a solução, maior será a sua adaptação. É claro que isto depende do problema a ser resolvido. Computação Evolutiva e Engenharia do Conhecimento (EGC6011) Como estou lecionando? Ligue 0xx48-331-7121 Seleção O processo de seleção é análogo à sobrevivência dos mais adaptados no mundo natural. Indivíduos são selecionados para “procriação” (cross-over) baseados no valor da sua adaptação (fitness) – quanto mais adaptado o individuo, maior será a chance deste individuo seja escolhido para reprodução. O cross-over ocorre pela mistura de duas soluções (indivíduos) para crias dois novos indivíduos. Durante cada geração, existe uma pequena chance de que um individuo sofra uma mutação, que vai a mudar o individuo levemente. Computação Evolutiva e Engenharia do Conhecimento (EGC6011) Como estou lecionando? Ligue 0xx48-331-7121 Questões • Como um indivíduo é representado? • Como a adaptação de um indivíduo é calculada? • Como os indivíduos são selecionados para pro-criação? • Como os indivíduos são “crossed-over”? • Como os indivíduos são mutados? • Qual o tamanho da população? • Quais são as condições de terminar o processo? A resposta as questões dependem do problema especifico. Computação Evolutiva e Engenharia do Conhecimento (EGC6011) Como estou lecionando? Ligue 0xx48-331-7121 Tamanho da População O tamanho da população é muito variável. Quanto maior seja a população, temos maior quantidade de soluções possíveis, que significa maior variação da população. Variações significa que é mais provável que melhores soluções sejam criadas. Então, a população deve ser a maior possível. O limite é o tempo que vai a demorar o algoritmo em ser executado. Computação Evolutiva e Engenharia do Conhecimento (EGC6011) Como estou lecionando? Ligue 0xx48-331-7121 Terminação do Algoritmo O significado de “Em quanto as condições de terminação não são satisfeitas” não é obvio no caso dos GAs. O motivo é que não existe fim para o algoritmo. • A abordagem mais simples é rodar o algoritmo de busca por um determinado número de gerações – mais gerações geralmente é melhor. • Outra abordagem é terminar o algoritmo se depois de passadas algumas gerações não se obtém uma melhora na adaptação do melhor individuo da população. Computação Evolutiva e Engenharia do Conhecimento (EGC6011) Como estou lecionando? Ligue 0xx48-331-7121 Exemplo: Maximização de funções Uma aplicação comum dos GAs é obter valores para um grupo de variáveis que maximizem/minimizem funções destas vadeáveis. Estas variáveis pelas sua vez podem estar sujeitas as restrições: Computação Evolutiva e Engenharia do Conhecimento (EGC6011) Como estou lecionando? Ligue 0xx48-331-7121 Exemplo: Maximização de funções Como um indivíduo é representado? Temos que ter valores para w, x, y e z. Se temos valores (qualquer valor) para as variáveis, temos um candidato a solução do problema. O problema é como representar estas 4 valores. Uma forma muito simples é usar um vetor de 4 valores ( inteiros ou reais). Sem embargo, para GAs é geralmente melhor ter grandes indivíduos–de esta forma, as variações podem ser feitas de uma forma mais suave. Podemos escolher uma cadeia de bits para cada variável, e concatenar as 4 cadeias formando uma única cadeia de bits Computação Evolutiva e Engenharia do Conhecimento (EGC6011) Como estou lecionando? Ligue 0xx48-331-7121 Como é calculado a adaptação Existe uma diferencia entre as funções de adaptação (fitness) e avaliação (evaluation) . As funções de avaliação retorna uma medida absoluta do individuo. As funções de adaptação mede o valor do individuo relativo ao resto da população. Computação Evolutiva e Engenharia do Conhecimento (EGC6011) Como estou lecionando? Ligue 0xx48-331-7121 Como são selecionados os Pais? A chave do processo de seleção é que deve ser probabilisticamente tal de que indivíduos com maior adaptação (fitness) tenham maior probabilidade de serem escolhidos. Uma possibilidade é ordenar os elementos segundo a ordem decrescente da função de adaptação. Depois calcular a probabilidade de de seleção dos indivíduos em função desta ordem: O primeiro individuo tem por exemplo 70% de chances de ser escolhido, o segundo 40 etc. Computação Evolutiva e Engenharia do Conhecimento (EGC6011) Como estou lecionando? Ligue 0xx48-331-7121 Como os indivíduos são cruzados? Uma vez que encolhemos um par de indivíduos, eles são “procriados” – ou em linguagem de GAs eles são crossed-over. Tipicamente dois filhos são criados para cada conjunto de pais. Um método de realizar o cross-over é o seguinte: Duas locações são escolhidas aleatoriamente dentro dos indivíduos. Estas definem os correspondentes substrings em cada individuo. Os substrings são intercambiados entre os dois indivíduos pais e formam os dos novos filhos. Computação Evolutiva e Engenharia do Conhecimento (EGC6011) Como estou lecionando? Ligue 0xx48-331-7121 Como os indivíduos mutados? Finalmente, temos que permitir que os indivíduos mutem. Quando os indivíduos são codificados usando cadeias de bits, a forma mais fácil de implementar a mutação é permitir que cada um dos bits da cadeia tenham a chance de mutar. Esta chance deve ser muito pequena já que não queremos que os indivíduos cambiem radicalmente devido a mutações. (ver problemas com o MSB). Colocando uma porcentagem de 0,1% é razoável.. Computação Evolutiva e Engenharia do Conhecimento (EGC6011) Como estou lecionando? Ligue 0xx48-331-7121 Problema do Caixeiro viajante GAs podem ser usados para resolver o problema do Caixeiro viajante (traveling salesman problem (TSP)). Um caixeiro tem que atender várias cidades incluindo a sua. Tem que viajar partindo da sua, visitando todas as outras cidades (uma única vez) e retornar a sua. Ele quer realizar a viajem gastando a menor quantidade possível de dinheiro/gasolina etc. Uma proposta mais formal: dado um grafo de N-vertices, encontrar o caminho de menor custo, partindo de uma cidade v that visitando as outras cidades exatamente uma vez e retornado a v. Computação Evolutiva e Engenharia do Conhecimento (EGC6011) Como estou lecionando? Ligue 0xx48-331-7121 Representação dos indivíduos e Fitness Nosso primeiro passo é decidir como representar cada individuo candidato a solução, ou tour. O modelo de cadeia de bits não é muito útil. Os cross-overs e mutações podem facilmente produzir um tour que é inválido– Cada cidade dever ser visitada uma vez no tour(fora a cidade inicial). A forma prática de de representar os indivíduos é um vetor de cidades (armazenadas como números inteiros) . O custo de viajar entre cidades deve ser dado na forma de matriz. O uso de um vetor de inteiros produz problemas no cross-over e nas mutações Computação Evolutiva e Engenharia do Conhecimento (EGC6011) Como estou lecionando? Ligue 0xx48-331-7121 Cross-over e Mutação Cross-over e mutações devem produzir tours válidos. Então estes processos devem ser modificados em relação ao caso de procurar extremos de funções. Mais a idéia básica pode continuar a mesma,. A mecânica deve ser diferente: Para cross-over, ao in vez de simplesmente trocar sub-cadeias (que pode resultar em um tour inválido), manteremos as mesmas cidades, mais mudaremos a sua ordem, para ajustar o outro pai de cross-over. Computação Evolutiva e Engenharia do Conhecimento (EGC6011) Como estou lecionando? Ligue 0xx48-331-7121 Resumo GAs são muito úteis. Especialmente quando os problemas não podem ser resolvidos por métodos tradicionais. São interessantes, porque não obvio que eles funcionem, mais funcionam. Computação Evolutiva e Engenharia do Conhecimento (EGC6011) Como estou lecionando? Ligue 0xx48-331-7121 Bibliografia •Scott M. Thede - Introduction to genetic algorithms •J.H. Holland - Adaptation in Natural and Artificial Systems, MIT Press, 1975. •Stuart Russell and Peter Norvig - Artificial Intelligence: A Modern Approach, Second Edition, Prentice Hall, 2003. Computação Evolutiva e Engenharia do Conhecimento (EGC6011) Como estou lecionando? Ligue 0xx48-331-7121 Engenheiros Computação Evolutiva e Engenharia do Conhecimento (EGC6011) Como estou lecionando? Ligue 0xx48-331-7121