Você está na página 1de 54

Felipe Ergueta Fernandes Ribeiro

Desenvolvimento de motor de cálculo para um


software de roterização baseado nos custos
operacionais

Brasil
2018, Setembro
Felipe Ergueta Fernandes Ribeiro

Desenvolvimento de motor de cálculo para um software


de roterização baseado nos custos operacionais

Trabalho de conclusão de curso apresentado


ao colegiado do curso de Engenharia de con-
trole e Automação da Universidade Federal
da Bahia como requisito para obtenção do tí-
tulo de Bacharel em Engenharia de Controle
e Automação.

Universidade Federal da Bahia – UFBA


Escola Politécnica
Departamento de Engenharia Química

Orientador: Raony Maia Fontes

Brasil
2018, Setembro
Felipe Ergueta Fernandes Ribeiro
Desenvolvimento de motor de cálculo para um software de roterização base-
ado nos custos operacionais/ Felipe Ergueta Fernandes Ribeiro. – Brasil, 2018,
Setembro-
52 p. : il. (algumas color.) ; 30 cm.

Orientador: Raony Maia Fontes

Monografia (Trabalho de Conclusão de Curso) – Universidade Federal da Bahia –


UFBA
Escola Politécnica
Departamento de Engenharia Química, 2018, Setembro.
1. Viabilidade Econômica 2. Palavra-chave2. I. Orientador. II. Universidade
xxx. III. Faculdade de xxx. IV. Título
Felipe Ergueta Fernandes Ribeiro

Desenvolvimento de motor de cálculo para um software


de roterização baseado nos custos operacionais

Trabalho de conclusão de curso apresentado


ao colegiado do curso de Engenharia de con-
trole e Automação da Universidade Federal
da Bahia como requisito para obtenção do tí-
tulo de Bacharel em Engenharia de Controle
e Automação.

Trabalho (Re)Aprovado. Brasil, 24 de novembro de 2012:

Raony Maia Fontes


Orientador

Professor
Convidado 1

Professor
Convidado 2

Brasil
2018, Setembro
Para as pessoas especiais em minha vida.
Agradecimentos

Gostaria de agradecer a todos que fizeram parte deste caminho que percorri na
graduação, que sempre há seus de altos e baixos, passaram por eles colegas e professores.
Aos meus familiares, agradeço a todos pelo seu amor e especialmente a minha tia,
Monse, que me trata como filho.
Agradeço a empresa do meu estágio, a Interakt, por me apresentar o desafio de
solucionar o problema que é tema deste trabalho.
Agradeço a minha companheira, Luana, por ter um efeito positivo em minha vida.
Agradeço ao meu orientador, Raony, pela paciência e pelo direcionamento assertivo
nas questões debatidas.
Não poderia deixar de agradecer ao programa Ciência sem Fronteiras, por pos-
sibilitar a expansão dos meus horizontes, em que pude ser intercambista na Coréia do
Sul.
Por fim, agradeço a Deus, por ter me guiado nesse caminho.
“For since the fabric of the universe is most perfect, and is the work of a most wise
Creator, nothing whatsoever takes place in the universe in which some relation of
maximum and minimum does not appear“
(Leonhard Euler)
Resumo
O problema do roteamento de veículos com janelas de tempo (PRVJT) é um
problema de otimização combinatorial bastante estudado na literatura e aparece em
aplicações reais de transporte de bens ou serviços, onde sua resolução tem grande
relevância nos custos de operação. O objetivo deste trabalho é propor um motor de
cálculo para um software de roteirização capaz de resolver cenários reais do PRVJT,
com restrições e objetivos de minimização práticos, usando um algorítmo de otimi-
zação por colônia de formigas, o MAX-MIN Ant System (MMAS). Dois estudos de
caso foram resolvidos neste trabalho: o benchmark de Salomão para instâncias de
25 clientes, estudo de caso famoso na literatura, e uma instância real, fornecida por
uma empresa de coleta de resíduos da Bahia, resolvida para duas funções objetivo
diferentes, uma adaptada ao benchmark e outra parametrizada pelos custos opera-
cionais de transporte da empresa e utilizada no motor de cálculo. Com o primeiro
estudo de caso, verificou-se que o algorítmo MMAS teve um desempenho satisfa-
tório quando comparado ao estado da arte dos algorítmos de colônia de formigas
para resolução do PRVJT na literatura e na prática; no segundo estudo de caso,
demonstra-se que os custos operacionais devem ser considerados na roteirização. A
partir destes resultados, conclui-se que o motor de cálculo pode ser utilizado em um
software de roteirização.

Palavras-chaves: Max-Min Ant System. Otimização por Colônias de Formigas.


Problema do Roteamento de Veículos com Janelas de Tempo.
Abstract
The Vehicle Routing problem with Time Windows (VRPTW) is a combina-
torial optimization problem that has been extensively studied in the literature and
appears in real applications of transport of goods or services, where its resolution
has great relevance in operating costs. The objective of this work is to propose a
calculation engine for routing software capable of solving real VRPTW scenarios,
with practical restrictions and minimization objectives, using an ant colony opti-
mization algorithm, the MAX-MIN Ant System (MMAS). Two case studies were
solved in this paper: the Solomon’s benchmark for instances of 25 clients, a case
study famous in the literature, and a real instance provided by a waste collection
company in Bahia, solved for two different objective functions, one adapted to the
benchmark and another parameterized by the transport costs of the company and
used in the calculation engine. With the first case study, it was verified that the
MMAS algorithm had a satisfactory performance when compared to the state of
the art of ant colony algorithms for the resolution of VRPTW in the literature and
in practice; in the second case study, it is shown that operational costs should be
considered in the routing. From these results, it is concluded that the calculation
engine can be used in a routing software.

Key-words: Max-Min Ant System. Ant Colony Optimization. Vehicle Routing


Problem with Time Windows.
Lista de ilustrações

Figura 1 – Grafo do Problema do Caxeiro Viajante . . . . . . . . . . . . . . . . . 26


Figura 2 – Problema do Caxeiro Viajante e Problema do Roteamento de Veículos 26
Figura 3 – Exemplo de grafo com dois depósitos (nó 0 e nó 5, que são idênticos) e
quatro clientes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Figura 4 – Pseudo-código do Ant System . . . . . . . . . . . . . . . . . . . . . . . 34

Figura 5 – Fluxograma do algorítmo MMAS implementado . . . . . . . . . . . . . 39

Figura 6 – Conjuntos de clientes a serem atendidos . . . . . . . . . . . . . . . . . 46


Figura 7 – Cenário solucionado para a função custo elaborada . . . . . . . . . . . 47
Figura 8 – Cenário solucionado para a função objetivo do benchmark . . . . . . . 47
Lista de tabelas

Tabela 1 – Matriz de distâncias do tipo simétrica . . . . . . . . . . . . . . . . . . 25

Tabela 2 – Parâmetros do MMAS . . . . . . . . . . . . . . . . . . . . . . . . . . . 43


Tabela 3 – Comparação entre MACS-VRPTW e algorítmo MMAS implementado 44
Tabela 4 – Comparação entre diferentes funções objetivo . . . . . . . . . . . . . . 47
Sumário

1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.1 Objetivo Geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.2 Objetivos Especifícos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

2 Fundamentação Teórica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.1 Problema do Roteamento de Veículos . . . . . . . . . . . . . . . . . . . . . 25
2.1.1 Modelagem do PRVJT . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.2 Métodos de otimização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.2.1 Heurística do Vizinho mais próximo . . . . . . . . . . . . . . . . . . 30
2.2.2 Otimização por Colônia de Formigas . . . . . . . . . . . . . . . . . 31
2.2.3 Ant System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.2.4 Max-Min Ant System . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.2.5 Elitist Ant System . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.2.6 Ranked Based Ant System . . . . . . . . . . . . . . . . . . . . . . . 35
2.2.7 Ant Colony System . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

3 Método . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.1 Motor de Cálculo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.2 Elaboração da Função Custo . . . . . . . . . . . . . . . . . . . . . . . . . . 41

4 Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.1 Estudo de caso 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.2 Estudo de Caso 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

5 Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.1 Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
21

1 Introdução

Um desafio enfrentado por gestores de negócios que realizam o transporte de pro-


dutos ou serviços é a construção de rotas para atendimento de clientes que acatem as
restrições inerentes da operação e minimizem os custos de translado. Cada rota deter-
mina quais clientes devem ser atendidos por um mesmo veículo da frota disponível e a
melhor ordem de atendimento.
Dentro deste universo, algumas restrições aparecem na construção de rotas, sendo
que as mais comuns são:

∙ Janelas de tempo: quando um cliente só pode ser atendido em um intervalo de tempo


específico, comum em operações de prestação de serviços;

∙ Demanda: quando um cliente fornece ou recebe uma determinada quantidade de


produtos, que deve ser recebida ou fornecida pelo veículo que o atende, comum em
operações de pick-up e delivery;

∙ Duração máxima de viagem: quando as rotas não devem ultrapassar o limite de


horas trabalhadas estabelecidas pela lei;

∙ Tamanho da frota disponível: quando o número máximo de veículos usados deve ser
igual ao número de veículos disponíveis.

Este tipo de problema é conhecido na literatura como Problema de Roteamento


