O sistema de roteirização Geo-Rota é o resultado do grupo de pesquisa em Logística do Laboratório de Engenharia de Produção da Universidade Estadual do Norte Fluminense e foi desenvolvido com o objetivo de ajudar as empresas a otimizarem suas rotas de entrega.
Acesso ao Sistema:
Login:clrp Senha:123456
Arquitetura do Sistema
O sistema de apoio a decisão desenvolvido, chamado de Geo-Rota web, utiliza uma arquitetura distribuída conforme demonstrado na figura abaixo. A carga de processamento do mesmo foi dividida em três servidores (roteirização, banco de dados e dbServer). O servidor de roteirização é responsável pela solução do problema de roteirização de veículos com multi-compartimentos. O webclient é a interface onde o usuário interage com o sistema e sua implementação será discutida na próxima seção. O servidor de banco de dados é responsável pelo armazenamento da base de dados utilizada pelo sistema. Todos os dados são armazenados no MongoDb, que é um gerenciador de banco de dados orientado a objetos, onde cada informação é armazenada na forma de objetos. Em um banco orientado a objetos as tabelas são denominadas de coleções e sua estrutura de armazenamento pode ser modificada a qualquer instante sem perdas de desempenho e de compatibilidade.
O servidor dbserver implementa o serviço com arquitetura REST para acesso ao servidor de banco de dados (MongoDb). A arquitetura REST (Representational State Transfer) foi definida no trabalho de [Fielding, 2000]. Basicamente a arquitetura utliza o protocolo HTTP (get, put, delete e post) para implementar um webservice para troca de dados.
Foi utilizado a plataforma Node para implementar o servidor. O Node pode ser definido com uma plataforma construída em javascript para montar aplicações de rede (servidor e cliente) rápidas e escaláveis. O modelo de I/O utilizado é direcionado a evento não bloqueante que o torna leve e eficiente, tornando ideal para aplicações em tempo real com troca intensa de dados através de dispositivos distribuídos. A troca de dados é feita utilizando JSON (JavaScript Object Notation) que é um formato de padrão aberto de troca de dados entre sistemas e é amplamente utilizado em aplicações web.
O servidor de roteirização é responsável por resolver o problema de roteirização de veículos com multi-compartimentos com frota heterogênea e limitada. Conforme [Póvoa et al., 2005] no problema de roteirização de veículos com multi-compartimentos os veículos tem seu conjunto de divisórias e as demandas dos clientes devem ser alocadas no seu compartimento específico. Para exemplificar, considere uma empresa que vende produtos congelados e secos e que possui uma frota de veículos dividida de acordo com a temperatura do produto. Ou uma transportadora de combustíveis que possui uma frota de veículos com divisórias para cada tipo de combustível.
A solução do problema consiste em encontrar as rotas dos veículos que minimizem o custo total, que consiste numa combinação de custo variável com a distância percorrida e custo fixo de cada veículo. O problema foi resolvido através de um algoritmo híbrido GRASP com pathrelinking. O algoritmo detalhado, bem como testes de desempenho podem ser consultados em [Póvoa et al., 2005]. O algoritmo foi codificado em object pascal utilizando técnicas de orientação a objetos. As seguintes classes foram implementadas para facilitar o aproveitamento do código em futuras implementações: TClient, TVehicle, TDemand, TCompartment, TRoute, TRouting, TGrasp, TRoutes, TVehicles, TClients, TLocalSearch e TPathRelinking. O servidor de roteirização é acessado através do webservice implementado em cgi (common gateway interface). Os pontos de entrega, os veículos, bem como os parâmetros da heurística são passados para o servidor através de objetos JSON. O serviço retorna as rotas geradas pela heurística que são visualizadas pela aplicação final (webclient).
