1
Um algoritmo genético para o problema de roteamento de veículos
Paulo Renato Morais Oliveira
Orientador: Reinaldo Gen Ichiro ArakakiCo-orientador: Ubirajara Moura de Freitas
2
Roteiro
• Motivação• Objetivo• Problema de roteamento de veículos• Algoritmo genético• Proposta de solução• Resultados computacionais• Considerações Finais
3
Motivação
• O interesse no problema de roteamento de veículos(PRV) é dado por sua relevância prática e por sua dificuldade computacional– Necessidade de aperfeiçoar os processos de
distribuição– Custos elevados de transporte– Soluções exatas são inviáveis do ponto de vista
computacional– Necessário o uso de métodos heurísticos ou meta-
heurísticos
4
Objetivo
• O objetivo deste trabalho é criar um algoritmo genético para roteamento de veículos para otimizar as rotas de distribuição, no qual sejam respeitadas as restrições de capacidade dos veículos e que a distância total percorrida por eles sejam mínimas
5
Problema de roteamento de veículos
• O problema de roteamento de veículos (PRV) é o nome dado a uma classe de problemas que possuem as seguintes características: – Frota de veículos com capacidade homogênea ou
heterogênea– Um depósito e vários pontos de entrega (clientes)– Encontrar o conjunto de rotas com um custo
mínimo que atenda toda a demanda
6
Problema de roteamento de veículos
7
Problema de roteamento de veículos
• Características do problema:– O custo total do conjunto deve ser minimizado– Cada rota inicia e finaliza no depósito– Cada cliente tenha sua demanda atendida por um
único veículo– A carga não pode exceder a capacidade do veículo
8
Problema de roteamento de veículos
• De acordo com as características do problema pode-se definir um vasto conjunto de problemas de roteamento.
• Alguns exemplos:– Restrições de tempo– Restrições na capacidade de veículos – Restrições de operação
9
Problema de roteamento de veículos
• Problema de roteamento de veículos com janela de tempo (PRVJT)– Inclui a restrição da janela de tempo ao PRV
também conhecido como PRVJT estático– Os veículos devem partir do depósito somente após
a abertura do depósito e retornar antes do fechamento do depósito
– O veículo tem que chegar a um determinado cliente dentro de um intervalo de tempo
– Espera calculada
10
Problema de roteamento de veículos
• Problema de roteamento de veículos com janela de tempo dinâmico (PRVJTD)– Alguns clientes não são conhecidos no momento
em que os veículo saem para fazer as entregas– A medida que as novas requisições são inseridas
tem-se um novo PRVJT estático para ser resolvido– Tempo limite para novas requisições– Espera calculada
11
Problema de roteamento de veículos
• Problema de roteamento de veículos com janela de tempo dinâmico
12
Problema de roteamento de veículos
• Problema de roteamento de veículos com pedidos de coleta e entrega simultâneo (PRVCES)– Pedidos atendidos de forma simultânea– Veículo com dois tipos de cargas– Ambas as demandas dos clientes são atendidas
pelo mesmo veículo
13
Problema de roteamento de veículos
• Problema de roteamento de veículos com pedidos de coleta e entrega– Somente um tipo de pedido– É um caso particular do PRVCES no qual uma das
demandas é zero– Veículo com dois tipos de cargas
14
Problema de roteamento de veículos
• Complexidade do PRV– É um problema da classe NP-difícil– Complexidade de tempo é exponencial O(cn)– Atualmente não existe nenhuma solução exata em
tempo polinomial O(nc) para o PRV– Necessário a utilização de métodos heurísticos ou
meta-heurísticos:• Algoritmos genéticos • Simulated anneling • Busca tabu
15
Algoritmo genético
• São algoritmos evolutivos baseados no princípio da seleção natural
• Indivíduos mais aptos sobrevivem e os menos aptos tendem a serem descartados
• Genes dos indivíduos mais aptos vão se espalhar para um maior número de indivíduos em sucessivas gerações
• Mantém uma população de indivíduos
16
Algoritmo genético
• Representação da solução– Existem várias formas de representação possíveis
para os cromossomos as mais utilizadas são: • Binária (Clássica)• Inteira (Ordem)
– Os operadores genéticos devem ser definidos de acordo com a representação escolhida
17
Algoritmo genético
• Função de custo– Determina a qualidade da solução– Possibilita comparar as soluções disponíveis e
escolher as melhores– Tende a ser minimizada– Custo da solução (1 3 2 4 5 9 7 6 8) é dado por:
18
Algoritmo genético
• Função de aptidão– Tende a ser maximizada– Seja f(x) a função de custo, podemos definir a
função de aptidão como sendo:
– Onde fmax é o maior valor da função de custo para a população sendo avaliada.
19
Algoritmo genético
• População Inicial– Formada por um conjunto de indivíduos que
representam possíveis soluções do problema a ser resolvido
– Pode ser criada aleatoriamente ou utilizando algoritmos heurísticos
– Deve ser avaliada pela função de custo
20
Algoritmo genético
• Seleção– Responsável por escolher quais indivíduos serão
submetidos às operações genéticas como cruzamento e mutação
– Os indivíduos resultantes destas operações irão compor a nova população
– Não deve ser baseada somente no melhor indivíduo
21
Algoritmo genético
• Dizimação– Ordena os indivíduos com base na aptidão– Remove um número fixo de indivíduos com baixa
aptidão– Cria um patamar e elimina aqueles que estiverem
abaixo deste patamar– Os pais são escolhidos aleatoriamente entre os
restantes
22
Algoritmo genético
• Roda da roleta
23
Algoritmo genético
• Torneio
24
Algoritmo genético
• Operadores Genéticos– Definem regras para uma renovação eficaz de uma
população– Responsáveis por criar novos pontos de busca no
espaço de solução– Ocorrem de forma iterativa tentando melhorar a
aptidão dos indivíduos
25
Algoritmo genético
• Cruzamento– Realizado através da escolha de pares de
indivíduos (os pais) que são usados para gerar um par de filhos
– Os filhos apresentarão características genéticas herdadas dos pais
– Caso os filhos forem mais aptos que os pais, eles substituem os pais na população
– Probabilidade de cruzamento
26
Algoritmo genético
• Cruzamento de mapeamento parcial (PMX)
27
Algoritmo genético
• Cruzamento de mapeamento parcial (PMX)
28
Algoritmo genético
• Cruzamento de ponto único– Gerar um ponto de corte – Copiar os elementos da esquerda de um pai e
depois completar com os elementos da direita do outro pai
29
Algoritmo genético
• Cruzamento de ordem (OX)
30
Algoritmo genético
• Mutação– Utilizada para garantir uma maior varredura do
espaço da solução– Insere um material genético novo na população– Evita que o algoritmo convirja muito cedo para
mínimos locais– Probabilidade de mutação
31
Algoritmo genético
• Mutação por troca (EM)
32
Algoritmo genético
• Mutação por inversão simples (SIM)
33
Algoritmo genético
• Mutação por deslocamento (DM)
34
Algoritmo genético
• Mutação por inserção (ISM)
35
Algoritmo genético
• Mutação por inversão (IVM)
36
Algoritmo genético
• Mutação scramble (SM)
37
Algoritmo genético
38
Proposta de solução
• Como existem diversas variações de problemas de roteamento de veículos, o foco deste trabalho é na resolução do problema do PRV clássico
• Foram implementados todos os métodos de seleção e os operadores de cruzamento e mutação apresentados anteriormente
39
• Diagrama de classes da solução proposta para o PRV clássico
Proposta de solução
40
Mutacao<<enumeration>>
+toString(): String
Populacao
-individuos: List<Individuo>-deposito: Cliente+PIOR_CUSTO: int
+getIndividuos(): List<Individuo>+setIndividuos(List<Individuos>): void+getDeposito(): Cliente+setDeposito(Cliente): void+Populacao()+gerarPopulacao(): void
Individuo
-fitness: double-custo: int-cromossomo: List<Integer>
+getFitness(): double+setFitness(double): void+getCusto(): int+setCusto(int): void+getCromossomo(): List<Integer>+setCromossomo(List<Integer>): void+toString(): String+gerarAleatorio(List<Cliente>): void+avaliarFitness(): void+compareTo(Individuo)
Crossover<<enumeration>>
+toString(): String
Selecao<<enumeration>>
+toString(): String
Cliente
-id: int-ponto: Point-quantidade: int
+Cliente(int, Point, int)+getId(): int+setId(int): void+getPonto(): Point+setPonto(Point): void+getQuantidade(): int+setQuantidade(int): void
AG
-populacao: Populacao-chanceMutacao: double-chanceCrossover: double+NUMERO_GERACOES: int+TAMANHO_POPULACAO: int+TAMANHO_INDIVIDUO: int+CAPACIDADE_VEICULO: int
+AG(int, int, double, double, int)+exec(Selecao, Mutacao, Crossover, List<Cliente>): Individuo+crossoverUP(Populacao): Populacao+crossoverPMX(Populacao): Populacao+crossoverOX(Populacao): Populacao+mutacaoISM(Populacao): Populacao+mutacaoIVM(Populacao): Populacao+mutacaoSM(Populacao): Populacao+mutacaoDM(Populacao): Populacao+mutacaoEM(Populacao): Populacao+mutacaoSIM(Populacao): Populacao+selecaoRoleta(Populacao): Populacao+selecaoDizimacao(Populacao): Populacao+selecaoTorneio(Populacao): Populacao
41
Proposta de solução
42
Resultados Computacionais
• Ambiente de Teste– 4Gb RAM– Intel Core i5 2.53 GHz– 300 Gb HD– Windows 7 Ultimate
43
Resultados Computacionais
• Parâmetros do Algoritmo genético
Parâmetro Padrão
Operador de cruzamento Cruzamento de ordem (OX)
Operador de mutação Deslocamento (DM)
Taxa de cruzamento 60%
Taxa de mutação 95%
Tamanho da população 100
Número de gerações 10000
Capacidade dos veículos 160
44
Resultados ComputacionaisIdentificação
CoordenadasDemanda
X Y
1 37 52 7
2 49 49 30
3 42 64 16
4 20 26 9
5 40 30 21
6 21 47 15
7 17 63 19
8 31 62 23
9 52 33 11
10 51 21 5
11 42 41 19
12 31 32 29
13 5 25 23
14 12 42 21
15 36 16 10
16 52 41 15
17 27 23 3
18 17 33 41
19 13 13 9
20 57 58 28
21 62 42 8
22 42 57 8
23 16 57 16
24 8 52 10
25 7 38 28
26 27 61 7
27 30 48 15
28 43 67 14
29 58 48 6
30 58 27 19
31 37 60 11
32 38 46 12
33 46 10 23
34 61 33 26
35 62 53 17
36 63 59 6
37 32 22 9
38 45 35 15
39 59 15 14
40 5 6 7
41 10 17 27
42 21 10 13
43 5 64 11
44 30 15 16
45 39 10 10
46 32 39 5
47 25 32 25
48 25 55 17
49 48 28 18
50 56 37 10
• Dados utilizados para teste do algoritmo
• Instância E-n51-k5
DepósitoCoordenadas
X Y
0 30 40
45
Dizimação Roleta Torneio0.00
100.00
200.00
300.00
400.00
500.00
600.00
700.00
Custo MínimoCusto Médio
Métodos de seleção
Cust
oResultados Computacionais
• Comparativo entre os métodos de seleção
46
Resultados Computacionais
• Comparativo entre os operadores de mutação
EM SIM DM ISM IVM SM440.00
460.00
480.00
500.00
520.00
540.00
560.00
580.00
Custo MínimoCusto Médio
Operadores de mutação
Cust
o
47
Resultados Computacionais
• Comparativo entre os operadores de cruzamento
Ponto Único PMX OX520.00
530.00
540.00
550.00
560.00
570.00
580.00
590.00
600.00
610.00
620.00
Custo MínimoCusto Médio
Operadores de cruzamento
Cust
o
48
Resultados Computacionais
• Comparativo entre diferentes tamanhos de população
20
40
60
80
100
120
140
160
180
200
220
240
260
280
300
500 520 540 560 580 600 620
Custo MédioCusto Mínimo
Custo
Tam
anho
da
popu
laçã
o
49
Resultados Computacionais• Comparativo entre diferentes taxas de
mutação
0.00
0.06
0.12
0.18
0.24
0.30
0.36
0.42
0.48
0.54
0.60
0.66
0.72
0.78
0.84
0.90
0.96
500.00 510.00 520.00 530.00 540.00 550.00 560.00 570.00 580.00 590.00
Custo MédioCusto Mínimo
Custo
Prob
abili
dade
de
mut
ação
50
Resultados Computacionais
• Comparativo entre diferentes taxas de cruzamento
0.00
0.10
0.20
0.30
0.40
0.50
0.60
0.70
0.80
0.90
1.00
0.00 100.00 200.00 300.00 400.00 500.00 600.00 700.00 800.00
Custo MédioCusto Mínimo
Custo
Prob
abili
dade
de
cruz
amen
to
51
Resultados Computacionais
• Comparação com resultados encontrados na literatura
Instância
Melhor solução
conhecidaSolução proposta
Custo Mínimo
Custo Mínimo
Custo Médio
Desvio Mínimo
Desvio Médio
Tempo Médio
E-n13-k4 290 278,43 278,64 -3,99% -3,92% 4,6s
E-n23-k3 569 470,05 470,05 -17,39% -17,39% 4,9s
E-n51-k5 521 527,67 558,75 1,28% 7,25% 12,1s
E-n76-k7 683 776,03 863,55 13,62% 26,43% 19,7s
E-n76-k8 735 835,12 954,08 13,62% 29,81% 20,7s
52
Considerações Finais
• Este trabalho apresentou um módulo para roteamento de veículos utilizando um algoritmo genético para otimizar rotas de distribuição
53
Considerações Finais
• Contribuições:– Técnicas e algoritmos da área de otimização
combinatória para resolução do PRV– Implementação de um protótipo para cálculo de
rotas– Uma representação gráfica para a apresentação
dos resultados obtidos
54
Considerações Finais
• Pode-se concluir que:– O protótipo implementado demonstra que é
possível automatizar a construção de rotas com custos otimizados
– Os algoritmos genéticos provaram ser importantes para resolver problemas de natureza combinatorial
55
Considerações Finais
• Trabalhos futuros– Utilizar o algoritmo genético em um sistema de
informação geográfico (SIG) para utilização de uma base de dados real
– Pesquisar novos operadores genéticos, ou utilizar uma estratégia que combine diversos operadores genéticos
56
Dúvidas?
Top Related