USO DE INTELIGÊNCIA COMPUTACIONAL PARA GERAÇÃO DE …
Transcript of USO DE INTELIGÊNCIA COMPUTACIONAL PARA GERAÇÃO DE …
USO DE INTELIGÊNCIA
COMPUTACIONAL PARA GERAÇÃO DE
ROTEIROS DE VIAGENS PARA
TURISTAS: ESTUDO DE CASO NA
CIDADE DO RIO DE JANEIRO
Rodrigo Tagliari
Marcos Costa Roboredo
Durante o planejamento de suas viagens, os turistas necessitam
empregar uma quantidade excessiva de tempo, de forma a achar as
melhores atividades a se fazer, buscar informações e verificar a melhor
forma logisticamente viável de realizar as mesmas. Visando mitigar o
problema prévio, a Local Cave, que é uma Startup do ramo do turismo,
visa tornar o processo de viagem mais rápido e eficiente para o
viajante através do uso de um aplicativo na Web e ferramentas
computacionais. Uma destas ferramentas é um gerador de roteiros de
viagem otimizados e customizados de acordo com o perfil do turista.
Os roteiros de viagem gerados são extremamente detalhados e levam
em consideração diversas especificidades, como por exemplo
necessidade de descanso ou troca de trajes entre atividades. O presente
artigo visa neste contexto descrever com detalhes o algoritmo utilizado
pelo gerador na cidade do Rio de Janeiro-RJ, que se baseia em uma
heurística com construção aleatória e busca local do tipo 2-opt.
Palavras-chave: Roteirização, Métodos Heurísticos, Turistas
XXXVIII ENCONTRO NACIONAL DE ENGENHARIA DE PRODUCAO “A Engenharia de Produção e suas contribuições para o desenvolvimento do Brasil”
Maceió, Alagoas, Brasil, 16 a 19 de outubro de 2018.
XXXVIII ENCONTRO NACIONAL DE ENGENHARIA DE PRODUCAO “A Engenharia de Produção e suas contribuições para o desenvolvimento do Brasil”
Maceió, Alagoas, Brasil, 16 a 19 de outubro de 2018. .
2
1. Introdução
O setor de turismo vem mudando bastante nos últimos anos. A evolução do turismo
internacional junto com a evolução da tecnologia tem mostrado uma tendência de os turistas
viajarem para lugares cada vez mais longe. Cada vez mais, as pessoas irão viajar com uma
maior frequência, na qual tornará o lugar de origem uma referência cada vez menos fixa
(GIAMMATTEY, 2014).
Atualmente, no ramo de turismo, é difícil encontrar e praticamente não existem empresas ou
plataformas online que consigam realizar o planejamento completo de uma viagem, já que as
empresas que se propõem a tal não consideram todos os aspectos de forma satisfatória para os
viajantes. Seja pelo preço elevado cobrado pelas agências de viagens em seus pacotes ou na
falta de personalização das plataformas online, o viajante se vê em um cenário no qual se
gasta muito tempo para planejar as suas viagens e não consegue maximizar sua experiência no
local (NASCIMENTO, 2017). De acordo com Nunes (2012), para o público alvo dos
chamados “mochileiros”, que são viajantes que costumam planejar sua viagem por conta
própria e possuem um orçamento mais limitado, tal problema pode ser validado segundo
pesquisa com estes viajantes, cujos principais meios de busca foram amigos e parentes, bem
como sites turísticos.
Diante disso, a “Local Cave” (https://localcave.com/), startup no setor de viagens, apresenta
uma proposta para mitigar este problema. Trata-se de realizar, dentre outras atividades, a
elaboração de roteiros customizados e adaptados às preferências dos viajantes, especialmente
os mochileiros, através do uso de dados e técnicas de otimização.
O foco deste trabalho é descrever com detalhes o algoritmo de roteamento utilizado
atualmente pela Local Cave, que visa resolver o problema de estabelecer, para um turista da
cidade do Rio de Janeiro-RJ, a ordem de visitação de pontos turísticos em cada dia da viagem.
Tal planejamento considerando diversas restrições, como por exemplo orçamento, tempo
disponível no local, horários de visitação da atividade, necessidade de descanso, entre outras.
O problema é visto como um Problema de Roteamento de Veículos com Janelas de Tempo
(PRVJT) (TOTH; VIGO, 2002), onde as rotas representam o roteiro de um dia de viagem do
XXXVIII ENCONTRO NACIONAL DE ENGENHARIA DE PRODUCAO “A Engenharia de Produção e suas contribuições para o desenvolvimento do Brasil”
Maceió, Alagoas, Brasil, 16 a 19 de outubro de 2018. .
3
turista e as janelas de tempo estão associadas aos horários de início e término das atividades.
Para a resolução do problema, é proposta uma heurística com construção de soluções
aleatórias e busca local baseada na clássica troca do tipo 2-opt.
2. Revisão de Literatura
2.1 Problemas de Roteamento de Veículos
O Problema de Roteamento de Veículos (PRV) foi primeiro proposto por Ramser e Dantzig
(1959), ao estudar um problema de distribuição de gasolina para diversos postos de venda. De
acordo com Arenales et al. (2015), o PRV é um problema logístico no qual envolve diversas
rotas de entregas partindo de um depósito ou base, visando alcançar os clientes com um custo
mínimo e retornando ao depósito. A função de custo no PRV em geral está atrelada a
distância total percorrida pelos veículos. Em uma solução viável para este problema, as
seguintes restrições devem ser respeitadas: cada cliente deve ser visitado exatamente uma vez,
as capacidades dos caminhões não podem ser excedidas e o tempo gasto por um veículo em
uma rota possui um limitante superior que deve ser respeitado. Uma variante do PRV exige
que o cliente comece a ser atendido dentro de um intervalo de tempo chamado de janela de
tempo. Tal problema é conhecido como Problema de Roteamento de veículos com Janelas de
Tempo (PRVJT).
O problema abordado neste trabalho pode ser visto como um PRVJT fazendo as seguintes
associações:
Os clientes são representados pelas atividades a serem realizadas pelo turista.
O depósito é representado pelo hotel.
As rotas representam um dia de viagem do turista.
As janelas de tempo estão associadas aos horários de início e término das atividades.
2.2 Heurísticas
Nos métodos heurísticos, é deixada de lado a necessidade de se encontrar uma solução ótima
em prol de achar soluções próximas da ótima em um tempo significativamente menor. Muitas
heurísticas encontram soluções para o problema geralmente baseadas em uma fase de
construção e uma fase de refinamento.
XXXVIII ENCONTRO NACIONAL DE ENGENHARIA DE PRODUCAO “A Engenharia de Produção e suas contribuições para o desenvolvimento do Brasil”
Maceió, Alagoas, Brasil, 16 a 19 de outubro de 2018. .
4
Na fase de construção, como o próprio nome sugere, é a realizada a construção de uma
solução para o problema. Tal construção é feita em geral através de um método guloso ou de
um método aleatório. No método guloso, as soluções começam a partir do zero e
componentes vão sendo adicionados, um de cada vez de acordo com algum critério, chamado
de critério guloso. Já no método aleatório, a construção da solução é feita com base em algum
componente aleatório.
Na fase de refinamento, são realizadas diversas trocas na solução gerada na fase de
construção. Cada troca gera uma outra solução, que pode ser melhor. O processo de realização
de trocas é comumente chamado de busca local. A melhor solução encontrada nesta etapa é
chamada de solução ótima local. (BLUM; ROLI, 2003).
Algumas heurísticas aplicam as fases de construção e refinamento diversas vezes, sempre
procurando garantir que as soluções construídas não se repitam. O pseudo código abaixo
ilustra as possíveis etapas de uma heurística.
1 Para i de 1 até iter faça:
2 X Solução Construída;
3 Refinamento (X);
4 Fim Para
5 Retorne a melhor solução encontrada;
Para mais detalhes a respeito de heurísticas, ver Souza (2008) e Blum e Roli (2013). A
heurística proposta neste trabalho é baseada no pseudo código prévio, onde a etapa de
Construção é feita de forma aleatória e a etapa de Refinamento é feita baseada em uma busca
local do tipo 2-opt (VIDAL, 2013). Para maiores detalhes sobre heurísticas para problemas
de roteamento, ver Bräysy e Michel (2005) e Laporte et al. (2000).
3. Estudo de Caso
3.1 Descrição da Startup
A Local Cave é uma startup do ramo de turismo fundada recentemente no início do ano de
2017, composta por 3 alunos do curso de Engenharia de Produção da UFF. Possui como
propósito central tornar mais eficiente e inteligente a elaboração de roteiros e do
XXXVIII ENCONTRO NACIONAL DE ENGENHARIA DE PRODUCAO “A Engenharia de Produção e suas contribuições para o desenvolvimento do Brasil”
Maceió, Alagoas, Brasil, 16 a 19 de outubro de 2018. .
5
planejamentos de viagens, buscando empregar as tecnologias mais recentes do mercado, tais
como inteligência artificial e machine learning, além da pesquisa operacional, para alcançar
seu propósito.
Seu produto é baseado em um aplicativo online hospedado em um site. A principal finalidade
deste aplicativo facilitar a vida de viajantes que estão planejando a sua visita em alguma
cidade, mas também a de pessoas locais em busca de lugares a visitar em sua própria cidade,
ao oferecer uma plataforma digital que permita o usuário descobrir e se informar sobre
atividades que estejam alinhadas com suas preferências pessoais em uma ou mais cidades.
3.2 Descrição do processo
Atualmente, o visitante que entra na página principal do site pode optar entre realizar um
questionário para descobrir o seu perfil de viagem, baseado em uma distribuição com 9 tipos
de viajante distintos, ou então optar por fazer o seu roteiro diretamente e personalizar o seu
tipo de viajante manualmente.
Caso o usuário opte pela primeira opção, ele responde perguntas acerca de gostos e suas
opções de viagem, e então é mostrado para o mesmo, ao final do questionário, qual a sua
distribuição, calculada automaticamente por uma pontuação atrelada a cada uma das
respostas. A Figura 1 mostra um exemplo de distribuição.
Figura 1: Exemplo de distribuição para um viajante após realização do questionário
Fonte: Site da Local Cave
XXXVIII ENCONTRO NACIONAL DE ENGENHARIA DE PRODUCAO “A Engenharia de Produção e suas contribuições para o desenvolvimento do Brasil”
Maceió, Alagoas, Brasil, 16 a 19 de outubro de 2018. .
6
Ao entrar em uma das páginas de cidade, tanto o viajante que realizou o questionário quanto
demais usuários podem optar ainda por selecionar algumas preferências para a viagem
específica em questão, como por exemplo se o viajante gostaria de economizar na viagem ou
visitar as principais atrações turísticas. Além disso, o turista deve colocar por quantos dias irá
permanecer na cidade e qual seu ritmo de viagem, como mostrado na Figura 2.
Figura 2: Perguntas complementares respondidas pelo turista.
Fonte: Site da Local Cave
Após o usuário clicar para começar o seu roteiro, este será direcionado para uma página
contendo diversas atividades, apresentadas por ordem de pontuação, para que o usuário possa
escolher atividades de interesse para adicionar ao seu roteiro, como por exemplo na Figura 3.
Figura 3: Atividade sugerida ao turista
XXXVIII ENCONTRO NACIONAL DE ENGENHARIA DE PRODUCAO “A Engenharia de Produção e suas contribuições para o desenvolvimento do Brasil”
Maceió, Alagoas, Brasil, 16 a 19 de outubro de 2018. .
7
Fonte: Site da Local Cave
A distribuição do viajante, extraída do questionário, irá influenciar na pontuação das
atividades disponíveis, assim como as preferências de viagem. Após isso, o usuário poderá
clicar para gerar seu roteiro personalizado.
O foco deste trabalho consiste justamente nesta próxima etapa, que é o processo de geração de
um roteiro de viagem através de um algoritmo, com base nas atividades geradas para o
usuário. A Figura 4 esquematiza a relação entre os dados de entrada, o algoritmo proposto e
os dados de saída.
Figura 4: Entradas e saídas do processo de geração de roteiro
3.3 Recebimento dos Dados de Entrada
XXXVIII ENCONTRO NACIONAL DE ENGENHARIA DE PRODUCAO “A Engenharia de Produção e suas contribuições para o desenvolvimento do Brasil”
Maceió, Alagoas, Brasil, 16 a 19 de outubro de 2018. .
8
No website da Localcave, o usuário possui algumas opções de ajuste de acordo com a
especificidade de sua viagem e suas preferências e necessidades. Estes dados, que são
recebidos pelo servidor, juntamente com outros dados que são extraídos do banco de dados
como entrada do processo, estão listados abaixo:
Quantidade de dias
Ritmo da viagem (7 possibilidades são fornecidas)
Lista de atividades a serem visitadas.
Bairro de hospedagem.
Matriz tempo de deslocamento
Janelas de tempo das atividades
Duração das atividades
Energia gasta por cada atividade
Limitações adicionais (uso de trajes especiais, por exemplo)
3.4 Pré-Processamento
Nesta etapa, primeiramente é feita a transcrição do ritmo de viagem. Este é um atributo
nominal e, portanto, precisa ser transformado em um índice numérico. Baseado neste mesmo
índice numérico, é então calculado também o limite de energia, que reflete o limiar de esforço
físico e mental que o viajante pode aguentar de forma acumulada em um mesmo dia. Este
também é um atributo comparativo, baseado na mesma noção de energia. O seu cálculo é feito
multiplicando o valor numérico do ritmo por 2 e somando 4. Ou seja, como o valor numérico
de ritmo varia entre 1 e 7, o valor mínimo do limite é 6 e o máximo é 18, conforme a Tabela
1.
Tabela 1: Correspondências de ritmo com limite de energia
Ritmo nominal Indice numérico Limite de energia
Bastante Lento 1 6
Lento 2 8
Tranquilo 3 10
Normal 4 12
Um pouco puxado 5 14
Corrido 6 16
Muito corrido 7 18
XXXVIII ENCONTRO NACIONAL DE ENGENHARIA DE PRODUCAO “A Engenharia de Produção e suas contribuições para o desenvolvimento do Brasil”
Maceió, Alagoas, Brasil, 16 a 19 de outubro de 2018. .
9
A partir deste limite de energia, entre as atividades pré-selecionadas para serem incluídas no
roteiro do usuário, são removidas aquelas que, por si só, superam este limite de energia. Isto é,
são atividades que exigiriam um nível de esforço que não está de acordo com o ritmo de
viagem previamente escolhido pelo viajante.
3.5 Algoritmo de Roteamento
3.5.1 Ideia Principal
A noção principal do algoritmo se baseia no princípio de sequenciamento. Isto é, o que será
analisado como cada solução única é uma determinada sequência ordenada contendo todas as
atividades a serem realizadas. O algoritmo varia diversas sequências e calcula para cada uma
delas quantos dias são necessários para que o turista realize as atividades na ordem da
sequência bem como a distância total percorrida.
Seja por exemplo a sequência S = {E,B,D,A,C} com as atividades A,B,C,D e E. O algoritmo
retornaria por exemplo que no dia 1 serão feitas as atividades E e B, no dia 2 a atividade D, e
no dia 3 as atividades A e C, mesmo que o usuário não deseje fazer o roteiro em 3 dias. Os
fatores que levam ao algoritmo a limitar o número de atividades diárias são diversos, como
por exemplo: duração do dia, janelas de tempo das atividades, nível de energia do turista
dentre outros. Tais fatores serão explicados com mais detalhes posteriormente neste trabalho.
Para comparar as sequências, o algoritmo utiliza uma função de custo Custo(S) que é dada
pela soma do tempo total percorrido pelo turista somado a uma penalização que só é
considerada caso o número de dias retornado pelo algoritmo seja maior do que o número de
dias desejado pelo turista.
A ideia central do algoritmo é diversificar as sequências, de forma a achar e guardar as
melhores soluções.
3.5.2 Notação Matemática
Visando um maior entendimento acerca do algoritmo principal, seguem as notações utilizadas
para detalhamento do algoritmo e seus respectivos significados:
: Quantidade de dias selecionados pelo usuário.
n: número de atrações pré selecionadas para inclusão no roteiro
S: Determinada sequência das n atividades.
XXXVIII ENCONTRO NACIONAL DE ENGENHARIA DE PRODUCAO “A Engenharia de Produção e suas contribuições para o desenvolvimento do Brasil”
Maceió, Alagoas, Brasil, 16 a 19 de outubro de 2018. .
10
Custo(S): É o custo (função objetivo) da atual sequência de atividades.
: Sequência encontrada pelo algoritmo com o menor custo.
3.5.3 Detalhes do Algoritmo
O algoritmo principal pode ser explicado melhor através de uso do pseudocódigo descrito no
Algoritmo 1. Na linha 1, tem-se que a sequência começa vazia e o custo ótimo é dado
inicialmente por um valor suficientemente grande. A linha 2 indica que sequências
aleatórias iniciais são geradas. Para cada uma destas sequências, uma busca local é aplicada
(linhas 4 – 13). A busca local é feita com base na função Espelha(S,k,j), onde k e j
representam a posição inicial e a posição final, respectivamente, da subsequência que é
espelhada. Basicamente, é feita uma inversão completa da subsequência.
Ex1: Dado S = {4, 6, 2, 9, 1, 5} , k = 1 e j = 3
Espelha(S,k,j) retorna {2, 6, 4, 9, 1, 5}
Ex2: Dado S = {4, 6, 2, 9, 1, 5}, k = 2 e j = 5
Espelha(S,k,j) retorna { 4, 1, 9, 2, 6, 5}
Após cada espelhamento, é calculado através da função Custo(S) o custo atrelado a nova
sequência a fim de verificar se há uma melhoria da melhor solução até o momento (linhas 8 -
10). A função Custo(S) visa considerar o quesito mais importante do planejador que é
encaixar as atividades de forma a não exceder a quantidade Q de dias do usuário. Além disso,
Custo(S) tem mais dois objetivos: um é a de minimizar os tempos de deslocamento entre as
atividades escolhidas. O outro é maximizar o tempo que o usuário está realizando atividades.
Abaixo, segue o valor retornado por Custo(S):
,
onde:
M: É um número grande suficientemente para desqualificar as soluções que não
estiverem dentro do número de dias estabelecido.
: É o tempo de deslocamento do local i para o local j em minutos
XXXVIII ENCONTRO NACIONAL DE ENGENHARIA DE PRODUCAO “A Engenharia de Produção e suas contribuições para o desenvolvimento do Brasil”
Maceió, Alagoas, Brasil, 16 a 19 de outubro de 2018. .
11
: É uma constante binária. Possui valor 1 se o viajante irá se deslocar de i para j na
sequência S, 0 caso contrário.
D(S): Quantidade mínima de dias calculada pelo algoritmo dada uma sequência de
atividades S.
R(S): Menor tempo diário gasto em minutos com atividades.
O cálculo D(S) para uma dada sequência S verifica qual a quantidade mínima de dias para se
realizar a sequência ordenada S através do seguinte algoritmo. Seja por exemplo, a sequência
S={A,C,E,D,B}. O algoritmo inicialmente verifica se é possível realizar as atividades C após
A em um mesmo dia. Isto pode ser impossibilitado devido ao tempo insuficiente. Nesta etapa,
o algoritmo não leva em consideração somente o tempo de deslocamento, duração e janelas de
tempo, mas também a necessidade de retorno ao Hotel devido a troca de trajes ou necessidade
de descanso. Caso A e C fiquem em um mesmo dia, o algoritmo agora tenta incluir E no
mesmo dia que A e C. Já se A e C ficam em dias diferentes, o algoritmo tenta incluir E junto
com C no segundo dia. O processo para as atividades D e B é similar, terminando assim o
algoritmo, que retorna o número de dias utilizados.
O cálculo de R(S) é simples e feito da seguinte forma. Seja uma Sequência S com D(S) = 2,
se a soma dos minutos em atividades no dia 1 tem 400 min e no dia 2 tem 80 min,
O objetivo do parâmetro R(S) é preparar a solução para a etapa de
viabilização, já que serão retirados menos minutos de atividade (as atividades que compõem
R), ao mesmo tempo que a distância percorrida também continuará sendo critério. O valor 0,4
foi encontrado baseado em testes a fim de descobrir o melhor balanceamento entre estes dois
quesitos.
Algoritmo 1: Funcionamento do algoritmo principal de roteamento
1 S* { Ø }
2 Para i de 0 até 50*Q faça:
3 S Sequência aleatória com todas as n atividades;
4 Para k de 0 até n/2 faça:
5 Para j de k+1 até n faça:
6 S Espelha(S, k, j);
XXXVIII ENCONTRO NACIONAL DE ENGENHARIA DE PRODUCAO “A Engenharia de Produção e suas contribuições para o desenvolvimento do Brasil”
Maceió, Alagoas, Brasil, 16 a 19 de outubro de 2018. .
12
7 custo CalculaCusto(S);
8 Se Custo(S) < Custo(S*):
9 S* S
10 Fim se
11 Fim para
12 Fim para
13 Fim para
3.6 Viabilização da Solução
A fase de viabilização, que só é utilizada caso não exista nenhuma solução que consiga ser
realizada dentro de Q dias, tem como principal objetivo adequar a melhor solução S*
encontrada ao número de dias Q delimitado pelo usuário para a viagem. Basicamente, é
retirado da solução a quantidade de dias excedentes com os menores tempos gastos em
atividades.
3.7 Dados de Saída
Apesar do algoritmo demonstrar o processamento e cálculo de apenas uma solução ótima, na
atualidade são guardadas mais soluções para o problema. O processo, porém, funciona da
mesma forma, apenas são adicionadas variáveis para guardar mais soluções e seus custos
atrelados.
A saída do algoritmo proposto neste trabalho são planos de viagem, visando auxiliar o
viajante dizendo como ele irá fazer as atividades em uma determinada cidade. A Figura 5
ilustra um exemplo de roteiro gerado e impresso na tela pelo algoritmo. Neste caso, o usuário
escolheu 4 dias para seu roteiro, com hospedagem em Copacabana e um ritmo normal de
viagem. Neste caso, alguns detalhes são interessantes de destacar. No primeiro dia, o
algoritmo considerou que, antes de fazer a atividade de ir a um evento cultural, o turista
necessita de descanso por ter feito as duas últimas atividades. No dia 2, o usuário tem a opção
de retornar para a hospedagem para esperar o início da próxima atividade. Já no dia 3, por
exemplo, considerou-se que é preciso voltar da praia para tomar um banho/se trocar na
hospedagem antes de ir no forte de Copacabana.
Figura 5: Exemplo de roteiro do Rio de Janeiro
XXXVIII ENCONTRO NACIONAL DE ENGENHARIA DE PRODUCAO “A Engenharia de Produção e suas contribuições para o desenvolvimento do Brasil”
Maceió, Alagoas, Brasil, 16 a 19 de outubro de 2018. .
13
Fonte: Site da Local Cave
Além das atividades e horários propostos, o usuário ainda consegue visualizar em um mapa da
ferramenta do Google Maps, onde são mostradas as atividades do roteiro em marcadores
vermelhos, que indicam a qual dia a atividade pertence, como mostra a Figura 6.
Figura 6: Demonstração das atrações no mapa por dia do roteiro
XXXVIII ENCONTRO NACIONAL DE ENGENHARIA DE PRODUCAO “A Engenharia de Produção e suas contribuições para o desenvolvimento do Brasil”
Maceió, Alagoas, Brasil, 16 a 19 de outubro de 2018. .
14
Desta forma, os principais dados que compõem um plano de viagem são:
Lista e sequenciamento das atividades:
Deslocamentos:
Horário de início das atividades
Horário de término das atividades
Voltas para a hospedagem (incluindo voltas para descanso ou troca de trajes).
4. Conclusões
Este trabalho apresentou um algoritmo de roteamento, que é utilizado para criação de roteiros
personalizados para turistas que desejam visitar a cidade do Rio de Janeiro. Tal algoritmo não
só considera características básicas como tempos de deslocamento e horários de início e
término de cada atividade, mas também visa incorporar diversos detalhes de modelagem não
triviais, como por exemplo, necessidade de descanso, necessidade de troca de trajes, dentre
outros.
REFERÊNCIAS
ARENALES, Marcos et al. Pesquisa operacional: para cursos de engenharia. Elsevier Brasil, 2ª Ed, 2015.
BRÄYSY, Olli; MICHEL, Gendreau. Vehicle routing problem with time windows, Part II:
Metaheuristics, Transportation Science, v.39, n.1, p. 119-139, 2005.
BLUM, Christian; ROLI, Andrea. Metaheuristics in combinatorial optimization: Overview and conceptual
comparison. ACM computing surveys (CSUR), v. 35, n. 3, p. 268-308, 2003.
DANTZIG, George B.; RAMSER, John H. The truck dispatching problem. Management science, v. 6, n. 1, p.
80-91, 1959.
GIAMMATTEY, RAPHAEL. O tempo e o espaço em uma viagem a turismo. Niterói: UFF, 2014. Trabalho
de Conclusão de curso – Departamento de Turismo, Universidade Federal Fluminense.
XXXVIII ENCONTRO NACIONAL DE ENGENHARIA DE PRODUCAO “A Engenharia de Produção e suas contribuições para o desenvolvimento do Brasil”
Maceió, Alagoas, Brasil, 16 a 19 de outubro de 2018. .
15
Disponível em < http://www.repositorio.uff.br/jspui/bitstream/1/1077/1/345%20-
%20Raphael%20Giammattey.pdf> Acesso em 14 de novembro de 2017.
LAPORTE, Gilbert et al. Classical and modern heuristics for the vehicle routing problem. International
transactions in operational research, v. 7, n. 4-5, p. 285-300, 2000.
NASCIMENTO, Pedro Franklin. Desenvolvimento de um planejador de viagens: validação dos problemas e
soluções para o mvp (produto mínimo viável) de uma startup. Trabalho de Conclusão de Curso,
Departamento de Engenharia de Produção, Escola de Engenharia, Universidade Federal Fluminense.
NUNES, PRISCILLA DE SOUSA NUNES. A percepção dos backpackers sobre a exploração financeira em
suas viagens. Niterói: UFF, 2012. Trabalho de Conclusão de curso – Departamento de Turismo, Universidade
Federal Fluminense. Disponível em < http://www.repositorio.uff.br/jspui/bitstream/1/1722/1/182%20-
%20Priscilla%20Nunes.pdf > Acesso em 14 de novembro de 2017.
SOUZA, Marcone Jamilson Freitas. Inteligência computacional para otimizaçao. Notas de aula, Departamento
de Computaçao, Universidade Federal de Ouro Preto. Disponıvel em http://www. decom. ufop.
br/prof/marcone/InteligenciaComputacional/InteligenciaComputacional. pdf, 2008.
TOTH, Paolo; VIGO, Daniele (Ed.). The vehicle routing problem. Society for Industrial and Applied
Mathematics, 2002.
VIDAL, Thibaut et al. Heuristics for multi-attribute vehicle routing problems: A survey and
synthesis. European Journal of Operational Research, v. 231, n. 1, p. 1-21, 2013.