de Veículos (PRV), em que se procura determinar rotas ótimas para um determinado con-
junto de clientes, atendidas por uma frota de veículos, que minimizem a função objetivo
e atendam as restrições de operação. Trata-se de um problema de otimização combinato-
rial, logo, ao se aumentar o número de clientes, aumenta-se a quantidade de combinações
possíveis e consequentemente a dificuldade em definir quais são as rotas ótimas. Nas apli-
cações reais do PRV, os métodos de solução exata não são aplicáveis, pois não é possível
resolver até a otimalidade este tipo de problema, como afirma Cunha (2000).
Métodos de solução não exatos de otimização surgem como opção para resolver
o PRV em aplicações práticas, que são as técnicas heurísticas e meta-heurísticas, estas
exploram o problema de maneira intuitiva e inteligente, encontrando soluções adequadas,
como afirma Cunha (2000). Como exemplos de heurísticas que resolvem o PRV, há o
método do vizinho mais próximo e o saving’s algorithms, já como exemplos de meta-
heurísticas, há a otimização por colônia de formigas (ACO), os algorítmos genéticos, o
simulated annealing e o tabu search.
22 Capítulo 1. Introdução

Na literatura, é comum que o PRV seja resolvido para um cenário mais simpli-
ficado, como diz Bodin (1990), sem levar em consideração restrições que aparecem na
construção de rotas reais. As simplificações facilitam o processo de validação de algorít-
mos desenvolvidos para resolver o problema de otimização, através de instâncias fornecidas
por benchmarks.
Segundo Solomon (1987), o Problema de Roteamento de Veículos com Janelas
de Tempo (PRVJT) adiciona complexidade ao problema de roteamento de veículos ao
considerar tempos de início e término de atendimento para cada cliente. O autor afirma
que o PRVJT é um importante progresso para se lidar com restrições realistas na cons-
trução de rotas e aparece naturalmente em negócios como ônibus escolares e entrega de
correspondências.
Um algorítmo criado para solucionar o PRVJT é o MACS-VRPTW (Multiple Ant
Colony System for Vehicle Routing Problems with Time Windows), apresentado em Gam-
bardella, Taillard e Agazzi (1999), e implementado em diversos trabalhos na literatura,
a exemplo de Santos e Leal (2007). Em Rizzoli et al. (2007), comprova-se a eficiência
do MACS-VRPTW para resolver o PRVJT em aplicações reais, utilizando-se o referido
algorítmo como motor de cálculo do software ANTROUTE na resolução de três estudos
de caso.
Para o PRVJT, Solomon (1987) afirma que deve-se incluir na função objetivo o
custo relacionado a hora ociosa do motorista, além do custo devido a distância percorrida
e hora extra. Para Cunha (2000), mesmo softwares comerciais falham em não considerar
custos operacionais, normalmente estes consideram a distância percorrida proporcional
ao custo, ignorando outras parcelas de custo relacionadas à frota de veículos e das horas
extras dos motoristas. Esta situação faz com que os resultados encontrados na literatura
e nos softwares comerciais não estejam de acordo com aplicações reais de roteirização.
Ao se adaptar a função objetivo para encontrar soluções que atendam às necessi-
dades de aplicações reais, o trabalho de Álvarez e Munari (2016) resolve o PRVJT com
múltiplos entregadores. Considera-se como variáveis a serem minimizadas: o número de
veículos, o tempo total de duração da viagem e a quantidade de entregadores. A dimensão
da função objetivo é dada como a soma entre tempo e distância.
Em Mungwattana et al. (2016) resolve-se o PRVJT para uma função objetivo que
minimiza as seguintes variáveis: o tempo ocioso do motorista, as horas extras e os atrasos
no atendimento ao cliente que está com sua janela de tempo aberta. À dimensão da função
objetivo é dada na dimensão de tempo e foram definidos pesos para penalizar cada uma
das variáveis minimizadas.
Os trabalhos que inseriram novas variáveis na função objetivo para resolução dos
problemas de otimização tinham como intuito encontrar soluções que atendessem as apli-
1.1. Objetivo Geral 23

cações reais. Neste trabalho é implementado um algorítmo da família dos algorítmos de


colônia de formigas como motor de cálculo para um software de roteirização, levando em
consideração os custos relacionados na obtenção da solução ótima do PRVJT.

1.1 Objetivo Geral


Construir um motor de cálculo para resolução do problema de roteamento de
veículos com janelas de tempo, considerando os custos operacionais na criação das rotas
ótimas.

1.2 Objetivos Especifícos


∙ Implementar um algorítmo de Colônia de Formigas (ACO) chamado Max-Min Ant
System (MMAS) como motor de cálculo para resolução do PRVJT;

∙ Elaborar uma função objetivo que considere os custos operacionais no transporte


para uma aplicação prática do PRVJT:

∙ Validar o algorítmo implementado através de instâncias do benchmark de Salomão;

∙ Aplicar o motor de cálculo em um cenário real de roteirização.


25

2 Fundamentação Teórica

2.1 Problema do Roteamento de Veículos


Para apresentar o problema de Roteamento de Veículos com Janelas de Tempo
(PRVJT), é preciso antes conhecer o problema do caxeiro viajante e algumas das variantes
do problema de roteamento de veículos.
No problema do Caixeiro Viajante (PCV), um único caixero viajante parte de uma
cidade, viaja para todas as cidades no caminho, passando por cada uma delas uma única
vez e retorna para o ponto inicial, no qual o objetivo é que o caixeiro percorra a menor
distância possível. Trata-se de um problema antigo da otimização e em sua forma mais
simplificada, não apresenta restrições de demanda, duração de viagem e janelas de tempo.
Para a distância de uma cidade à outra é atribuído um custo de deslocamento, o problema
pode ser classificado com simétrico ou assimétrico. Quando o custo de ida e de volta de
uma cidade a outra é igual, o problema é dito simétrico; quando há uma desigualdade
entre o custo de ida e volta de uma cidade, o problema é dito assimétrico, sendo esta
segunda categoria mais condizente com as aplicações reais.
O PCV é representado por um grafo 𝐺(𝑉, 𝐴), em que 𝑉 é chamado de vértices ou
nodos e 𝐴 são os ramos ou arestas. Um grafo do PCV é demonstrado na Figura 1, em que
os círculos são os nós ou vértices, representando as cidades, e as linhas que ligam cada
círculo são chamadas de arcos ou arestas, representando os custos de cada viagem.
As distâncias de ida e volta são escritos em uma matriz, normalmente chamada
de matriz de distâncias, como por exemplo a matriz apresentada na Tabela 1 para um
cenário de 5 nós. O 𝑎𝑟𝑐𝑜(1, 3), como exemplo, tem distância de 30 unidades, já o 𝑎𝑟𝑐𝑜(2, 2)
tem distância de 0 unidades, pois trata-se do mesmo nó.

Tabela 1: Matriz de distâncias do tipo simétrica

Nós 1 2 3 4 5
1 0 10 30 15 12
2 10 0 5 25 7
3 30 5 0 8 9
4 15 25 8 0 3
5 12 7 9 3 0

O problema do Roteamento de Veículos (PRV) é uma generalização do problema


do caixeiro viajante. Ao substituir o caixeiro viajante por um veículo e as cidades por
clientes, o problema do caixeiro viajante passa a ser um problema do roteamento de
veículos em que há apenas um veículo disponível, com capacidade infinita, e a viagem
26 Capítulo 2. Fundamentação Teórica

Figura 1: Grafo do Problema do Caxeiro Viajante

não possui limites de duração. Portanto, o veículo é capaz de atender a todos os clientes
em uma única rota. O PRV pode variar de 1 a mais veículos e gerar mais de 1 rota. Um
objetivo que pode ser considerado é o de minimizar a distância percorrida em cada rota
e o número de veículos usados.
As diferenças entre o PCV e o PRV estão representadas na Figura 2, na qual o
quadrado é o ponto de partida, denominado depósito, e os círculos são os clientes. Pode-
se perceber que o PCV caracteriza-se por apenas 1rota gerada, enquanto que no PRV
caracteriza-se por mais de 1 rota (na figura, 2 rotas geradas).

Figura 2: Problema do Caxeiro Viajante e Problema do Roteamento de Veículos

Uma variante do PRV muito estudada é o Problema do Roteamento de Veículos


2.1. Problema do Roteamento de Veículos 27

