Um algoritmo genético para o problema de roteamento de veículos

Post on 11-Jun-2015

442 views 6 download

description

O objetivo deste trabalho é desenvolver 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.

Transcript of Um algoritmo genético para o problema de roteamento de veículos

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?