SlideShare a Scribd company logo
1 of 38
Download to read offline
Algoritmo Genético com Arduino
Marcelo Laranjeira Melo
Contextualização (corrida de carros)
Quantas maneiras de um carro chegar em primeiro lugar?
Contextualização (corrida de carros)
Quantas maneiras de um carro chegar em primeiro lugar? 4
Contextualização (corrida de carros)
Quantas maneiras de um carro chegar em segundo lugar? 3
Contextualização (corrida de carros)
Quantas maneiras de um carro chegar em terceiro lugar? 2
Contextualização (corrida de carros)
Quantas maneiras de um carro chegar em quarto lugar? 1
Contextualização (corrida de carros)
Logo, temos: 4x3x2x1 = 24 arranjos!
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.
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.
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
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)!
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)
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
Tempo de processamento do Problema do Caixeiro Viajante
E para 100 cidades?
Tempo de processamento do Problema do Caixeiro Viajante
100! é exatamente:
9332621544394415268169923885626670049071596826438162146859
2963895217599993229915608941463976156518286253697920827223
758251185210916864000000000000000000000000
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
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)
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
Quando devemos usar o Algoritmo Genético?
Para otimizar a resolução de um problema de busca com menor custo de tempo!
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…
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
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
Robôs com Algoritmo Genético
Artigo:
https://www.researchgate.net/publication/221438
658_The_Crawler_A_Class_Room_Demonstrat
or_for_Reinforcement_Learning
Terminologias
Terminologias
Geração → População → Indivíduo → Cromossomo → Gene
Fluxo do Algoritmo Genético
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
.
.
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
.
.
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.
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).
Crossover (Reprodução)
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
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
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
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
Mecânica do Robô
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?
OBRIGADO!
marcelo.laranjeira.melo@gmail.com
@marcelo.laranjeira.melo

More Related Content

More from Marcelo Laranjeira Melo

More from Marcelo Laranjeira Melo (11)

Fundamentos de Blockchain
Fundamentos de BlockchainFundamentos de Blockchain
Fundamentos de Blockchain
 
Detectando doenças com Arduino
Detectando doenças com ArduinoDetectando doenças com Arduino
Detectando doenças com Arduino
 
Raspberry pi - Dicas e truques
Raspberry pi - Dicas e truquesRaspberry pi - Dicas e truques
Raspberry pi - Dicas e truques
 
Oficina II - RASPBX
Oficina II - RASPBXOficina II - RASPBX
Oficina II - RASPBX
 
Oficina I - WEB MISSILE
Oficina I - WEB MISSILEOficina I - WEB MISSILE
Oficina I - WEB MISSILE
 
Diversão e lucro com raspberry pi
Diversão e lucro com raspberry piDiversão e lucro com raspberry pi
Diversão e lucro com raspberry pi
 
Arduino: Passado, presente e futuro.
Arduino: Passado, presente e futuro.Arduino: Passado, presente e futuro.
Arduino: Passado, presente e futuro.
 
Raspberry Pi: o hardware para Python
Raspberry Pi: o hardware para PythonRaspberry Pi: o hardware para Python
Raspberry Pi: o hardware para Python
 
Robótica com software e hardware livres
Robótica com software e hardware livresRobótica com software e hardware livres
Robótica com software e hardware livres
 
Arduino - Desenvolvendo com hardware livre
Arduino - Desenvolvendo com hardware livreArduino - Desenvolvendo com hardware livre
Arduino - Desenvolvendo com hardware livre
 
Arduino: Soluções para o mundo moderno
Arduino: Soluções para o mundo modernoArduino: Soluções para o mundo moderno
Arduino: Soluções para o mundo moderno
 

Algoritmo Genético 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
  • 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).
  • 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
  • 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?