Capacitados (PRVC), em que se atribui aos veículos uma capacidade e, aos clientes, uma
demanda. Para que as soluções (rotas ótimas encontradas) sejam realizáveis para este
problema, a capacidade de cada veículo não pode ser excedida para nenhuma das rotas,
sendo os objetivos desse problema iguais aos do PRV. Percebe-se que o PRVC é uma
generalização do PRV, atribuindo-se uma restrição ao PRV referente à capacidade de
cada veículo e à demanda de cada cliente.
Uma outra variante do PRV, não muito estudada na literatura, porém importante
para aplicações práticas no roteamento de veículos, é o Problema de Roteamento de
Veículos com Balanceamento de Rotas (PRVBR). Neste problema busca-se equilibrar a
distância percorrida ou o tempo de duração em cada uma das rotas geradas, para que se
evite que um motorista trabalhe demais e um outro trabalhe menos, ou que um veículo
seja muito utilizado e outro não tanto.
Além das variantes já apresentadas, no Problema de Roteamento de Veículos com
Janelas de Tempo (PRVJT), adiciona-se a restrição da Janela de Tempo, ou seja, cada
cliente apresenta uma hora de início e término para o atendimento. Além disso, caso um
veículo chegue antes da hora de início de atendimento de determinado cliente, ele deve
esperar até o início do atendimento, sendo quantificado esse tempo ocioso, pelo PRVJT,
como uma variável "espera". Se o veículo não conseguir atender determinado cliente até
que a sua janela de tempo se encerre, o veículo é normalmente obrigado a retornar ao
ponto de partida. Dessa forma, é importante evitar que o veículo não consiga atender a
um cliente e para isso é definida uma variável chamada "urgência". Quanto mais próximo
estiver um cliente de fechar sua janela, em comparação com o horário atual, maior será a
prioridade de atendê-lo.
As janelas de tempo podem ser classificado em dois tipos, soft e hard. As do tipo
soft, são aquelas que permitem que o cliente seja atendido após o fechamento de sua janela
de tempo ao custo de alguma penalização, já as do tipo hard, são as que não permitem
que o cliente seja atendido após o término de sua janela de tempo.
O cálculo da espera e da urgência são dados pelas Equação 2.1 e Equação 2.2.

𝑒 = 𝑚𝑎𝑥(ℎ𝑖𝑗+1 − (ℎ𝑗 + 𝑡𝑠𝑗 + 𝑡𝑣𝑖𝑎𝑗,𝑗+1 ), 0), (2.1)


𝑢 = ℎ𝑓𝑗+1 − (ℎ𝑗 + 𝑡𝑠𝑗 + 𝑡𝑣𝑖𝑎𝑗,𝑗+1 ), (2.2)

Sendo e a espera, u a urgência, 𝑗 o cliente em que o veículo se encontra; 𝑗 + 1,


o cliente que será visitado, 𝑗 varia de 0 até 𝑛 (número de clientes); ℎ, o tempo atual;
𝑡𝑠, a quantidade de tempo necessário para atender determinado cliente; 𝑡𝑣𝑖𝑎, a distância
percorrida de um nó a outro em unidade de tempo; ℎ𝑖 e ℎ𝑓 , o começo e o fim da janela
de tempo de cada cliente.
28 Capítulo 2. Fundamentação Teórica

Na Equação 2.1 ou existe espera ou ela é nula; já na Equação 2.2, a urgência


pode ser positiva ou negativa. É importante notar que na Equação 2.2, caso a urgência
seja negativa, isso quer dizer que o cliente do 𝑗 + 1 tem sua janela de tempo já fechada;
portanto, caso a janela de tempo seja do tipo hard, não será possível o veículo em uso
atender a esse cliente. Em tal situação, uma estratégia é deixar que um próximo veículo
atenda a este cliente, o que pode não ocorrer satisfatoriamente, se houver limite no número
de veículos da frota. Caso a urgência seja positiva, o 𝑗 + 1 pode ser atendido pelo veículo
em uso.
O PRVJT pode ser entendido como uma generalização do PRV e, por sua vez, do
PCV, pois quando as janelas de tempo são muito amplas, o PRVJT é relaxado para o
PRV ou PRVC, e caso o PRV tenha apenas um veículo disponível, o problema é relaxado
para o PCV.

2.1.1 Modelagem do PRVJT


A seguinte modelagem foi baseada na modelagem do PRVJT feita em Desaulniers,
Madsen e Ropke (2014), trata-se da modelagem mais simplificada para este problema de
otimização.
Dado n clientes, em que os clientes são numerados 1,2...𝑛, define-se um grafo
𝐺(𝑉, 𝐴), em que 𝑉 são os nós ou vértices do grafo, no PRVJT 𝐺 tem n+2 vértices, estes
dois nós adicionais1 são numerados 0 e 𝑛 + 1, que representam . Os arcos ou arestas, 𝐴,
representam conexões diretas entre o depósito e os clientes e entre os pares de clientes.
Pode-se visualizar um exemplo de grafo com dois depósitos e quatro clientes na Figura 3.

Figura 3: Exemplo de grafo com dois depósitos (nó 0 e nó 5, que são idênticos) e quatro clientes

Como se pode observar na Figura 3 não há arcos terminando no vértice 0, nem


1
Os dois nós adicionais representam os depósitos, que são nós idênticos que determinam onde se iniciam
e terminam todas as rotas.
2.2. Métodos de otimização 29

arcos iniciando no vértice 𝑛 + 1. Para cada 𝑎𝑟𝑐𝑜(𝑖, 𝑗) em que 𝑖 ̸= 𝑗, associamos um custo


𝑐𝑖𝑗 e um tempo 𝑡𝑖𝑗 .
Neste problema, considera-se uma frota de veículos 𝑀 com uma mesma capacidade
𝑄 para atender cada cliente 𝑖, por sua vez, cada cliente 𝑖 tem uma demanda 𝑑𝑖 , uma tempo
de serviço 𝑠𝑡𝑖 e uma janela de tempo [𝑡0𝑖 , 𝑡𝑓𝑖 ], em que 𝑡0𝑖 e 𝑡𝑓𝑖 são, respectivamente, o
início e o término da janela de atendimento.
Um veículo deve chegar ao cliente 𝑖 antes de 𝑡𝑓𝑖 e caso chegue antes de 𝑡0𝑖 , deverá
esperar até 𝑡0𝑖 para servir o cliente. Os depósitos tem janelas de tempo iguais a [𝑡00 , 𝑡𝑓0 ],
que 𝑡00 e 𝑡𝑓0 correspondem, respectivmente, ao início e término da operação. Logo, um
veículo não pode sair do depósito antes de 𝑡00 , nem retornar depois de 𝑡𝑓0 .
Para resolução do PRVJT, define-se uma variável de decisão binária representada
por 𝑥, esta representa os arcos que foram percorridos em uma solução. Então, para cada
𝑎𝑟𝑐𝑜(𝑖, 𝑗), onde 𝑖 ̸= 𝑗, 𝑖 ̸= 𝑛 + 1, 𝑗 ̸= 0 e cada veículo 𝑘, define-se a variável de decisão 𝑥
na Equação 2.4.


⎨1

se o veículo k vai diretamente de i para j,
𝑥𝑖𝑗𝑘 = ⎪ , (2.3)
⎩ 0 caso contrário

Sendo 𝑥𝑖𝑗𝑘 a variável de decisão, que é igual a 1 caso o veículo 𝑘 atenda o 𝑎𝑟𝑐𝑜(𝑖, 𝑗)
e 0 caso contrário.
O objetivo é minimizar a função objetivo, que é dada pela Equação 2.4.

∑︁ ∑︁ ∑︁
𝑚𝑖𝑛 𝑐𝑖𝑗 · 𝑥𝑖𝑗𝑘 , (2.4)
𝑘𝜖𝑀 𝑖𝜖𝐺 𝑗𝜖𝐺

As restrições na construção das rotas ótimas para o PRVJT são: cada cliente deve
ser servido apenas uma vez, toda rota se origina em 0 e termina em 𝑛 + 1, todo cliente
deve ser servido dentro de sua janela de tempo e nenhum veículo pode exceder a sua
capacidade máxima.

2.2 Métodos de otimização


O PRV é um problema de complexidade NP-difícil, como dito em Kramer, Subra-
manian e Penna (2016), por isto, a dificuldade de encontrar uma solução ótima aumenta
exponencialmente em relação ao aumento dos clientes a serem visitados. Para resolver o
PRV, há três maneiras: otimização exata, heurísticas e meta-heurísticas.
Na otimização exata, há métodos de resolução como o ILP (Integer Linear Pro-
gramming) e o branch-and-bound. Para uma quantidade grande de clientes, contudo, as
30 Capítulo 2. Fundamentação Teórica

soluções costumam demorar para serem encontradas devido a natureza combinatorial do


PRV, o que inviabiliza a solução exata para necessidades práticas.
Devido a limitação de tempo para as otimizações exatas, é comum o uso de heurís-
ticas para solucionarem o PRV, pois estas últimas retornam uma solução boa o suficiente
em um tempo razoável, porém estas tem como ponto negativo a caracterísitca de não es-
caparem facilmente de minimos locais. Dentre as técnicas de otimização heurísiticas, uma
bastante empregada na literatura é a Clarke e Wright, apresentado em Clarke e Wright
(1964).
De maneira complementar a otimização heurística, surgiram as meta-heurísticas,
que utilizam do bom desempenho das heurísticas para solucionar o PRV e apresentam
meios de escapar de mínimos locais. As meta-heurísticas mais aplicadas para resolver
este problema são: busca tabu, algorítmos genéticos, algorítmos de colônia de formigas e
simulated annealing.
As otimizações meta-heurísticas podem trabalhar em conjunto com heurísticas de
melhoramento de soluções, como as seguintes: k-opt, k-exchange e hill climbing. Por não
serem o foco deste trabalho, as heurísticas de melhoramento não serão explicadas detalha-
damente, mas faz-se notar que, associadas com as meta-heurísticas, tornam-se ferramen-
tas poderosas na busca por melhores soluções, pois como dito em Dorigo e Gambardella
(1997), as heurísticas de melhoramento otimizam localmente as soluções encontradas por
meta-heurísticas.

