Escolar Documentos
Profissional Documentos
Cultura Documentos
Brasil
2018, Setembro
Felipe Ergueta Fernandes Ribeiro
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.
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.
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
∙ 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.
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
2 Fundamentação Teórica
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
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).
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.
Figura 3: Exemplo de grafo com dois depósitos (nó 0 e nó 5, que são idênticos) e quatro clientes
⎧
⎨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.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.11)
𝜌𝐿𝑛𝑛
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.15)
𝐿𝑛𝑛
𝑁
△𝜏𝑖𝑗𝑘 (𝑡) + 𝑒 · △𝜏𝑖𝑗𝑏𝑠𝑓 (𝑡),
∑︁
𝜏𝑖𝑗 = 𝜏𝑖𝑗 + (2.16)
𝑘=1
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)
𝜌𝐿𝑛𝑛
𝜎−1
(𝜎 − 𝑟)△𝜏𝑖𝑗𝑟 + 𝜎 · △, 𝜏𝑖𝑗𝑏𝑠𝑓 (𝑡),
∑︁
𝜏𝑖𝑗 = 𝜏𝑖𝑗 + (2.18)
𝑟=1
1
𝜏= , (2.19)
𝑁𝑛ó𝑠 𝐿𝑛𝑛
⎧
𝛼 𝛽
𝑙𝜖𝑁𝑖𝑘 ([𝜏𝑖𝑙 ] [𝜂𝑖𝑙 ] ), 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.
3 Método
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
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
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.
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.
∙ 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 empresa não realiza controle do custo da troca de pneus por quilômetros rodados;
∙ 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.
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
5 Conclusão
Referências
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.; 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.
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.
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.