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
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
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)
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