2.2.1 Heurística do Vizinho mais próximo

A heurística do vizinho mais próximo é um método clássico de resolução do PCV,


desenvolvida em Clark e Evans (1954).
O método do vizinho mais próximo, em sua forma mais simples, consiste em cons-
truir uma solução buscando sempre visitar os nós mais próximos ao nó atual, partindo
de um nó inicial e retornando para o mesmo nó. Ao se resolver o PCV com este método,
deve ser escolhida sempre a cidade que estiver mais próxima à da localização atual do
caixeiro viajante.
Tal método é utilizado pelo algorítmo de colônia de formigas para inicialização,
pois fornece uma boa aproximação da solução que será encontrada e pode servir como
critério de desempenho, ao se comparar o custo de cada solução.
Ao se resolver o PRVJT pelo método do vizinho mais próximo para inicializar
o algorítmo de colônia de formigas, deve-se aplicar a mesma função objetivo usada no
algorítmo de colônia de formigas, assim como considerar as mesmas restrições, para que
se obtenha melhores soluções.
2.2. Métodos de otimização 31

2.2.2 Otimização por Colônia de Formigas

O algorítmo de colônia de formiga, assim como outras meta-heurísticas, teve ins-


piração em processos naturais, neste caso, o comportamento de formigas ao buscarem
comida desde o formigueiro. Observou-se que, ao colocar um obstáculo entre o ninho e
a fonte de alimento, as formigas dividiam-se igualmente nos caminhos possíveis para se
chegar à fonte de alimento, e, ao passar do tempo, convergiam para um único caminho,
que era o mais curto entre eles.
É importante notar que as formigas são cegas e se comunicam através da 𝑠𝑡𝑖𝑔𝑚𝑎𝑟𝑔𝑖𝑎,
que é uma forma de comunicação presente em vários animais, consistente em deixar ras-
tros de odor para que outros animais identifiquem. Verificou-se que o fato das formigas
convergirem devia-se à comunicação através de feromônios (rastros de odor voláteis).
Observou-se que as formigas que tomaram o caminho mais curto chegaram na fonte
de alimento e retornaram para o formigueiro mais rapidamente do que as formigas que
tomaram o caminho mais longo. Como as formigas depositam feromônios continuamente
pelo caminho percorrido, ao passar do tempo, o caminho mais curto apresentava uma
maior densidade de feromônios, pois mais formigas percorreram este caminho. Por isto, a
preferência das formigas que saíam do ninho era por seguir o caminho com maior densidade
de feromônios.
Ao mesmo tempo, o caminho mais longo teve cada vez menos formigas percorrendo-
o, já que a densidade de feromônios ficou cada vez menor, por ter menos formigas
percorrendo-o e também pelo efeito da evaporação do feromônio.
Aos algorítmos de colônia de formigas, atribui-se a sigla ACO (Ant Colony Op-
timization). Trata-se de uma família de algorítmos inspirados no comportamento das
formigas, que se utilizam de formigas artificias para solucionar problemas combinatori-
ais. O primeiro algorítmo desta família foi o Ant System (AS) desenvolvido em Dorigo,
Maniezzo e Colorni (1996). Com o passar dos anos, variantes mais poderosas foram desen-
volvidas para os algorítmos de formigas, sendo as mais famosas: MMAS (Max-Min Ant
System), EAS (Elitist Ant System), Rank-Based AS (RBAS), ACS (Ant Colony System).

2.2.3 Ant System

O Ant System é inicializado pela construção de duas matrizes, a matriz de fe-


romônios (𝜏 ) e a matriz de visibilidade (𝜂), e pela configuração dos seguintes parâmetros:
𝛼 (peso da matriz de feromônios), 𝛽 (peso da matriz de visibilidade), 𝑄 (constante de
atualização do feromônio), 𝜌 (constante de evaporação do feromônio), número de formi-
gas e número de iterações. As fórmulas para inicialização das matrizes se encontram na
Equação 2.5 e Equação 2.6.
32 Capítulo 2. Fundamentação Teórica

𝑁
𝜏= , (2.5)
𝐿𝑛𝑛
1
𝜂= , (2.6)
𝑑𝑖𝑠𝑡
Sendo que 𝑁 é o número de clientes a serem visitados, 𝐿𝑛𝑛 é o custo calculado pelo
método do vizinho mais próximo e dist é uma matriz que relaciona as distâncias entre o
depósito e os clientes e entre os pares de clientes.
Após a inicialização do algorítmo, chega-se na fase da construção da solução. A
cada iteração, cada formiga constrói uma solução aleatória, partindo do nó inicial, visi-
tando todos os nós e retornando ao nó inicial. A probabilidade da formiga visitar um nó
é dada pela Equação 2.7.

[𝜏𝑖𝑗𝛼 ][𝜂𝑖𝑗𝛽 ]


𝛽 , se 𝑗 ∈ 𝑝𝑒𝑟𝑚𝑖𝑡𝑖𝑑𝑜𝑘 ,


⎨ ∑︀
𝛼
𝑝𝑘𝑖𝑗 = 𝑗∈𝑝𝑒𝑟𝑚𝑖𝑡𝑖𝑑𝑜𝑘 [𝜏𝑖𝑗 ][𝜂𝑖𝑗 ] (2.7)


⎩0,

caso contrário,

Sendo que a variável 𝑘 se refere a cada formiga e 𝑗 é o nó que poderá ser visitado.
Caso 𝑗 não seja permitido de ser visitado para a formiga 𝑘, isto significa que 𝑗 já foi
atendido por esta formiga ou não é possível para a formiga 𝑘 atender 𝑗 por conta da
ativação de alguma restrição.
O cálculo de probabilidade leva em consideração a quantidade de feromônio depo-
sitado (𝜏 ) no 𝑎𝑟𝑐𝑜(𝑖, 𝑗), multiplicado pela matriz de visibilidade (𝜂) do 𝑎𝑟𝑐𝑜(𝑖, 𝑗). Quanto
mais próximo estão dois nós, maior é o valor heurístico do 𝑎𝑟𝑐𝑜(𝑖, 𝑗), e o contrário também
se aplica.
Após a realização do cálculo de cada probabilidade da formiga que está no nó 𝑖 de
visitar todos os possíveis nós 𝑗, normaliza-se cada uma das probabilidades e é aplicado
um método de sorteio para decidir qual será o próximo nó a ser visitado. Normalmente,
aplica-se o método da roleta, por meio do qual se calcula a probabilidade acumulada para
visitar cada nó 𝑗 e sorteia-se um valor que é atribuído a uma variável 𝑞 entre 0 e 1. O nó
que apresentar o valor de probabilidade acumulada imediatamente superior ao valor de 𝑞
será o nó escolhido.
Após cada solução ter sido gerada, calcula-se a função objetivo da solução para
cada formiga.
Chega-se na etapa de atualização do feromônio. No AS, a atualização do feromônio
é chamada global, pois todas as soluções geradas para cada uma das formigas de uma
iteração são utilizadas para atualizar o feromônio, utilizando-se o custo de cada solução.
Incrementa-se o feromônio através da Equação 2.8 e Equação 2.9.
2.2. Métodos de otimização 33

𝑄

se (𝑖, 𝑗) ∈ 𝑇 𝑘 (𝑡)



△𝜏𝑖𝑗𝑘 (𝑡) =⎪ 𝐿𝑘 (𝑡) (2.8)
𝑘
⎩0 se (𝑖, 𝑗) ∈
/ 𝑇 (𝑡),

𝑁
△𝜏𝑖𝑗𝑘 (𝑡), ▽(𝑖, 𝑗)𝜖𝐿,
∑︁
𝜏𝑖𝑗 = 𝜏𝑖𝑗 + (2.9)
𝑘=1

Sendo que 𝑇 𝑘 (𝑡) se refere a rota gerado por cada formiga. Caso o 𝑎𝑟𝑐𝑜(𝑖, 𝑗) esteja
contido no na rota, será incrementado o valor △𝜏𝑖𝑗𝑘 (𝑡), caso não, não haverá incremento.
𝐿𝑘 , refere-se a função objetivo da rota de cada formiga e faz parte do cálculo do valor do
incremento.
Como pode-se perceber pela Equação 2.8 e Equação 2.13, apenas os caminhos
visitados por cada uma das formigas receberão o incremento no feromônio, ao passo que
os caminhos não visitados não receberão nenhum incremento. Entre os caminhos visitados
por cada uma das formigas, aqueles em que a função objetivo é menor receberão maior
incremento, do contrário receberão menor incremento. Isto faz com que os arcos menos
custosos se tornem mais atrativos para as formigas da próxima iteração e os arcos mais
custosos ou os que não receberam nenhum incremento sejam menos atrativos.
Após a fase de atualização, ocorre a fase da evaporação do feromônio, cálculada
pela Equação 2.10.

𝜏𝑖𝑗 = (1 − 𝜌)𝜏𝑖𝑗 , ▽(𝑖, 𝑗)𝜖𝐿, (2.10)

A evaporação dos feromônios é aplicada em toda a matriz de feromônios. A con-


