1 / 32

Algoritmos Genéticos

Algoritmos Genéticos. Seminário de MAC5758 Introdução ao Escalonamento e Aplicações Cleber Miranda Barboza cleberc@linux.ime.usp.br http://www.linux.ime.usp.br/~cleberc. Introdução.

missy
Download Presentation

Algoritmos Genéticos

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Algoritmos Genéticos Seminário de MAC5758 Introdução ao Escalonamento e Aplicações Cleber Miranda Barboza cleberc@linux.ime.usp.br http://www.linux.ime.usp.br/~cleberc

  2. Introdução • Um Algoritmo Genético (AG), conceitualmente, segue passos inspirados no processo biológico de evolução natural segundo a teoria de Darwin • Algoritmos Genéticos seguem a idéia de SOBREVIVÊNCIA DO MAIS FORTE (melhores soluções a cada geração)

  3. Background • Cromossomos • Todo organismo vivo consiste de células. • Em cada célula, existe o mesmo conjunto de cromossomos • Cromossomos consistem de genes –seqüências de DNA- que servem para determinar as características de um indivíduo

  4. Background (Cont.) • Reprodução • Durante o processo de reprodução ocorre-se a recombinação (ou crossover –cruzamento-). Genes dos pais se combinam para formar novos cromossomos. • Os descendentes criados podem sofrer mutações, ou seja, os elementos do DNA podem ser trocados • A adaptação de um organismo pode ser medida pelo sucesso do mesmo em sua vida

  5. Idéia básica • Começar com um conjunto de soluções (representado por cromossomos) chamado população • Soluções de uma população são escolhidas e usadas para formar uma nova população (reprodução) • Espera-se que a nova população seja “melhor” que a anterior

  6. Idéia básica (Cont.) • Soluções que são escolhidas para formar novas soluções (descendentes) são escolhidas de acordo com uma função de adaptação (função objetiva - custo) • O processo é repetido até que uma condição seja satisfeita

  7. Questões importantes • Como criar cromossomos e qual tipo de codificação usar? • Como escolher os pais para a realização do crossover? • A geração de uma população a partir de duas soluções pode causar a perda da melhor solução. O que fazer?

  8. Esboço do algoritmo • [Início] Geração aleatória de uma população de n cromossomos • [Adaptação] Verificar a função objetivaf(x) de cada cromossomo x • [População] Cria-se uma nova população pela repetição a seguir: • [Seleção] Selecione um par de cromossomos da população de acordo com a adaptação de cada um (os mais bem adaptados tem maior chance de serem escolhidos) • [Crossover] Produza dois descendentes (filhos) realizando crossover com os cromossomos dos pais. O ponto para a realização do crossover deve ser aleatório. • [Mutação] Com uma certa probabilidade, o descendente sofre mutação em cada locus (posição no cromossomo). • [Aceitação] Coloque os descendentes em uma nova população, juntamente com a melhor solução da geração velha

  9. Esboço do algoritmo (Cont.) • [Troca] Substitua a população velha pela nova • [Teste] Se a condição de finalização é satisfeita, pare, e retorne a melhor solução da população atual • [Adaptação] • [Laço] Volte ao passo 1

  10. Codificação • Como realizar a codificação de cromossomos? • É a primeira pergunta que deve ser feita ao resolver um problema com AG • A codificação dependerá fortemente do problema

  11. Codificação binária • É a mais comum devido a sua simplicidade • Cada cromossomo é uma string de bits – 0 ou 1 • Crom: A = 1 0 1 1 0 0 1 0 1 1 • Crom: B = 1 1 1 1 1 1 0 0 0 0 • Exemplo de uso: problema da mochila • Codificação: Cada bit diz se um elemento está ou não na mochila

  12. Codificação por permutação • Mais usado em problemas de ordenação • Cada cromossomo é uma string de números que representa uma posição numa seqüência • Crom A: 1  5  3  2  6  4  7  9  8 • Crom B: 8  5  6  7  2  3  1  4  9 • Exemplo de uso: problema do caxeiro viajante • Codificação: os cromossomos descrevem a ordem em que o caxeiro irá visitar as cidades

  13. Codificação por valor • Usado em problemas onde valores mais complicados são necessários • Cada cromossomo é uma seqüência de valores • Crom A: 1.2324 5.3243 0.4556 2.3293 2.4545 • Crom B: ABDJEIFJDHDIERJFDLDFLFEGT • Crom C: (back), (back), (right), (forward), (left)

  14. Codificação por valor (Cont.) • Exemplo de uso: dada uma estrutura, encontrar pesos para uma rede neural • Codificação: Valores reais num cromossomo representam pesos em uma rede neural

  15. Crossover • Após decidir qual codificação usar, procede-se com a operação crossover • A operação deve ser realizada sobre os cromossos dos pais para a criação de descendentes • Crom1: 11010 | 00100110110 • Crom2: 11011 | 11000011110 • Filho 1: 11010 | 11000011110 • Filho 2: 11011 | 00100110110

  16. Mutação • O objetivo da mutação é evitar que as soluções na população fiquem apenas num mínimo local • Filho1 antes : 1101111000011110 • Filho2 antes : 1101100100110110 • Filho1 depois : 1100111000011110 • Filho2 depois : 1101101100110110

  17. Problema da grade horária • Escalonar salas, professores e classes em um número fixo de períodos de tal maneira que nenhum professor, classe ou sala sejam usados mais de uma vez num mesmo período • Suposições para resolver o problema • Uma classe consiste de um certo número de estudantes • As classes são disjuntas, ou seja, não há estudantes em comum

  18. Problema da grade horária (Cont.) • Em cada período uma matéria é lecionada a uma classe • É possível que uma matéria apareça mais de uma vez em um período • Uma combinação particular de (professor, matéria, sala, classe) é chamada de tupla • A tarefa de realizar a combinação (professor, matéria, sala, classe) para formar uma tupla é feita à parte

  19. Problema da grade horária (Cont.)

  20. Problema da grade horária (Cont.) • Para medir a qualidade da grade horária (função objetiva - custo), calcular o número de colisões em qualquer grade. • A grade aceitável tem custo 0 • O custo de cada período pode ser dado pela soma dos três componentes: custo da classe, custo do professor e custo da sala

  21. Problema da grade horária (Cont.) • O custo das classes é o número de vezes em que cada classe aparece num período menos 1. • Se uma classe não aparece em nenhum período seu custo é 0 • A mesma idéia se aplica para os professores e salas • Assim, o custo da grade é a soma dos custos de cada período

  22. Problema da grade horária (Cont.) • Como fazer o mapeamento entre a grade e os cromossomos? • Representação do problema usando tuplas:

  23. Problema da grade horária (Cont.) • Mapeamento das tuplas em períodos (representação de uma grade – indivíduo):

  24. Problema da grade horária (Cont.) • Representação de tuplas usando cromossomos:

  25. Problema da grade horária (Cont.) • Reprodução:

  26. Problema da grade horária (Cont.) • Mutação:

  27. Problema da grade horária (Cont.) • Problema causado pela perda de tuplas:

  28. Problema da grade horária (Cont.) - Algoritmo • Enquanto número de gerações < limite e não houver indivíduo perfeito faça • Para cada filho a ser gerado faça • Escolha dois indivíduos aleatórios da população velha • Crie um filho vazio • Para cada período dos pais faça • Realize os crossover dos períodos correspondentes, produzindo um novo período • Copie o novo período para a posição correspondente do filho

  29. Problema da grade horária (Cont.) - Algoritmo • Arrumar a perda e duplicação de tuplas • Aplicar mutação selecionando aleatóriamente um período e uma tupla • Medir o custo do indivíduo • Se custo < mínimo permitido • Matar o filho • Se não • Colocar o filho na população nova • População velha = População nova

  30. Problema da grade horária (Cont.) • Resultados:

  31. Problema da grade horária (Cont.) • Paralelizando a reprodução:

  32. Referências • H.Firas. Handwritten Numeral Recognition Using Neural Networks, em: http://ise.stanford.edu/class/ee368a_proj00/project2/node4.html • GENETIC ALGORITHMS, em: http://cs.felk.cvut.cz/~xobitko/ga/main.html • D.Abramson, J.Abela. A Parallel Genetic Algorithm for Solving the School Timetabling Problem, em: http://citeseer.nj.nec.com/abramson92parallel.html • D. Abramson. Constructing School Timetables using SimulatedAnnealing: Sequential and Parallel Algorithms, em: http://citeseer.nj.nec.com/abramson91constructing.html • J.E.Boggess. USING GENETIC ALGORITHMS FOR SCHEDULING ENGINEERING MISSIONS, em: http://citeseer.nj.nec.com/55397.html

More Related