Publicidad
Publicidad

Más contenido relacionado

Último(20)

Publicidad

Algoritmos Genéticos com Arduino

  1. Algoritmo Genético com Arduino Marcelo Laranjeira Melo
  2. Contextualização (corrida de carros) Quantas maneiras de um carro chegar em primeiro lugar?
  3. Contextualização (corrida de carros) Quantas maneiras de um carro chegar em primeiro lugar? 4
  4. Contextualização (corrida de carros) Quantas maneiras de um carro chegar em segundo lugar? 3
  5. Contextualização (corrida de carros) Quantas maneiras de um carro chegar em terceiro lugar? 2
  6. Contextualização (corrida de carros) Quantas maneiras de um carro chegar em quarto lugar? 1
  7. Contextualização (corrida de carros) Logo, temos: 4x3x2x1 = 24 arranjos!
  8. Contextualização (Problema do Caixeiro Viajante) Um caixeiro viajante tem que visitar n cidades diferentes seguindo as regras abaixo: ● Parta da cidade origem; ● Passe por todas as demais cidades uma única vez; ● Retorne à cidade origem ao final do percurso; ● Percorra uma rota que dá a menor distância possível.
  9. Contextualização (Problema do Caixeiro Viajante) Um caixeiro viajante tem que visitar n cidades diferentes seguindo as regras abaixo: ● Parta da cidade origem; ● Passe por todas as demais cidades uma única vez; ● Retorne à cidade origem ao final do percurso; ● Percorra uma rota que dá a menor distância possível. n = 4 cidades, a primeira e última posição são fixas.
  10. Contextualização (Problema do Caixeiro Viajante) Um caixeiro viajante tem que visitar n cidades diferentes seguindo as regras abaixo: ● Parta da cidade origem; ● Passe por todas as demais cidades uma única vez; ● Retorne à cidade origem ao final do percurso; ● Percorra uma rota que dá a menor distância possível. ABCDA ABDCA ACBDA ACDBA ADBCA ADCBA n = 4 cidades, a primeira e última posição são fixas. Logo, o número de rotas é 3 x 2 x 1 = 6
  11. Contextualização (Problema do Caixeiro Viajante) Um caixeiro viajante tem que visitar n cidades diferentes seguindo as regras abaixo: ● Parta da cidade origem; ● Passe por todas as demais cidades uma única vez; ● Retorne à cidade origem ao final do percurso; ● Percorra uma rota que dá a menor distância possível. ABCDA ABDCA ACBDA ACDBA ADBCA ADCBA n = 4 cidades, a primeira e última posição são fixas. Logo, o número de rotas é 3 x 2 x 1 = 6 Em notação de fatorial temos: R(n) = (n - 1)!
  12. Contextualização (Problema do Caixeiro Viajante) Custo da menor distância: 20+25+25+23+26+19+12+17+38+26+21+15+17+19+19+22+25+29 = 398 Rotas possíveis: R(18) = (18-1)! → R(18) = 17! → 355.687428096000 (FORÇA BRUTA)
  13. Processador FLOPS Tempo de resolução por força bruta [ R(18) = 17! ] AMD Ryzen Threadripper 3970X 32-Core Processor 306.67 x 109 306670000000 / 17 = 18.039411764 rotas por segundo 355.687428096000 / 18.039411764 = 1.9717 segundos 1.9717 / 60 / 60 = 5,47 horas Intel(R) Core(TM) i7-4600U CPU @ 2.10GHz 11.91 x 109 11910000000 / 17 = 700.588235 rotas por segundo 355.687428096000 / 700.588235 = 507.698 segundos 507.698 / 60 / 60 / 24 = 6 dias Intel(R) Celeron(R) CPU 1037U @ 1.80GHz 4.05 x 109 4050000000 / 17 = 238.235294 rotas por segundo 355.687428096000 / 238.235294 = 1.493008 segundos 1.493008 / 60 / 60 / 24 = 17 dias Tempo de processamento do Problema do Caixeiro Viajante ● 1 GFLOPS = 109 FLOPS (1 bilhão de operações/ segundo) ● Lista processadores: https://boinc.bakerlab.org/rosetta/cpu_list.php
  14. Tempo de processamento do Problema do Caixeiro Viajante E para 100 cidades?
  15. Tempo de processamento do Problema do Caixeiro Viajante 100! é exatamente: 9332621544394415268169923885626670049071596826438162146859 2963895217599993229915608941463976156518286253697920827223 758251185210916864000000000000000000000000
  16. Tempo de processamento do Problema do Caixeiro Viajante Processador FLOPS Tempo de resolução por força bruta [ R(18) = 17! ] AMD Ryzen Threadripper 3970X 32-Core Processor 306.67 x 109 306670000000 / 100 = 3.066700000 rotas por segundo --------------------------------------------------------------------------- 9332621544394415268169923885626670049071596826438162146859 2963895217599993229915608941463976156518286253697920827223 758251185210916864000000000000000000000000 / 3.066700000 = 3.043213077×10¹⁴⁸ segundos -------------------------------------------------------------------------- 3.043213077×10¹⁴⁸ / 31.536.000 = 9.649.965.364.592.130.000.000.000.000.000.000.000.000.000.000.000.0 00.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000. 000.000.000.000.000.000.000.000.000.000.000.000.000 anos! ● 1 ano tem 31.536.000 segundos
  17. O que é Algoritmo Genético? “Programas de computador que ‘evoluem’ de maneira semelhante à seleção natural podem resolver problemas complexos que mesmo seus criadores não entendem completamente” John H. Holland (1975)
  18. O que é Algoritmo Genético? É uma técnica de busca, otimizada, baseados nos mecanismos de seleção natural e da genética. Os Algoritmos genéticos são uma classe particular de algoritmos evolutivos que usam técnicas inspiradas pela biologia evolutiva como hereditariedade, mutação, seleção natural e recombinação.. Fonte:http://www2.econ.iastate.edu/tesfatsi/holland.GAIntro.htm
  19. Quando devemos usar o Algoritmo Genético? Para otimizar a resolução de um problema de busca com menor custo de tempo!
  20. Quando devemos usar o Algoritmo Genético? - Qual o tempo dos focos verde e vermelho de um semáforo em um cruzamento para que haja uma maior fluidez dos veículos em determinado dia e horário? - Quantas, quais e que disposição de mercadorias devo levar em um caminhão de forma que todas caibam dentro do baú, evitando custos com combustível e gastando menos tempo? - Como ter as melhores alternativas de investimento no Mercado Financeiro? - Como fazer análise de risco em clientes? - Dentre outros…
  21. Robôs com Algoritmo Genético O professor da Universidade de Cornell, Hod Lipson, demonstra como um robô pode aprender a andar sem nenhum conhecimento de sua forma e função. “Dentro de um número relativamente pequeno dessas ações balbuciantes, ele descobrirá como é”, diz Lipson. Ele acrescenta que, eventualmente, "ele pode descobrir como se mover". Vídeo: https://www.youtube.com/watch?v=iNL5-0_T1D0
  22. Robôs com Algoritmo Genético Artigo: https://www.researchgate.net/publication/268256 3_Evolving_Hexapod_Gaits_Using_A_Cyclic_G enetic_Algorithm Vídeo: https://www.youtube.com/watch?v=qgGEK8 MrCZE Fonte: Connecticut College
  23. Robôs com Algoritmo Genético Artigo: https://www.researchgate.net/publication/221438 658_The_Crawler_A_Class_Room_Demonstrat or_for_Reinforcement_Learning
  24. Terminologias
  25. Terminologias Geração → População → Indivíduo → Cromossomo → Gene
  26. Fluxo do Algoritmo Genético
  27. População inicial ● Composta por indivíduos (solução do problema); ● Na população inicial são gerados indivíduos com genes aleatórios. 12 80 120 10 Indivíduo 1 Indivíduo 2 Indivíduo 3 . . . Indivíduo 100 Servo 1 Servo 2 Servo 1 Servo 2 105 33 45 3 22 5 80 27 99 77 54 66 . .
  28. Avaliação (fitness) O problema a ser resolvido é capturado em uma função objetivo que indica o fitness de cada indivíduo de acordo com seu cromossomo. 12 80 120 10 Indivíduo 1 Indivíduo 2 Indivíduo 3 . . . Indivíduo 100 Servo 1 Servo 2 Servo 1 Servo 2 Avaliação (pulsos) 105 33 45 3 22 5 80 27 99 77 54 66 . . 1 0 4 2 . .
  29. Avaliação (fitness) Para a avaliação dos indivíduos no robô foi utilizado o Encoder, que é um sensor eletro-mecânicos, cuja funcionalidade é transformar posição em sinal elétrico digital.
  30. Critério de parada ● Quando atinge o número máximo de gerações; ● Quando encontrou a solução (quando esta é conhecida); ● Perda de diversidade; ● Convergência nas últimas gerações (não houve melhora da na avaliação).
  31. Crossover (Reprodução)
  32. Crossover (Reprodução) Combinam partes dos genes dos pais selecionados para produção de filhos. 12 80 120 10 Indivíduo 1 Indivíduo 2 3 12 7 90
  33. Crossover (Reprodução) Combinam partes dos genes dos pais selecionados para produção de filhos. 12 80 120 10 Indivíduo 1 Indivíduo 2 3 12 7 90 Ponto de corte
  34. Crossover (Reprodução) Combinam partes dos genes dos pais selecionados para produção de filhos. 12 12 7 90 3 80 120 10 12 80 120 10 Indivíduo 1 Filho 1 Indivíduo 2 Filho 2 3 12 7 90
  35. Mutação Alteram partes mínimas dos genes para produção de filhos (mutantes). A taxa de mutação não deve ser alta para não prejudicar a diversidade de cromossomos na população. 12 12 7 90 3 80 120 10 Filho 1 Filho mutante 1 Filho 2 Filho mutante 2 12 1 7 90 3 80 120 3
  36. Mecânica do Robô
  37. Dúvida Para quê usar um Algoritmo Genético em um robô autônomo se podemos já definir seus movimentos para que ele se locomova?
  38. OBRIGADO! marcelo.laranjeira.melo@gmail.com @marcelo.laranjeira.melo
Publicidad