sequência da evaporação do feromônio é que os 𝑎𝑟𝑐𝑜𝑠(𝑖, 𝑗) que não estão sendo visitados
tornam-se cada vez menos atraentes, ao passo que os 𝑎𝑟𝑐𝑜𝑠(𝑖, 𝑗) que estão sendo visitadas
tem seu valor diminuido para evitar uma rápida convergência do algorítmo.
A Figura 4 demonstra o funcionamento do AS através de um pseudo-código.

2.2.4 Max-Min Ant System


O MMAS, algorítmo que será implementado neste trabalho, é a variante que apre-
senta a melhor performance junto com o ACS, como analisado em Dorigo e Stützle (2004)
e desenvolvido em Stützle e Hoos (2000). Esta variante do AS apresenta duas modifica-
ções mais significativas, a saber: limites máximos e mínimos para os valores da matriz de
feromônios e a atualização do feromônio é feita por uma única formiga. Para atualizar o
feromônio, escolhe-se entre a melhor formiga da iteração (𝑖𝑡𝑒𝑟𝑏𝑒𝑠𝑡) ou a melhor formiga
até então (𝑏𝑒𝑠𝑡𝑠𝑜𝑓 𝑎𝑟), compreende-se como melhor formiga aquela que gera a solução
menos custosa.
34 Capítulo 2. Fundamentação Teórica

Figura 4: Pseudo-código do Ant System

A fórmula de inicialização da matriz de feromônios para o MMAS é dada pela


Equação 2.11.

1
𝜏= , (2.11)
𝜌𝐿𝑛𝑛

Na fase de inicialização do MMAS é necessário que a matriz de feromônios seja


inicializada por valores de feromônios mais altos, para que não sature rapidamente nos
limites. Por isso 𝜌 que é um valor menor que 1 está no denominador.
Diferentemente do AS, em que as soluções geradas por todas as formigas eram
usadas para a atualização do feromônio, no MMAS apenas a melhor formiga da iteração
ou a melhor formiga até então tem permissão para atualizar a matriz de feromônios.
O incremento no feromônio é dado pela Equação 2.12

𝜏𝑖𝑗 = 𝜏𝑖𝑗 + △𝜏𝑖𝑗𝑏𝑠𝑓 (𝑡), (2.12)

Sendo que △𝜏𝑖𝑗𝑏𝑠𝑓 (𝑡) é calculado pela Equação 2.8 para somente a melhor formiga
até então.
A criação de limites para a matriz de feromônios serve para que o algorítmo não
apresente uma precipitada convergência. Na etapa de atualização da matriz de feromônios,
2.2. Métodos de otimização 35

o valor de 𝜏𝑚𝑎𝑥 é sempre recalculado para o custo da solução gerada pela melhor formiga;
já o valor de 𝜏𝑚𝑖𝑛 é normalmente um valor constante. O cálculo destes limites são dados
pela Equação 2.13 e Equação 2.14.

1
𝜏𝑚𝑎𝑥 = , (2.13)
𝜌𝐿min
𝜏𝑚𝑎𝑥 1
𝜏𝑚𝑖𝑛 = 1 · (1 − 0.05 𝑛 ), (2.14)
( 𝑛2 − 1)0.05 𝑛

Sendo 𝐿min a menor função objetivo encontrada por uma formiga e 𝑛 o número de
clientes.
Uma técnica que pode ser utilizada no MMAS é a reinicialização da matriz de
feromônios caso não seja encontrada uma melhoria na solução após um certo número de
iterações, atribuindo a 𝜏 o valor de 𝜏𝑚𝑎𝑥 , o que permite que o algorítmo faça uma nova
busca por soluções.

2.2.5 Elitist Ant System


No EAS, uma modificação significativa é a inserção de um novo parâmetro: o
parâmetro 𝑒 (elitismo), que é o peso da melhor formiga até então na atualização de
feromônios. Em Dorigo e Stützle (2004) é demonstrado que o EAS tem um desempenho
levemente superior ao AS.
A inicialização do feromônio é dada pela Equação 2.15.

𝑁𝑓 𝑜𝑟𝑚𝑖𝑔𝑎𝑠 + 𝑒
𝜏= , (2.15)
𝐿𝑛𝑛

Sendo 𝑁𝑓 𝑜𝑟𝑚𝑖𝑔𝑎𝑠 o número de formigas usadas e 𝑒 o valor do parâmetro elitismo.


Assim como no AS, todas as formigas são usadas para se atualizar a matriz de
feromônios. Entretanto, seleciona-se a melhor formiga e atribui-se um peso a esta formiga,
para que as soluções geradas nas próximas iterações sejam guiadas por ela.
A fórmula de atualização do feromônio para o EAS é dada na Equação 2.16.

𝑁
△𝜏𝑖𝑗𝑘 (𝑡) + 𝑒 · △𝜏𝑖𝑗𝑏𝑠𝑓 (𝑡),
∑︁
𝜏𝑖𝑗 = 𝜏𝑖𝑗 + (2.16)
𝑘=1

2.2.6 Ranked Based Ant System


O RBAS é um método que apresenta um desempenho levemente inferior ao MMAS
e ao ACS, como analisado em Dorigo e Stützle (2004), porém é significativamente superior
36 Capítulo 2. Fundamentação Teórica

ao AS. Além das influências do AS, assemelha-se ao EAS por se utilizar do conceito de
elitismo, através de um novo parâmetro de peso.
A matriz de inicialização do feromônio é dada pela Equação 2.17.

0.5 · 𝜎 · (𝜎 − 1)
𝜏= , (2.17)
𝜌𝐿𝑛𝑛

Sendo 𝜎 o valor do peso do RBAS.


A mudança mais significativa do RBAS acontece na atualização da matriz de
feromônios. As soluções geradas por cada formiga são rankeadas da melhor para pior, e o
parâmetro de peso determina o número de formigas permitidas para depositar feromônios.
A solução gerada pela melhor formiga é multiplicada pelo parâmetro do peso (semelhante
ao elitismo). Já para as formigas rankeadas abaixo da melhor formiga, multiplica-se suas
soluções pelo parâmetro do peso subtraído por uma variável contadora, 𝑟, que se inicia
em 1, então, a solução gerada pela formiga rankeada na segunda posição é multiplicada
pelo (𝜎 − 1), para a formiga rankeada na terceira posição é multiplicado por (𝜎 − 2), e
assim em diante até que o valor de (𝜎 − 𝑟) seja igual a zero.
A fórmula de atualização do feromônio para o RBAS é dada pela Equação 2.18.

𝜎−1
(𝜎 − 𝑟)△𝜏𝑖𝑗𝑟 + 𝜎 · △, 𝜏𝑖𝑗𝑏𝑠𝑓 (𝑡),
∑︁
𝜏𝑖𝑗 = 𝜏𝑖𝑗 + (2.18)
𝑟=1

2.2.7 Ant Colony System


O ACS, proposto em Dorigo e Di Caro (1999), apresenta um desempenho tão bom
quanto o MMAS, segundo a análise feita em Dorigo e Stützle (2004), e é um algorítmo
considerado “agressivo“, tendo em vista a sua rápida convergência. Ele difere do AS em
três principais características, incluindo na construção de soluções (diferente das outras
variantes, que se assemelham nesse aspecto), a saber: apresenta evaporação local do fe-
romônio, a escolha do nó a ser visitado é pseudo-aleatória e atualização e a evaporação
global do feromônio só é feita para a melhor formiga até então.
A inicialização da matriz de feromônios para o ACS é dada pela Equação 2.19.

1
𝜏= , (2.19)
𝑁𝑛ó𝑠 𝐿𝑛𝑛

Sendo 𝑁𝑛ó𝑠 a quantidade de clientes.


Na fase de construção da solução, o ACS utiliza um método de sorteio pseudo-
aleatório. Caso o valor sorteado 𝑞, que varia de 0 a 1, seja menor que o parâmetro 𝑞0
2.2. Métodos de otimização 37

(usado apenas no ACS), a escolha do nó torna-se determinística, escolhendo-se o nó que


apresenta maior probabilidade de ser visitado. Caso o valor sorteado 𝑞 seja maior que o
parâmetro 𝑞0, o sorteio é feito da mesma maneira que mostrado para o AS. A equação da
construção da solução pelo ACS está escrita na Equação 2.20.


𝛼 𝛽
𝑙𝜖𝑁𝑖𝑘 ([𝜏𝑖𝑙 ] [𝜂𝑖𝑙 ] ), se 𝑞 < 𝑞0,
⎨𝑎𝑟𝑔𝑚𝑎𝑥

𝑝𝑘𝑖𝑗 (𝑡) = ⎪ (2.20)
⎩𝐸𝑞𝑢𝑎çã𝑜 2.7, caso contrário,

Sendo que o índice 𝑁𝑖𝑘 é o conjunto de possíveis clientes a serem visitados pela
formiga 𝑘 a partir do nó 𝑖. Caso 𝑙 pertença a este conjunto, sua probabilidade é não nula.
Outra modificação do ACS para o AS e suas variantes, é a evaporação do feromônio
enquanto a solução é construída. Tal característica é chamada de evaporação local da
matriz de feromônios, ela é calculada pela fórmula da Equação 2.21.

𝜏𝑖𝑗 = (1 − 𝜉)𝜏𝑖𝑗 + 𝜉 · 𝜏0 , (2.21)

Sendo a constante de evaporação local e 𝜏0 o valor de inicialização da matriz de


feromônios.
Com a aplicação da atualização local da matriz de feromônios, em uma mesma
iteração, a formiga que suscede outra formiga tem a construção de sua rota influenciada
por sua predecessora, diferentemente do que ocorria no AS, em que as formigas de uma
mesma iteração não interagiam uma com a outra. Desta maneira, os caminhos gerados
pelas formigas de uma mesma iteração são mais diversificados, pois a formiga que suscesde
outra numa mesmo iteração tem menor probabilidade de visitar os mesmos 𝑎𝑟𝑐𝑜𝑠(𝑖, 𝑗)
visitados por sua predecessora.
Na atualização global do feromônio, O ACS utiliza da melhor formiga até então
para atualizar a matriz de feromônios. Há uma pequena diferença para o AS e suas varian-
tes quanto à evaporação do feromônio. No ACS, a evaporação dá-se apenas nos 𝑎𝑟𝑐𝑜𝑠(𝑖, 𝑗)
percorridos pela melhor formiga, não ocorrendo para toda a matriz de feromônios. A equa-
ção da atualização global de feromônio para o ACS é dada pela Equação 2.22.

𝜏𝑖𝑗 = (1 − 𝜌)𝜏𝑖𝑗 + 𝜌 · △𝜏𝑖𝑗𝑏𝑠𝑓 (𝑡), ▽(𝑖, 𝑗)𝜖𝑇 𝑏𝑠𝑓 , (2.22)


39

3 Método

3.1 Motor de Cálculo


Como explicado na subseção 2.1.1, para se resolver o problema clássico do rote-
amento de veículos com janelas de tempo, necessita-se de informações de entrada como:
matriz de distâncias (relaciona a distância do depósito com todos os clientes, e os pares
de clientes), janelas de tempo, tempo de serviço, demanda de cada cliente, tamanho da
frota e capacidade de cada veículo. A função objetivo clássica, minimiza o número de veí-
culos usados e a soma da distância percorrida por cada veículo, as saídas (resolução) são
as rotas otimizadas que atendem as restrições. O motor de cálculo proposto, por buscar
aproximar-se de operações reais de roteamento, adiciona novas informações necessárias
para resolução deste problema que são os valores de custos que serão detalhados na se-
ção 3.2. Busca-se minimizar os custos referentes a frota de veículos, a distância percorrida,
horas extras e a ociosidade dos motoristas.
O algorítmo implementado no motor de cálculo usa da solução gerada pelo método
do vizinho mais próximo para inicializar a matriz de feromônios. Por se tratar do MMAS,
apresenta limites de 𝜏𝑚𝑎𝑥 e 𝜏𝑚𝑖𝑛 calculadas pela Equação 2.13 e Equação 2.14, reinicializa a
matriz de feromônios após um certo número de iterações sem melhorias na função objetivo
e usa a melhor formiga até então para atualizar a matriz de feromônios.
O fluxograma do algorítmo implementado que resolve o PRVJT é apresentado na
Figura 5.

Figura 5: Fluxograma do algorítmo MMAS implementado

Na etapa de inicialização do algorítmo ocorrem os seguintes passos:

∙ Entra-se com as informações necessárias para resolução do PRVJT;


40 Capítulo 3. Método

∙ Configura-se os parâmetros do MMAS;

∙ Calcula-se a função objetivo pelo método do vizinho mais próximo;

∙ inicializa-se as matrizes 𝜏 e 𝜂 com a função objetivo calculada pelo método do


vizinho mais próximo.

Então, a partir da iteração 𝑖, a formiga 𝑗 parte do depósito (cada vez que esta
mesma formiga 𝑗 parte do depósito, representa um veículo diferente usado na otimização).
Considera-se o valor de 𝑖 e 𝑗 iniciais iguais a 0 e seus valores finais são 𝑁 _𝑖𝑡𝑒𝑟 e 𝑁 _𝐹 𝑜𝑟𝑚,
respectivamente o número de iterações e o número de formigas.
Então, inicia-se a etapa de construção da solução, avalia-se sempre se todos os
clientes já foram visitados, caso não tenham sido, calcula-se a probabilidade de visitar
os clientes que ainda não foram visitados. Sorteia-se um deles pelo método da roleta, se
a inserção do cliente sorteado na rota atende as restrições de capacidade do veículo que
está sendo usado, duração máxima de viagem e urgência, então, este cliente é visitado e
o processo se reinicia.
A inserção do cliente sorteado na rota pode não atender as restrições mencionadas,
caso não atenda as restrições de capacidade ou duração máxima de viagem, o veículo é
obrigado a retornar ao depósito, pois ou precisa carregar/descarregar ou já terminou o
turno de trabalho do motorista, concluindo-se uma rota. Caso o cliente sorteado não
atenda as restrições de urgência, ignora-se este cliente, e busca-se atender outros clientes
com suas janelas de tempo ainda abertas, caso todos já estejam com suas janelas de tempo
fechadas, retorna-se ao depósito e conclui-se uma rota.
Sempre que se conclui uma rota e ainda há clientes a serem visitados, inicia-se
uma nova rota com um outro veículo da frota disponível. É importante notar que todas
as rotas percorridas por cada veículo usado foram geradas pela mesma formiga 𝑗.
Termina-se a etapa de construção da solução quando todos os clientes já foram
visitados, então, calcula-se o custo da solução gerada pela formiga 𝑗, o custo dela é com-
parado com o das formigas anteriores e só se armazena a rota da formiga de menor custo
global (melhor formiga até então). Avalia-se se 𝑗 é igual a 𝑁 _𝐹 𝑜𝑟𝑚, caso 𝑗 seja menor,
incrementa-se 𝑗 e se repete o processo de construção da solução para uma nova formiga.
Caso 𝑗 seja igual a 𝑁 _𝐹 𝑜𝑟𝑚, dá-se início a etapa de atualização do feromônio
com o custo da melhor formiga até então e em seguida, dá-se a etapa de evaporação do
feromônio. Então, incrementa-se 𝑖 e avalia-se se a iteração 𝑖 é igual a 𝑁 _𝑖𝑡𝑒𝑟, caso 𝑖 seja
menor, uma nova iteração irá ocorrer e todo processo de construção da solução para o
número de formigas será reiniciado, usando uma matriz de feromônios atualizada. Caso
𝑖 seja igual a 𝑁 _𝑖𝑡𝑒𝑟, termina-se o algorítmo e retornam-se as rotas ótimas, que foram
encontradas pela melhor formiga até então.
3.2. Elaboração da Função Custo 41

Um procedimento implementado ao algorítmo a fim de encontrar melhores solu-


ções, foi a reinicialização da 𝜏 para 𝜏𝑚𝑎𝑥 caso o custo da solução da melhor formiga se
mantenha igual por um número elevado de iterações, este procedimento ocorre na etapa
de atualização do feromônio.

3.2 Elaboração da Função Custo


Para que o motor de cálculo construa soluções mais aplicáveis a operações reais
de roteirização, procura-se determinar uma função custo mais próxima dos valores de
operação no transporte de veículos. A função custo elaborada é dada na Equação 3.1.

min
𝑠
𝐶𝑢𝑠𝑡𝑜(𝑆) = 𝑐vei · 𝑉 𝑒𝑖(𝑆) + 𝑐rot · 𝐷perc (𝑆) + 𝑐ext · 𝐻ext (𝑆) + 𝑐oci · 𝑇e (𝑆), (3.1)

Sendo que 𝑆 representa a solução criada por cada formiga, que são as rotas per-
corridas pela mesma e portanto, é a variável de decisão da função custo elaborada.
O parâmetro 𝑐vei estão os custos por veículos usados para determinada peridioci-
dade (no algorítmo, assume-se que as rotas serão geradas diariamente), são eles: IPVA (e
demais impostos), seguro obrigatório e facultativo, salário do motorista e a depreciação do
veículo. O parâmetro 𝑐rot são os custos de transporte, se destacam os seguintes: combustí-
vel, manutenção, jogo de pneus, troca de óleo e lavagem do veículo. Todas estas quantias
estão relacionadas com a distância total percorrida por cada veículo. No parâmetro 𝑐ext
considera-se o valor da hora extra do motorista, com este custo penaliza-se rotas construí-
das que excedam o limite máximo de horas permitido para que o motorista dirija (uma
consequência desta penalização, é um maior balanceamento das rotas). O parâmetro 𝑐oci
representa o custo da hora ociosa do trabalhador, com este custo penaliza-se a quantidade
de tempo que o motorista fica ocioso por chegar mais cedo em um cliente que ainda não
está com sua janela de tempo aberta.
A variável 𝑉 𝑒𝑖 refere-se a quantidade de veículos usados. A variável 𝐷perc refere-
se a soma do deslocamento em quilômetros para cada uma das rotas. A variável 𝐻extra
refere-se a soma de horas extras de cada motorista e a variável 𝑇𝑒 refere-se a soma do
tempo ocioso em horas de cada motorista.
43

4 Resultados

Uma instância do PRVJT refere-se a um cenário para esse problema de otimização,


este cenário é definido através dos dados de entrada e saída. Uma instância do PRVJT
famosa na literatura, é o benchmark de Salomão, que fornece dados como:

∙ Frota homogênea (mesma capacidade para cada veículo);

∙ Coordenadas 𝑥 e 𝑦 no espaço euclidiano, demanda, informações sobre a janela de


tempo e o tempo de serviço de cada cliente.

Cada instância deste benchmark pode ser resolvida para 25, 50 ou 100 clientes,
a distância euclidiana de um cliente à outro representa, neste benchmark, o tempo de
deslocamento (viagem). Os objetivos de otimização são o número de veículos usados e a
distância percorrida, sendo que o primeiro objetivo tem prioridade sob o segundo.
As instâncias do benchmark de Salomão que iniciam com a letra 𝑅 tem os clientes
distribuídos aleatoriamente, já as que iniciam com a letra 𝐶 tem clientes agrupados.
Instâncias que apresentam o número 1 após a letra, possuem janelas de tempo mais
curtas, o que força o uso de muitos veículos no roteamento, já instâncias que apresentam
o número 2 após a letra, possuem janelas de tempo mais longas, o que permite menor uso
de veículos.
Os parâmetros do algortimo para solucionar as instâncias tanto do benchmark de
Salomão e da empresa de coleta de resíduos da Bahia podem ser vistos na Tabela 2.

Tabela 2: Parâmetros do MMAS


Parâmetros Valor
𝛼 (peso da matriz de feromônios) 1
𝛽 (peso da matriz de visibilidade) 2e4
Q (constante de atualização do feromônio) 1
𝜌 (constante de evaporação do feromônio) 0.5
número de iterações 250
número de formigas 25
Reinicialização do tau Após 20 iterações sem melhorias

4.1 Estudo de caso 1


O intuito desse primeiro estudo de caso é validar o uso do algorítmo para outras
aplicações, por isso, a função objetivo foi modificada (minimiza-se o número de veículos
44 Capítulo 4. Resultados

e a distância percorrida) para que se pudesse realizar essa comparação com as instâncias
𝑅101.25, 𝑅201.25 e 𝐶101.25, em que são considerados 25 clientes.
Na Tabela 3 compara-se o custo das solução geradas pelo algorítmo implementado
com as do MACS-VRPTW do trabalho de Santos e Leal (2007). É importante notar que o
MACS-VRPTW utiliza duas colônias do ACS, cada uma minizando uma função objetivo
única, uma minimiza o número de veículos usados e outra minimiza a distância percorrida,
compartilhando entre si as melhores soluções encontradas. O algorítmo foi simulado 5
vezes e foi considerada a solução que mais se repetiu. Na coluna chamada desvio, valores
negativos significam que o algorítmo implementado encontrou uma distância menor que o
MACS-VRPTW e valores positivos significam que o algorítmo implementado encontrou
uma distância maior que o MACS-VRPTW.

Tabela 3: Comparação entre MACS-VRPTW e algorítmo MMAS implementado

MACS-VRPTW algorítmo MMAS implementado


Número de Distância Número de Distância
Instância Desvio(%)
Veículos Encontrada Veículos Encontrada
R101.25 8 616.38 8 606.64 (𝛽 = 4) -1,58
R201.25 2 550.88 2 551.54 (𝛽 = 4) +0,12
C101.25 3 191.42 3 191.40 (𝛽 = 2) -0,01

As oscilações representadas na coluna desvio ficaram conforme o esperado, pois


sabe-se que o MMAS e o ACS (que é a variante usada no MACS-VRPTW) apresentam
os melhores desempenhos entre os algorítmos de colônia de formigas. Esta oscilação pode
ser atribuída a natureza de cada um dos algorítmos, enquanto que o MACS-VRPTW
leva vantagem por atualizar o feromônio localmente e utiliza de duas colônias de formigas
para atender cada um dos objetivos, o MMAS conta em seu favor as restrições dadas nas
matrizes de feromônios e apresenta uma reinicialização na matriz de feromônios caso o
valor da função objetivo não diminua após uma determinada quantidade de iterações.
Considera-se que o algorítmo implementado foi validado por apresentar soluções
para os benchmarks considerados próximas em distância percorrida das soluções de um
algorítmo já estabelecido na literatura na resolução do PRVJT e usado em softwares
comerciais.

4.2 Estudo de Caso 2


No segundo estudo de caso, levantou-se informações com uma empresa de coleta de
resíduos do estado da Bahia, acerca de quais custos eram mais relavantes para a empresa e
assim a função custo do motor de cálculo foi adaptada para atender a necessidade daquela
empresa. As informações fornecidas pela empresa através do questionário foram:
4.2. Estudo de Caso 2 45

∙ A depreciação dos veículos não é importante para empresa, dada a alta vida útil
dos caminhões;

∙ São dois combustíveis utilizados, o diesel S10 que custa R$ 3,45 o litro e o diesel
S500 que custa R$ 3,30 o litro;

∙ A autonomia dos veículos é de 3 quilômetros por litro;

∙ A manutenção preventiva e a troca de óleo são feitas juntamente. O custo é de


aproximadamente R$ 0,55 por quilômetros rodado;

∙ O salário do motorista varia em torno de R$ 1,400 e R$ 1,900 a depender da classe


de sua carteira;

∙ A empresa não realiza controle do custo da troca de pneus por quilômetros rodados;

∙ São 8 horas de operação diárias;

∙ A empresa paga hora extra corriqueiramente;

∙ Não foi respondido o valor do IPVA e o seguro obrigatório de cada veículo;

∙ Não se tem um controle do preço da Lavagem de cada caminhão, porém fica entre
R$ 130,00 à R$ 180,00.

Então, um conjunto de clientes a serem atendidos, em que alguns apresentam


janela de tempo, foi fornecido pela empresa para que se criassem as rotas otimizadas
pelos custos mais relevantes de operação.
O cenário fornecido pela empresa apresenta 15 clientes a serem visitados e 1 de-
pósito, este cenário pode ser visto na Figura 6.
A operação começa às 7 horas e o motorista dirige, no máximo, 8 horas, a partir
deste horário paga-se hora extra. A maioria dos clientes apresenta janela de tempo ampla,
menos três deles, os clientes 5, 10 e 15 que apresentam, individualmente, janelas de tempo
iniciando às 8 ℎ, 9 ℎ e 10 ℎ até o fim da operação, às 15 horas. Como não foram dadas
informações acerca da demanda de cada cliente e a capacidade dos veículos, assume-se
que a demanda de cada cliente é unitária e a capacidade dos veículos é de 100 unidades de
resíduo. O tempo de serviço também não foi informado, considera-se então que o tempo
de serviço de cada cliente é igual a 10 minutos. As informações da distância e tempo
entre o depósito e os clientes e entre os pares de clientes, foram definidas pela Aplication
Programming Interface (API) do Google maps, que considera a distância por vias, ao
invés da distância euclidiana. Logo, a matriz de distâncias é assimétrica, pois dificilmente
o caminho de ida apresenta a mesma distância que o de volta.
46 Capítulo 4. Resultados

Figura 6: Conjuntos de clientes a serem atendidos

A função objetivo elaborada na Equação 3.1 é aplicada para os custos mais rele-
vantes da empresa, considerando as repostas ao questionário. Nos custos referentes ao uso
dos veículos, considera-se que uma estimativa do IPVA e do seguro obrigatório somados
com o salário médio do motorista, chega-se em um valor de R$ 50, 00 por veículo usado
diariamente. Para os custos referentes a rota, soma-se o custo médio dos dois tipos de
diesel, dividido pela autonomia dos veículos (que é a razão entre distância percorrida e
consumo de litro de combustível), com o custo da troca de oléo, junto ao custo da manu-
tenção preventiva, chega-se em um valor de R$ 1, 675 por quilômetro rodado. Ignoram-se
outros custos por não serem relevantes para a empresa. A hora extra do trabalhador foi
estimada como custando R$ 25, 00 e a hora ociosa custando R$ 20, 00.
O cenário fornecido foi solucionado pelo motor de cálculo proposto, uma primeira
solução foi encontrada para a função objetivo elaborada para a operação da empresa
e uma segunda solução para a função objetivo do benchmark. As rotas geradas para a
primeira solução podem ser vistas na Figura 7, em que a ordem de visita aos clientes
para a Rota 1 é 0-11-1-3-5-4-6-2-7-8-9-10-16 e para a Rota 2 é 0-13-14-15-12-16. As rotas
geradas para a segunda solução podem ser visualizadas na Figura 8, sua Rota 1 é 0-1-
3-5-4-6-2-7-8-9-10-16 e sua Rota 2 é 0-11-13-14-15-12-16. A otimização foi implementada
com 𝛽 = 2.
As soluções são comparadas na Tabela 4, as rotas para as duas soluções apresentam
o mesmo valor de distância percorrida, o número de veículos encontrado é o mesmo e
nenhuma das duas excede a duração máxima de viagem do motorista. Na duração da
viagem e no tempo ocioso a rota gerada pela função custo proposta é, respectivamente,
1,0% e 81,8% menor que a gerada pela função objetivo do benchmark.
A rota gerada pela função custo proposta foi encontrada devido aos custos de
4.2. Estudo de Caso 2 47

Figura 7: Cenário solucionado para a função custo elaborada

Figura 8: Cenário solucionado para a função objetivo do benchmark

Tabela 4: Comparação entre diferentes funções objetivo

Número de Distância Duração da Tempo


função objetivo
Veículos Percorrida (km) Viagem (h) Ocioso (h)
Minimiza quantidade de
2 764,91 14,55 0,22
veículos e distância percorrida
Minimiza os custos
2 764,91 14,4 0,04
operacionais
48 Capítulo 4. Resultados

operação serem levados em consideração, principalmente o custo considerado para a ocio-


sidade do motorista. Em nenhuma das simulações usando a função objetivo do benchmark
foi possível encontrar uma rota com tempo ocioso menor que 0,22 ℎ, o que era esperado,
pois esta função objetivo não leva em consideração o custo da ociosidade do motorista.
Apesar da duração de viagem não estar inclusa na função custo proposta, através da
redução do tempo ocioso foi possível reduzi-la.
Esperava-se que a rota encontrada pela função objetivo do benchmark obtivesse
uma menor distância percorrida, já que esta não considera outras variáveis que compõem
o custo da operação, porém isto não aconteceu.
Nenhuma das rotas excedeu o limite de duração da operação, logo, para esse estudo
de caso não foi relevante considerar o custo de hora extra, pois mesmo quando o custo de
hora extra não foi considerado, não se excedeu o limite.
Pode-se afirmar que a rota encontrada usando a função custo proposta é melhor,
pois o tempo de duração de viagem e a ociosidade do motorista foram diminuídos, en-
quanto que a distância percorrida não variou, reduzindo assim os custos operacionais.
É impotante destacar no estudo de caso 2 que mesmo que a distância percorrida
fosse maior para a função custo proposta, ainda assim esta solução seria a melhor opção
para a empresa, pois é a solução que considera os custos relevantes para operação. Então,
uma rota com uma maior distância percorrida pode ser a de menor custo operacional,
já que outras variáveis compõem a função custo e cada uma é ponderada com o seu
respectivo custo na operação do transporte na empresa.
49

5 Conclusão

No estudo de caso 1, buscou-se validar o algorítmo implementado na resolução


de instâncias do PRVJT, pois este é o motor de cálculo proposto para um software de
roteirização. Este algorítmo implementado é uma variante da otimização por colônia de
formigas, o MMAS, por isto, suas soluções foram comparadas com as soluções de um
algorítmo de colônia de formigas criado para solucionar o PRVJT, o MACS-VRPTW. O
resultado foi que o algorítmo implementado teve um desempenho tão bom quanto o do
MACS-VRPTW, pois o desvio da distância percorrida para cada uma das soluções se
manteve bastante pequeno. Como o MACS-VRPTW já é validado na literatura e usado
comercialmente, pode-se considerar que o algorítmo implementado pode ser usado como
motor de cálculo de um software de roteirização.
No estudo de caso 2, resolve-se um cenário real de roteirização com o motor de
cálculo proposto. Percebe-se com este estudo de caso que os custos no roteamento de
veículos não estão somente associados ao número de veículos utilizados e a distância
percorrida, apesar destes dois custos serem muito significativos, por isto, a função custo
proposta para o motor de cálculo leva em consideração estes custos e também outros
custos relevantes para a operação da empresa de resíduos da Bahia, como o custo de hora
extra e da hora ociosa do trabalhador. Portanto, conclui-se que cabe ao gestor decidir
quais custos devem ser levados em consideração na operação.
Tanto na literatura quanto nos softwares comerciais de roteirização é comum que
a função objetivo para resolução do PRVJT seja dada em dimensão de tempo, distância
ou mesmo uma mistura de dimensões, o que pode gerar rotas que não sejam aplicáveis na
prática. Para adequar as rotas encontradas pelos algorítmos de otimização às aplicações
reais, o caminho deste trabalho foi detalhar os custos de operação de transporte mais
relevantes para então pesar estes custos em uma função custo de maneira que as rotas
encontradas pelo motor de cálculo proposto estejam mais próximas das desejadas pela
operação e dadas na dimensão de reais.

5.1 Trabalhos Futuros


Para trabalhos futuros, pode ser dado maior enfoque na aplicação das heurísticas
de melhoramento nas soluções geradas pelo motor de cálculo, em busca de melhores
soluções.
51

Referências

ÁLVAREZ, A.; MUNARI, P. Abordagens metaheurísticas para o problema de roteamento


de veículos com janelas de tempo e múltiplos entregadores. Gestão & Produção, v. 23,
n. 2, p. 279–293, 2016. ISSN 0104-530X. Disponível em: <http://www.scielo.br/scielo-
.php?script=sci\ arttext\pid=S0104-530X2016000200279\lng=p>. Citado na página
22.

BODIN, L. D. Twenty Years of Routing and Scheduling. Operations Research, v. 38,


n. 4, p. 571–579, 1990. ISSN 0030-364X. Citado na página 22.

CLARK, P. J.; EVANS, F. C. Distance to Nearest Neighbor as a Measure of Spatial


Relationships in Populations. Ecology, v. 35, n. 4, p. 445–453, 1954. ISSN 00129658.
Disponível em: <http://doi.wiley.com/10.2307/1931034>. Citado na página 30.

CLARKE, G.; WRIGHT, J. W. Scheduling of Vehicles from a Central Depot to a Number


of Delivery Points. Operations Research, v. 12, n. 4, p. 568–581, 1964. ISSN 0030-364X.
Disponível em: <http://pubsonline.informs.org/doi/abs/10.1287/opre.12.4.568>.
Citado na página 30.

CUNHA, C. Aspectos práticos da aplicação de modelos de roteirização de veículos a


problemas reais. 2000. 51–74 p. Citado 2 vezes nas páginas 21 e 22.

DESAULNIERS, G.; MADSEN, O. B. G.; ROPKE, S. The vehicle routing problem with
time windows. Vehicle routing: Problems, Methods, And Applications, p. 119–159, 2014.
Citado na página 28.

DORIGO, M.; Di Caro, G. The Ant Colony Optimization Meta-Heuristic. New


Ideas in Optimization, v. 2, p. 11–32, 1999. ISSN 03050548. Disponível em:
<http://portal.acm.org/citation.cfm?id=329055.329062>. Citado na página 36.

DORIGO, M.; GAMBARDELLA, L. M. Ant colony system: a cooperative learning


approach to the traveling salesman problem. IEEE Transactions on Evolutionary
Computation, v. 1, n. 1, p. 53–66, 1997. ISSN 1089778X. Disponível em: <http:/-
/ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=585892>. Citado na página
30.

DORIGO, M.; MANIEZZO, V.; COLORNI, A. The Ant System : Optimization by a


colony of cooperating agents. v. 26, n. 1, p. 1–13, 1996. Citado na página 31.

DORIGO, M.; STÜTZLE, T. Ant Colony Optimization. [s.n.], 2004. 1–24 p. ISSN
0269-8889. ISBN 0262042193. Disponível em: <http://link.springer.com/content/pdf-
/10.1007/978-0-387-30164-8\ 22.> Citado 3 vezes nas páginas 33, 35 e 36.

GAMBARDELLA, L.; TAILLARD, É.; AGAZZI, G. MACS-VRPTW: A Multiple


Ant Colony System for Vehicle Routing Problems with Time Windows. New Ideas in
Optimization, n. IDSIA-06-99, p. 1–17, 1999. Disponível em: <http://citeseerx.ist.psu-
.edu/viewdoc/summary?doi=10.1.1.45.5381>. Citado na página 22.
52 Referências

KRAMER, R. H. F. R.; SUBRAMANIAN, A.; PENNA, P. H. V. Problema de roteamento


de veículos assimétrico com frota heterogênea limitada: um estudo de caso em uma
indústria de bebidas. Gestão & Produção, v. 23, n. 1, p. 165–176, 2016. ISSN 0104-530X.
Disponível em: <http://www.scielo.br/scielo.php?script=sci\ arttext\pid=S0104-
530X2016000100165\lng=p>. Citado na página 29.

MUNGWATTANA, A. et al. a Solution for the Bi-Objective Vehicle Routing Problem


With Time Windows Using Local Search. v. 6, n. 2, p. 149–158, 2016. Citado na página
22.

RIZZOLI, A. E. et al. Ant colony optimization for real-world vehicle routing problems.
Swarm Intelligence, v. 1, n. 2, p. 135–151, 2007. ISSN 1935-3812. Disponível em:
<http://link.springer.com/10.1007/s11721-007-0005-x>. Citado na página 22.

SANTOS, R. L.; LEAL, J. E. Solução de um problema de roteirização com janelas de


tempo através de um algoritmo de múltiplas colônias de formigas. 2007. Citado 2 vezes
nas páginas 22 e 44.

SOLOMON, M. M. Algorithms for and Scheduling Problems the Vehicle Routing With
Time Window Constraints. Operations Research, v. 35, n. 2, p. 254–265, 1987. ISSN
0030-364X. Disponível em: <http://www.jstor.org/stable/170697>. Citado na página
22.

STÜTZLE, T.; HOOS, H. H. MAX –MIN Ant System. Future Generation Computer
Systems, v. 16, p. 889–914, 2000. ISSN 0167739X. Citado na página 33.

Você também pode gostar